cartographer_ros使用

  1. 首先根據官方指導安裝cartographer
  2. 然后創建ros工作空間并拉取 cartographer_ros 代碼
mkdir -p carto_ws/src
cd carto_ws/src
catkin_init_workspace 
git clone https://github.com/cartographer-project/cartographer_ros.git
  1. 現在需要安裝cartographer_ros依賴項。首先,我們使用rosdep來安裝所需的軟件包。如果在安裝ROS之后已經執行了sudo rosdep init命令,那么它將打印一個錯誤。此錯誤可以忽略。無法翻墻可以安裝rosdepc,使用國內源只需將rosdep替換為rosdepc
sudo rosdep init
rosdep update
rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y
  1. 最后編譯
 cd carto_wscatkin_make
  1. 然后就可以使用了
source devel setup.bash
roslaunch package_name carto.launch

launch文件:

<launch><param name="/use_sim_time" value="true" /> <!--仿真就設為true,實物就設為false--><node name="cartographer_node" pkg="cartographer_ros" type="cartographer_node" args="-configuration_directory $(find limo_bringup)/param-configuration_basename build_map_2d.lua"><remap from="scan" to="limo/scan" /> <!--重映射為實際的LaserScan話題--><remap from="imu" to="limo/imu" /> <!--重映射為實際的IMU話題--></node><node name="cartographer_occupancy_grid_node" pkg="cartographer_ros" type="cartographer_occupancy_grid_node" args="-resolution 0.05" /> <!--resolution為地圖網格大小,越大速度越快,越小精度越好--><node name="rviz" pkg="rviz" type="rviz" required="true" args="-d $(find limo_bringup)/rviz/cartographer.rviz" />
</launch>

cartographer 參數設置

cartographer可以工作在兩種模式:有IMU和沒有IMU,以下為cartographer的lua參數文件:

--包含的cartographer里的lua文件
include "map_builder.lua" 
include "trajectory_builder.lua"options = {map_builder = MAP_BUILDER, -- map_builder.lua的配置信息trajectory_builder = TRAJECTORY_BUILDER, -- trajectory_builder.lua的配置信息map_frame = "map", -- 地圖坐標系的名字tracking_frame = "imu_link",  -- 將所有傳感器數據轉換到這個坐標系下,一般設置為頻率最高的傳感器的frame,如果有IMU就是IMU的frame,如果沒有就是laser的framepublished_frame = "base_link", -- 定位結果發布到tf樹: map_frame -> published_frameodom_frame = "odom", -- 里程計的坐標系名字-- 是否提供odom的tf, 如果為true,則tf樹為map_frame->odom_frame->published_frame;如果為false tf樹為map_frame->published_frameprovide_odom_frame = false, --包含的cartographer里的lua文件publish_frame_projected_to_2d = true, -- 是否將坐標系投影到平面上,沒啥用use_odometry = false, -- 是否使用里程計,如果使用要求一定要有odom的tf use_nav_sat = false,use_landmarks = false, -- 是否使用landmarknum_laser_scans = 1, -- 單線激光掃描數據的話題數量num_multi_echo_laser_scans = 0,num_subdivisions_per_laser_scan = 1, -- 一幀數據被分成幾次處理,一般為1num_point_clouds = 0, -- PointCloud2點云數據的話題數量lookup_transform_timeout_sec = 0.2, -- 查找tf時的超時等待時間submap_publish_period_sec = 0.3, -- submap發布的時間間隔pose_publish_period_sec = 5e-3, -- 位姿發布的時間間隔trajectory_publish_period_sec = 30e-3, -- 軌跡發布的時間間隔rangefinder_sampling_ratio = 1., -- 傳感器數據的降采樣比例odometry_sampling_ratio = 1., -- 里程計數據的降采樣比例fixed_frame_pose_sampling_ratio = 1., -- 某個數據不準,可以降低其采樣比例imu_sampling_ratio = 1., -- IMU數據的降采樣比例landmarks_sampling_ratio = 1., -- landmarks的降采樣比例
}MAP_BUILDER.use_trajectory_builder_2d = true -- 使用2d slam算法,2d和3d一定要有一個為true,且只能有一個TRAJECTORY_BUILDER_2D.submaps.num_range_data = 35
TRAJECTORY_BUILDER_2D.min_range = 0.5
TRAJECTORY_BUILDER_2D.max_range = 20
TRAJECTORY_BUILDER_2D.missing_data_ray_length = 1.TRAJECTORY_BUILDER_2D.use_imu_data = true -- 是否使用IMU數據
TRAJECTORY_BUILDER_2D.use_online_correlative_scan_matching = true
TRAJECTORY_BUILDER_2D.real_time_correlative_scan_matcher.linear_search_window = 0.1
TRAJECTORY_BUILDER_2D.real_time_correlative_scan_matcher.translation_delta_cost_weight = 10.
TRAJECTORY_BUILDER_2D.real_time_correlative_scan_matcher.rotation_delta_cost_weight = 1e-1
-- 提高精度主要修改的參數,設置成比較小的值
TRAJECTORY_BUILDER_2D.ceres_scan_matcher.translation_weight = 1e-1
TRAJECTORY_BUILDER_2D.ceres_scan_matcher.rotation_weight = 4e-1POSE_GRAPH.optimization_problem.huber_scale = 1e2
POSE_GRAPH.optimize_every_n_nodes = 35
POSE_GRAPH.constraint_builder.min_score = 0.65return options

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/166567.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/166567.shtml
英文地址,請注明出處:http://en.pswp.cn/news/166567.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

