基於ROS的自主導航小車Plantbot--SLAM

ABB參賽作品:基於ROS的工廠作業機器人Plantbot_騰訊視頻 https://v.qq.com/x/cover/u051901b6o1/u051901b6o1.html

ROS 官方提供了hector_mapping和gmapping兩種方法來實現SLAM,其中gmapping採用的是比較古老的經典演算法,而hector_gmapping採用較新的演算法。兩者在應用上的主要區別在於前者可以不藉助里程計實現SLAM,而gmapping必須提供里程計信息。

hector_mapping訂閱主題是scan(提供激光雷達消息)和syscommand(提供重啟等系統命令,可預設),坐標變換關係為:

可以看到,運行該結點需要提供激光雷達坐標系(laser)到機器人基礎坐標系(base_link) 的轉換,這是因為激光雷達感知周圍物體的距離信息是以自身為坐標中心的,而機器人的移動、定位是以機器人基礎坐標係為參考坐標系的,因此有必要添加機器人基礎坐標繫到激光雷達坐標系的轉換。如圖是我選用激光雷達的坐標系規定:

如果使用官方驅動,就必須按照規定的坐標系布置激光雷達、配置坐標系。激光雷達坐標繫到基礎坐標系之間的轉換由運動平台確定,通常是靜態的。在Plantbot中,激光雷達架設在在第三層中心, 而基礎坐標系中心為第一層中心 ,兩坐標系的轉換隻需沿z軸平移兩板的間距。靜態坐標系轉換可以使用static_transform_publisher命令來定周期發布,也可以採用更通用的方法,即利用建立的URDF(Unified Robot Description)模型,調用joint_state_publisher和robot_state_publisher來完成,後一種方法在機械臂中尤為常見。

激光雷達採用了自帶的驅動包,運行結點rplidarNode,發布/scan主題。需要注意的是默認情況下串口沒有寫的許可權,因此運行結點之前先要修改串口許可權,也可以寫相應的規則文件。

一切配置好後運行hector_mapping,可以看到RVIZ中繪製的周圍地圖,此時ROS的工作狀態如下所示:

繼續運行底層框架中的相關結點或對應的啟動文件,然後通過鍵盤或app控制機器人移動,直到繪完整個環境地圖。下圖是繪製的室內環境地圖:

補充資料:RPLidar For ROS Based SLAM

---------------------------------------------------------------------------------------------------------------------

目錄:

基於ROS的自主導航小車Plantbot--底層驅動

基於ROS的自主導航小車Plantbot--SLAM

基於ROS的自主導航小車Plantbot--自主導航


推薦閱讀:

ROS機器人操作系統相關書籍、資料和學習路徑
ROS 2正式版來了,到底有哪些新變化?
【ROS十周年快樂!】Science Robotics封面文章:ROS助力全世界機器人!
基於ROS的自主導航小車Plantbot--底層驅動

TAG:机器人操作平台ROS | 机器人 | 同时定位和地图构建SLAM |