原创 c++多線程的使用

      做工程時遇到需要使用多線程的情況,但沒有類似經驗。學習一段時間後在此記錄供今後參考。      以如下問題爲例:cartographer建圖時,當在鍵盤按下按鍵,則結束建圖並保存地圖。      在node_main.cc中進

原创 cartographer離線利用pbstream生成ros標準格式地圖

      利用cartographer的cartographer_pbstream_to_rosmap節點寫了個launch文件,功能爲離線將pbstream文件轉換成標準ros格式地圖。在早些版本曾有過類似launch文件,後被開發者

原创 robot_pose_ekf初始化odometry協方差矩陣

      在使用robot_pose_ekf時,常遇到接收到的odometry數據格式錯誤的問題。一個可能的原因爲底盤或其他設備發佈odometry數據的協方差矩陣默認爲0矩陣。解決的方法由兩種:一種爲在底盤將信息封裝發佈前對協方差矩陣

原创 給cartographer_ros的NodeOptions新增屬性項

      在使用cartographer進行slam相關工作時遇到希望從外部傳遞自定義的新數據,即在cartographer_ros中設置能通過lua配置文件從外部進行配置的新的屬性。      以實際處理的問題爲例:希望設置一個fla

原创 cartographer輸出機器人相對地圖位姿

     cartographer(0.3.0版本)中機器人位姿是以tf的格式發佈的。cartographer在關於位姿的tf_tree爲:map->odom->base_footprint。其中odom->base_footprint理

原创 利用json文件實現不同設備間的交互(二)

      cartographer建圖過程中,當json文件中map_builder_save屬性的value置1,即接收到地圖保存信號時,應實現結束建圖且保存地圖,同時將map_builder_save置0。保存地圖完成後,將map_

原创 利用json文件實現不同設備間的交互(一)

      在做工程時,遇到如下需求:當移動端按下按鍵,機器人底盤實現相應功能,即樹莓派上啓動相應服務。鑑於涉及不同設備以及各項服務涉及不同語言,需要設計一種交互方式相互協調。      實際實現借鑑了Client/Server結構。首先

原创 修改cartographer動態發佈的網格地圖

      cartographer運行過程中動態發佈的nav_msgs/OccupancyGrid格式的topic可作爲地圖用於navigation。但是amcl接收網格地圖後對數據做了處理:AmclNode::convertMap(

原创 升級cmake版本

      在安裝rtabmap的過程中,發現其對cmake的最低版本有需求。查詢資料後,記錄下升級cmake的流程。      1、到https://cmake.org/files中下載需要的版本,我選擇的版本爲cmake-3.10.2

原创 cartographer的localization模式設置初始位姿

    cartographer的localization模式機器人的初始位姿默認爲建圖時的起點位姿。理論上機器人運動一段時間後通過新局部子圖與全局地圖相匹配能獲取較爲理想的位姿,故無需考慮機器人啓動位姿。如果能知道機器人啓動時的初始位姿

原创 cartographer生成ros格式地圖

    較爲簡單的離線方法請參考:https://blog.csdn.net/xiekaikaibing/article/details/80320822(2018.05.15更新)    cartographer建圖時保存的地圖格式默認