微信小程序使用騰訊地圖實現地點搜索并且隨著地圖的滑動加載滑動到區域的地點,本文地點使用醫院關鍵詞作為搜索地點

實現效果如下 1.頁面加載時&#xff0c;根據getLocation方法獲取用戶當前經緯度獲取20條醫院位置信息 2.頁面滑動時&#xff0c;根據滑動到的經緯度再次獲取20條醫院位置信息 獲取到的醫院位置信息 實現方法如下 1.在.wxml中添加觸發滑動的方法bindregiοnchange“onMapRegio…

【Spring集成MyBatis】核心配置文件

文章目錄 1. typeHandlers標簽2. plugins標簽通過PageHelper的API獲取分頁的信息 1. typeHandlers標簽 可以重寫類型處理器&#xff0c;或創建類型處理器來處理不支持/非標準的類型。選擇性地將它映射到一個JDBC類型&#xff1a;如Java中的Date類型&#xff0c;將其存放到數據…

docker安裝以及idea訪問docker

其他目錄&#xff1a; docker 安裝環境&#xff08;有空更新&#xff09; url “” docker 打包java包&#xff0c;并運行&#xff08;有空更新&#xff09; url “” docker 打包vue &#xff08;有空更新&#xff09; url “” docker 多服務 &#xff08;有空更新&#xff…

2023年亞太杯數學建模A題水果采摘機器人的圖像識別功能(matlab 部分代碼)

對于1-4問針對的是附錄1 中的數據 clc; close all; clear; % 圖像文件夾路徑 folder_path E:/新建文件夾/yatai/Attachment/Attachment 1/; % 圖像文件列表 image_files dir(fullfile(folder_path, *.jpg)); % 假設所有圖片都是jpg格式% 解析文件名中的數字&#xff0c;并轉…

機器學習探索計劃——數據集劃分

