Pixhawk精准着陆之IRLock配置
安裝說明
- 下載Pixymon和pixy對(duì)應(yīng)markone的固件,在這里。
固件必須是firmware_IRLOCKpixy_1.0.1.hex
irlock = markone
然后固件里 irlock = pixy
- 給Pixy刷固件的方法
打開PixyMon,將Pixy連接到電腦,然后長按Pixy上的按鈕,進(jìn)入燒錄過程,松開按鈕并選擇下載好的Markone固件。
刷完固件后,重置Pixy
然后點(diǎn)擊 Raw video才能顯示可見光圖像
Markone上有29個(gè)紅外燈,正常情況下僅需要MarkOne的目標(biāo)信息,因此需要在Pixy的鏡頭上加上紅外濾光片。
- 端口設(shè)置
pixy支持I2C、SPI以及串口三種輸出方式,點(diǎn)擊設(shè)置按鈕在Interface欄可以看到。將鼠標(biāo)懸浮在data out port處時(shí)會(huì)出現(xiàn)相應(yīng)端口的默認(rèn)設(shè)定值,其中SPI為0,I2C為1….
SPI、I2C、串口的協(xié)議輸出的幀完全相同,每個(gè)幀中的對(duì)象按大小排序,最大的對(duì)象先發(fā)送。小端形式發(fā)送,一個(gè)新的換幀有兩個(gè)同步信號(hào)0xaa55表示
Bytes 16-bit words Description ---------------------------------------------------------------- 0, 1 0 sync (0xaa55) 2, 3 1 checksum (sum of all 16-bit words 2-6) 4, 5 2 signature number 6, 7 3 x center of object 8, 9 4 y center of object 10, 11 5 width of object 12, 13 6 height of object- 相機(jī)調(diào)焦
這一步非常重要
為了實(shí)現(xiàn)15米的測(cè)距精度,相機(jī)的棱鏡需要稍微不聚焦,這能夠讓MarkOne在相機(jī)視野中看上去更大,因此可以測(cè)得的距離更遠(yuǎn)。
將MarkOne信標(biāo)放到離相機(jī)10-15米遠(yuǎn)的地方。將IR-Lock對(duì)準(zhǔn)相機(jī),打開Pixymon并點(diǎn)擊Display raw video來查看相機(jī)返回的視頻,可以發(fā)現(xiàn)MarkOne看上去像是一個(gè)白斑。
通過旋轉(zhuǎn)鏡頭對(duì)焦,直到MarkOne看上去非常清晰。在室外進(jìn)行對(duì)焦更加簡(jiǎn)單,因?yàn)槟隳茉谝曨l中看到其他物體。如果你在室內(nèi),就只能看到MarkOne信標(biāo)。完成對(duì)焦后,抄任意一個(gè)方向傳動(dòng)棱鏡約1/4圈,這將使得棱鏡稍微不對(duì)焦。可以發(fā)現(xiàn)markOnede 形狀在返回的視頻中稍微變大了一些。
點(diǎn)擊Action欄下的Default program,你會(huì)發(fā)現(xiàn)能夠在15米內(nèi)準(zhǔn)確的檢測(cè)到IR-Lock.信標(biāo)的位置由一個(gè)白色的方框表示。
視頻鏈接
硬件連接
IR-Lock可以使用3S電池供電,工作電壓范圍為10.2-18V DC。
IR-Lock與Pixhawk的連接示意圖如下
飛控固件&PL設(shè)置
精準(zhǔn)著陸功能包含在AC3.3的修改版本中,而在AC3.4中,精準(zhǔn)著陸已經(jīng)成為默認(rèn)的功能了(需要使用額外的距離測(cè)量模塊,例如SF10/A激光雷達(dá)、聲吶進(jìn)行高度測(cè)量)。
AC3.3* PL固件(APM:Copter V3.3.3-rc2 IR-LOCK Firmware)
- Quad:Arducopter_PL_Quad_3.3.3-rc2.px4
- Source Code: Copter-3.3 Github
- Latest Commit: 593db3….
- 對(duì)開發(fā)者:如果想要自己編譯源碼,則需要修改一下子模塊中的irlock.cpp文件,將其替換為這個(gè)文件。代碼位置: ardupilot\modules\PX4Firmware\src\drivers\irlock
必要參數(shù)設(shè)置
燒好AC3.3* PL固件后,有三個(gè)參數(shù)需要修改。其中由兩個(gè)是使用精準(zhǔn)著陸功能必須修改的,另一個(gè)參數(shù)控制精準(zhǔn)著陸的下降速度
- PRECLND_ENABLED: 將此值置1
- PRECLND_SPEED: 這個(gè)參數(shù)不需要修改。它可以用于限制在精準(zhǔn)著陸期間飛行器的水平速度,但目前在控制代碼中不使用。
- PRECLND_TYPE: 將此值設(shè)置成2。此參數(shù)對(duì)應(yīng)IR-Lock的傳感器類型。
LAND_SPEED: 下降速度(cm/s)。該值可以降低到低至30cm / s。通常,較低的值可提高精準(zhǔn)著陸的精度。
- 飛行模式
AC3.3 * PL固件中包含修改的飛行模式
LAND: 飛機(jī)中心對(duì)準(zhǔn)IR目標(biāo)下降,同時(shí)以參數(shù)PREC_LND SPEED中規(guī)定的下降速率下降。應(yīng)用滾動(dòng)或俯仰將立即禁用自動(dòng)精準(zhǔn)著陸控制。
LOITER: 在保持高度的同時(shí),中心在IR目標(biāo)上。應(yīng)用滾動(dòng)或俯仰將立即禁用自動(dòng)精度著陸控制。
AUTO (LAND): 當(dāng)執(zhí)行腳本任務(wù)時(shí),LAND命令將使對(duì)角線對(duì)準(zhǔn)IR對(duì)象,同時(shí)以參數(shù)PREC_LND SPEED中規(guī)定的下降速率下降。
出現(xiàn)異常,請(qǐng)切換到Stabilize模式
首次飛行時(shí),可以使用STABLIZE模式起飛并手動(dòng)將飛機(jī)飛到MarkOne信標(biāo)上方附近。然后切換到LOITER或者LOITER模式。如果信標(biāo)在傳感器視覺范圍內(nèi),你會(huì)看到飛機(jī)會(huì)朝著信標(biāo)移動(dòng)。
注意: 如果你在LOITER/LAND模式下觸碰了橫滾或俯仰搖桿,精準(zhǔn)著陸控制將失效。
- PL日志解讀
記錄的精準(zhǔn)著陸變量可以在“PL”標(biāo)題下找到。
bX/bY: Angle-to-target measurement in the body-frame reference BEFORE accounting for roll/pitch of copter.在考慮飛機(jī)的橫滾、俯仰之前測(cè)得的機(jī)體坐標(biāo)系中距目標(biāo)的角度。
eX/eY: Angle-to-target measurement in the earth-frame reference AFTER accounting for roll/pitch of copter.考慮飛機(jī)的橫滾、俯仰之后測(cè)得的地球坐標(biāo)系中距目標(biāo)的角度。
pX/pY: Calculated distance of target from copter in earth-frame. Note that the distance calculation depends on the altitude measurement. Also, the altitude variable in this particular instance is range limited, such that a negative value or very small value is not used to calculate the position.算得的在地球坐標(biāo)系中目標(biāo)與飛機(jī)直接的距離。注意距離的測(cè)量取決于高度的測(cè)量。同時(shí),在這個(gè)特殊實(shí)例中的高度變量范圍有限,因此將不使用負(fù)值或非常小的值來計(jì)算位置。
// get body-frame angles to target from backendif (!_backend->get_angle_to_target(_bf_angle_to_target.x, _bf_angle_to_target.y)) {_have_estimate = false;}float x_rad = _bf_angle_to_target.x - _ahrs.roll;float y_rad = -_bf_angle_to_target.y + _ahrs.pitch;// rotate to earth-frame angles_ef_angle_to_target.x = y_rad*_ahrs.cos_yaw() - x_rad*_ahrs.sin_yaw();_ef_angle_to_target.y = y_rad*_ahrs.sin_yaw() + x_rad*_ahrs.cos_yaw();// get current altitude (constrained to no lower than 50cm)float alt = max(alt_above_terrain_cm, 50.0f);// convert earth-frame angles to earth-frame position offset_target_pos_offset.x = alt*tanf(_ef_angle_to_target.x);_target_pos_offset.y = alt*tanf(_ef_angle_to_target.y);_target_pos_offset.z = 0; // not used下圖顯示了5次連續(xù)精準(zhǔn)著陸。綠線表示飛機(jī)的高度。紅線(’bX’)表示傳感器在x方向上相對(duì)于傳感器測(cè)量的與目標(biāo)對(duì)象的角度。
當(dāng)LAND模式啟動(dòng)時(shí),飛機(jī)開始向目標(biāo)移動(dòng),將角度測(cè)量值向零驅(qū)動(dòng)。通常觀察角度測(cè)量中的振蕩。
總結(jié)
以上是生活随笔為你收集整理的Pixhawk精准着陆之IRLock配置的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Epson机械手程序开发(2)软件和电脑
- 下一篇: QSetting的用法