文章目錄
前言
4.1 購買什么
4.2 硬件設置
4.3 VOXL 攝像機配置
4.4 自動駕駛儀配置
4.4.1 使用 OpticalFlow 進行 EKF3 光源轉換
4.5 視頻
前言
本文介紹了如何將 ModalAI VOXL-CAM 與 ArduPilot 配合使用,以替代 GPS,從而實現 Loiter、PosHold、RTL、Auto 等定位控制模式。
VOXL-CAM 中的 VOXL 電路板可以單獨(individually?)購買,作為配套計算機使用。此外,還可提供更新、功能更強大的 VOXL 2 配套計算機(VOXL 2 companion computer?)。
!Note
ArduPilot 4.3(及更高版本)支持 VOXL 攝像頭。
-
4.1 購買什么
- VOXL CAM + TOF Dev Kit
- Flight Controller Telemetry Cable
- Optionally an 8GB or larger SD Card
4.2 硬件設置
如上圖所示,將 VOXL 攝像機連接到自動駕駛儀。在這些說明中使用的是自動駕駛儀的 Telem2 端口。
將 VOXL 攝像頭安裝在飛行器前部,使 Wifi 天線從攝像頭底部伸出。
4.3 VOXL 攝像機配置
ModalAI’s VOX-CAM setup instructions here
讓相機正常工作的最基本步驟包括:
- 在 Ubuntu 工作站上設置 adb(Setup adb);
- 將攝像機連接到 Ubuntu 工作站,啟動 adb shell 并運行 voxl-configure-vision-px4(run voxl-configure-vision-px4)(注:當要求輸入 IP 地址時,可直接按 <enter> 鍵);
- 運行“systemctl enable voxl-mavlink-server”配置 mavlink 服務器自動啟動;
- 可選擇運行“systemctl status voxl-vision-px4”(run “systemctl status voxl-vision-px4”)來檢查 VOXL 是否正在生成良好的位置估計值。
4.4 自動駕駛儀配置
用地面站(如任務規劃器)連接自動駕駛儀,檢查是否設置了以下參數:
- SERIAL2_PROTOCOL = 2(MAVLink2)。請注意,這假定攝像機已連接到自動駕駛儀的“Telem2”端口;
- SERIAL2_BAUD = 921(921600 波特);
- 可選擇設置 SERIAL2_OPTIONS? = 1024(不轉發 mavlink 至/從),禁止將攝像機的里程測量信息發送至 GCS;
- 可選擇設置 SR2_EXTRA3 = 0,禁止向攝像機發送 SYSTEM_TIME 信息,因為已知 SYSTEM_TIME 會導致攝像機丟失位置估計值(例如,質量降為-1)。請注意,這需要將攝像機連接到自動駕駛儀的第二個 mavlink 端口(例如通常的 Telem2);
- VISO_TYPE = 3 (voxl);
- 將 VISO_POS_X、VISO_POS_Y、VISO_POS_Z 設置為相機在無人機上相對于重心的位置。詳見傳感器位置偏移補償(sensor position offset compensation);
- 可選擇將 VISO_QUAL_MIN 增至 10(或更高),以便僅在質量為 10%(或更高)時才消耗相機的估計值。
如果只使用 VOXL 攝像機進行位置估算和航向(例如不使用 GPS):
- EK3_SRC1_POSXY?= 6 (ExternalNav);
- EK3_SRC1_VELXY?= 6 (ExternalNav);
- EK3_SRC1_POSZ?= 6 (ExternalNav);
- EK3_SRC1_VELZ?= 6 (ExternalNav);
- EK3_SRC1_YAW?= 6 (ExternalNav)。
修改參數后,重啟自動駕駛儀。與地面站連接,(如果使用任務規劃器)在地圖上單擊鼠標右鍵,選擇“在此設置原點”、“在此設置 EKF 原點”,告訴 ArduPilot 飛行器的位置,它就會立即出現在地圖上。
用于室內/室外轉換(例如室內使用 VOXL 攝像頭,室外使用 GPS+指南針):
- EK3_SRC1_POSXY?= 3 (GPS);
- EK3_SRC1_VELXY?= 3 (GPS);
- EK3_SRC1_POSZ?= 1 (Baro);
- EK3_SRC1_VELZ?= 0 (None);
- EK3_SRC1_YAW?= 1 (Compass);
- EK3_SRC2_POSXY?= 6 (ExternalNav);
- EK3_SRC2_VELXY?= 6 (ExternalNav);
- EK3_SRC2_POSZ?= 6 (ExternalNav);
- EK3_SRC2_VELZ?= 6 (ExternalNav);
- EK3_SRC2_YAW?= 6 (ExternalNav);
- RC6_OPTION? = 90(EKF Pos 信號源)允許飛行員使用通道 6 在信號源 1(如 GPS+指南針)和信號源 2(如 VOXL 攝像機)之間切換。開關的低位置為源 1(GPS+指南針),中間位置為源 2(如 VOXL),高位置為源 3(如無),這將導致 EKF 失去位置估計并觸發 EKF 故障安全。為避免飛行員錯誤觸發 EKF 故障保護,您可能需要將 EK3_SRC1_xxx 或 EK2_SRC2_xxx 復制到 EK3_SRC3_xx;
- RC7_OPTION = 80(Viso Align)允許飛行員在飛行前使用通道 7 將攝像機的偏航與 AHRS/EKF 偏航重新對齊。起飛前重新調整偏航是個好主意,否則可能會發生位置失控(又稱“廁所保齡球”)。
修改參數后,重新啟動自動駕駛儀。
有關 GPS/Non-GPS 轉換的更多詳情,請點擊此處(GPS/Non-GPS Transitions can be found here)。
為了在 VOXL 出現故障時使用光流和測距儀作為備份,這里提供了一個用于外部導航/光流轉換的 Lua 小程序(ExternalNav/Optical flow transitions is here)。
4.4.1 使用 OpticalFlow 進行 EKF3 光源轉換
如果需要在外部導航流和光學流之間切換,請參閱外部導航流/光學流轉換(ExternalNAV/Optical Flow Transitions)。