文章目錄 導包手寫數據劃分函數使用sklearn內置的劃分數據函數stratifyy理解舉例 導包 import numpy as np from matplotlib import pyplot as plt from sklearn.datasets import make_blobs手寫數據劃分函數 x, y make_blobs(n_samples 300,n_features 2,centers 3,clus…

Java設計模式系列:單例設計模式

Java設計模式系列&#xff1a;單例設計模式 介紹 所謂類的單例設計模式&#xff0c;就是采取一定的方法保證在整個的軟件系統中&#xff0c;對某個類只能存在一個對象實例&#xff0c;并且該類只提供一個取得其對象實例的方法&#xff08;靜態方法&#xff09; 比如 Hiberna…

循環隊列的幾種實現方式

基于數組來實現循環隊列的幾種方式 使用 usedSize使用 標志位空出一個位置 方式一 usedSize 0 是則表示當前數組為空 usedSize 數組的長度 則表示當前數組滿了方式二 使用一個標記 flag 來判斷當前隊列是空還是滿 如果 flag false 則說明隊列為空 如果 flag true 則說…

leetcode:495. 提莫攻擊

一、題目 鏈接&#xff1a;495. 提莫攻擊 - 力扣&#xff08;LeetCode&#xff09; 函數原型&#xff1a;int findPoisonedDuration(int* timeSeries, int timeSeriesSize, int duration) 二、思路 遍歷數組timeSeries&#xff0c;如果 元素值duration < 下一元素值 &#x…

GO語言實現txt文本多行合并為一行

windows系統txt文件 input.txt多行合并為一行 package mainimport ("fmt""io/ioutil""strings" )func main() {content, err : ioutil.ReadFile("E:\\gin_demo\\demo30DNF\\youhua\\input.txt")if err ! nil {fmt.Println("Err…

OpenCV快速入門:圖像分析——傅里葉變換、積分圖像

文章目錄 前言一、傅里葉變換1.1 離散傅里葉變換1.1.1 離散傅里葉變換原理1.1.2 離散傅里葉變換公式1.1.3 代碼實現1.1.4 cv2.dft 函數解析 1.2 傅里葉變換進行卷積1.2.1 傅里葉變換卷積原理1.2.2 傅里葉變換卷積公式1.2.3 代碼實現1.2.4 cv2.mulSpectrums 函數解析 1.3 離散余…

基于深度學習的文本分類

通過構建更復雜的深度學習模型可以提高分類的準確性&#xff0c;即分別基于TextCNN、TextRNN和TextRCNN三種算法實現中文文本分類。 項目地址&#xff1a;zz-zik/NLP-Application-and-Practice: 本項目將《自然語言處理與應用實戰》原書中代碼進行了實現&#xff0c;并在此基礎…

Unity使用DOTween實現分段進度條

文章目錄 需求下載安裝 DOTween實現實現效果 需求 用組件進度條&#xff08;Slider&#xff09;&#xff0c;利用分段加載進行以假亂真的進度效果&#xff0c;比如說2秒鐘到達20%的進度&#xff0c;10秒鐘加載20%到50%進度&#xff0c;1分鐘加載50%到90%的進度&#xff0c;30秒…

2023年金融信創行業研究報告

第一章 行業概況 1.1 定義 金融信創是指在金融行業中應用的信息技術&#xff0c;特別是那些涉及到金融IT基礎設施、基礎軟件、應用軟件和信息安全等方面的技術和產品。這一概念源于更廣泛的“信創 (信息技術應用創新)”&#xff0c;即通過中國國產信息技術替換海外信息技術&a…

77 組合問題

給定兩個整數 n 和 k&#xff0c;返回 1 ... n 中所有可能的 k 個數的組合。 class Solution { private: vector<vector<int>> result; // 存放符合條件結果的集合 vector<int> path; // 用來存放符合條件結果 void backtracking(int n, int k , int st…

測試在 Oracle 下直接 rm dbf 數據文件并重啟數據庫

創建一個新的表空間并創建新的用戶&#xff0c;指定新表空間為新用戶的默認表空間 create tablespace zzw datafile /oradata/cesdb/zzw01.dbf size 10m;zzw用戶已經創建過&#xff0c;這里修改其默認表空間 alter user zzw quota unlimited on zzw; alter user zzw default …

ELK企業級日志分析平臺——logstash

部署 新建一臺虛擬機elk4部署logstash [rootelk4 ~]# yum install -y jdk-11.0.15_linux-x64_bin.rpm[rootelk4 ~]# yum install -y logstash-7.6.1.rpm 命令方式 [rootelk4 bin]# /usr/share/logstash/bin/logstash -e input { stdin { } } output { stdout {} } elasticsearc…

使用骨傳導耳機會傷耳朵嗎?一文讀懂骨傳導耳機有哪些優點

首先說明&#xff0c;如果是正確的使用骨傳導耳機是不會傷耳朵。 一、骨傳導耳機的傳聲原理是什么&#xff1f; 聲音的傳播需要介質&#xff0c;傳統的耳機是通過空氣來進行傳播&#xff0c;也被稱為“空氣傳導耳機”&#xff0c;而骨傳導耳機最大的特別之處就在于&#xff0…

AcWing 3384:二叉樹遍歷(依先序序列建樹,輸出中序序列) ← DFS

【題目來源】https://www.acwing.com/problem/content/3387/【題目描述】 編寫一個程序&#xff0c;讀入用戶輸入的一串先序遍歷字符串&#xff0c;根據此字符串建立一個二叉樹&#xff08;以指針方式存儲&#xff09;。 例如如下的先序遍歷字符串&#xff1a;abc##de#g##f###&…

錄像機IP地址設置教程:輕松掌握網絡連接方法

隨著科技的發展&#xff0c;現在的錄像機都具備了網絡連接的功能&#xff0c;可以通過設置IP地址實現遠程和監控。但是很多人對于錄像機IP地址的設置方法感到困惑。虎觀代理小二二將在本文詳細介紹錄像機IP地址的設置步驟&#xff0c;幫助您輕松掌握網絡連接方法。 首先&#x…

DFS序和歐拉序的降維打擊

1. DFS 序和時間戳 1.1 DFS 序 定義&#xff1a;樹的每一個節點在深度優先遍歷中進、出棧的時間序列。 如下樹的 dfs 序就是[1,2,8,8,5,5,2,4,3,9,9,3,6,6,4,7,7,1]。 下圖為生成DFS的過程。對于一棵樹進行DFS序&#xff0c;除了進入當前節點時對此節點進行記錄&#xff0c;…