cartographer_ros的localization模式關於trajectory的API的使用

      在cartographer_ros的官網的API接口中(http://google-cartographer-ros.readthedocs.io/en/latest/ros_api.html),有結束trajectory和新建trajectory的service。新建trajectory的service參數配置嘗試後並未掌握,但是有cartographer_start_trajectory可以代替其功能。

      啓動localization模式時,cartographer會自動新建trajectory_id爲1的新路徑,注意0這個id是建圖時的路徑,是不可更改的,後續的路徑都是相對於0這一路徑。當對當前定位的初始位置不滿意,可以結束當前路徑:

 rosservice call /finish_trajectory 1

      調用此service後,trajectory_id爲1的路徑結束,cartographer定位暫停。若不清楚當前運行的trajectory_id,可以查看/trajectory_node_list這一topic的ns屬性。

       接下來要給予cartographer一個新的起始位置建立新的路徑實現localization。官方提供的service接口爲/start_trajectory這一項。由於參數配置始終沒滿足其條件,故選用cartographer_start_trajectory這一節點實現。用法參考:

rosrun cartographer_ros cartographer_start_trajectory --help

      一個例子如下:

rosrun cartographer_ros cartographer_start_trajectory -configuration_basename=xiaobao_localization.lua -configuration_directory=/home/cabin/cartographer_ws/install_isolated/share/cartographer_ros/configuration_files -initial_pose="{to_trajectory_id=0,relative_pose={translation={1.0,-1.0,0.},rotation={0.,0.,0.5}}}"

      如此,機器人將以[1.0m,-1.0m, 0.5rad]的起始姿態開始一條新的路徑。值得一提的是該路徑的trajectory_id將爲2。

      可以按需求重複結束當前路徑,開闢新的路徑,只要注意好trajectory_id是累加的即可。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章