一、環境的搭建
1、小車底盤的驅動
首先下載並編譯小車底盤的驅動
$ mkdir catkin_hunter
$ cd catkin_hunter
$ mkdir src
$ cd src
$ git clone --depth 1 https://github.com/agilexrobotics/agx_sdk.git
$ git clone --depth 1 https://github.com/agilexrobotics/hunter_ros.git
$ cd ..
$ catkin_make
2、SLAM建圖A-LOAM的環境
$ cd ~/catkin_hunter/src
$ git clone https://github.com/HKUST-Aerial-Robotics/A-LOAM.git
$ cd ../
$ catkin_make
$ source ~/catkin_ws/devel/setup.bash
3、SLAM重定位環境
然后我們編譯SLAM重定位環境
cd catkin_hunter/src/
git clone https://github.com/AbangLZU/ndt_localizer.git
cd ..
catkin_make
4、控制環境
cd catkin_hunter/src
git clone https://github.com/Lachiven/hunter_pure_puresuit.git
cd ..
catkin_make
5、傳感器環境
編譯相對應的傳感器類型驅動:velodyne、rslidar、sync_lidar
6、障礙物檢測環境
我們用的是自己做過修改的歐式聚類障礙物檢測代碼
cd catkin_hunter/src
git clone https://github.com/Lachiven/obsc_detec_euc.git
cd ..
catkin_make
二、代碼調整及准備工作
1、機器人准備工作
遙控器按住兩個電源鍵即可開機,在開機前將所有按鍵撥至最上方,然后所有按鍵中只有左邊起第二個有用,在中間是遙控器控制,上下位置是TX2指令控制,其余按鍵均無用
由於機器人無上拉電阻,機器人開機之前需要將CAN卡的插頭拔出,TX2與機器人開機后即可插入。
modprobe can // 插入 can 總線子系統
modprobe can-raw //插入can 協議模塊
modprobe can-bcm
modprobe can-gw
modprobe can_dev
modprobe mttcan
sudo ip link set can0 up type can bitrate 500000
candump can0
2、話題的修改
我們將所有的話題的訂閱與發送改成我們想要的話題,具體搜索代碼中的subscribe和advertise將雙引號里的東西改為自己想要的;
比如假設我的傳感器話題是velodyne_points則將雷達電暈subscribe改為“/velodyne_points”
3、路徑文件及地圖的生成
建圖的時候在代碼中加入建圖時里程計信息的保存,將其坐標保存下來作為路徑文件,即行駛的軌跡,建圖過程中錄制建圖地圖為bag包,並通過bag包轉換為pcd地圖。錄制及轉換地圖,路徑文件是自動生成的,生成在建圖代碼的總目錄下
4、路徑文件導入
在重定位代碼中加入路徑文件及地圖的讀取,發布地圖並按一定順序讀取作為路徑發布為ros中自帶的path信息。
5、障礙物信息發布
障礙物信息,通過障礙物檢測代碼,將其發布為ros中的信息,然后用控制模塊接受
6、多傳感器融合
通過手工調參進行XYZ平面的對齊從而進行標定,統一到一個雷達坐標系下,通過同步模塊,將兩個激光雷達發布為一個話題
7、控制代碼的調整
接收障礙物信息、路徑信息、定位信息,進行控制指令的執行。預瞄距離動態可變,繞障代碼的加入
三、運行
1、launch文件的集成
將帶顯示模塊的文件的rviz設置改為flase,除了控制節點外其余的節點統一用launch里的include集成在定位模塊
2、切換到Hunter目錄下運行
首先運行定位及其他節點
source devel setup.bash
roslauch ndt_localizer ndtlocalizer.launch
然后運行控制節點
roslaunch pure_pursuit pure_puresuit.launch