文章目錄
前言
7 構建軟件包
8 開始制圖
9 配置 ArduPilot
10 測試
11 視頻
前言
本頁展示了如何使用 RPLidarA2 激光雷達(RPLidarA2 lidar)設置 ROS 和 Google Cartographer SLAM,為 ArduPilot 提供本地位置估計,使其可以在沒有 GPS 的情況下運行。
這些說明在使用 APSync 更新的 NVidia TX2 上進行了測試,然后按照此處所述安裝(installed as described here)了 ROS 和 MAVROS。
!Note
這些頁面正在制作中。
7 構建軟件包
cd $HOME/catkin_ws
catkin build
source devel/setup.bash
8 開始制圖
將 RPLidarA2 插頭插入配套電腦,然后打開四個端子,并在每個端子類型中打開:
cd catkin_ws
source devel/setup.bash
然后在終端1:
roscore
在終端2:
roslaunch rplidar_ros rplidar.launch
在終端3:
roslaunch cartographer_ros cartographer.launch
在終端4:
按照“連接 ROS”頁面(?Connecting with ROS page)上的說明啟動 mavros,其中包括運行類似下面的命令:
roslaunch mavros apm.launch fcu_url:=udp://:14855@
9 配置 ArduPilot
用地面站(即 Mission Planner)連接飛行控制器,并檢查以下參數是否設置如下:
- AHRS_EKF_TYPE = 3,用于使用 EKF3;
- EK2_ENABLE = 0,禁用 EKF2;
- EK3_ENABLE = 1,啟用 EKF3;
- EK3_SRC1_POSXY = 6,將位置水平源設置為 ExternalNAV;
- EK3_SRC1_POSZ? = 1,將位置垂直源設置為 Baro;
- EK3_SRC1_VELXY = 6,將速度水平源設置為 ExternalNAV;
- EK3_SRC1_VELZ = 6,將垂直速度源設置為 ExternalNAV;
- EK3_SRC1_YAW = 6,用于將偏航源設置為 ExternalNAV;
- GPS1_TYPE? = 0,禁用 GPS;
- VISO_TYPE = 1,用于啟用目視里程計;
- ARMING_CHECK = 388598(可選,用于禁用 GPS 檢查)。
更改上述任何數值后,重新啟動飛行控制器。
如果一切正常,視覺位置估計值應開始從 ROS 傳輸到 ArduPilot。使用任務計劃器(或類似工具)連接到飛行控制器,檢查飛行數據屏幕的 “信息 ”選項卡(左下角)是否有來自 EKF 的信息,如下圖所示,即可確認這一點:
EKF2 IMU1 initial pos NED = 0.0,0.0,0.0 (m)
EKF2 IMU1 is using external nav data
EKF2 IMU0 initial pos NED = 0.0,0.0,0.0 (m)
EKF2 IMU0 is using external nav data
使用任務計劃器(或類似工具)進入“飛行數據”屏幕,然后用鼠標右鍵單擊地圖,選擇 “在此設置原點”>>“設置 EKF 原點”。飛行器應立即出現在你點擊的地圖上。
10 測試
要確認 ROS 端工作正常,請鍵入以下命令,制圖師提供的位置估計實時更新信息就會顯示出來:
rostopic echo /robot_pose
任務規劃器的 MAVLink 檢查器(按 Ctrl-F,然后按“MAVLink 檢查器”按鈕)可用于檢查 VISION_POSITION_ESTIMATE 信息是否成功發送至飛行控制器。
11 視頻
!Note
我們非常希望改進 ArduPilot 對 ROS 的支持,因此如果您發現問題(例如似乎不支持的命令),請在 ArduPilot 問題列表(ArduPilot issues list)中報告,并在標題中注明“ROS”,我們將嘗試盡快解決這些問題。