(11)用于無GPS導航的制圖師SLAM(一)

文章目錄

前言

1 安裝 RPLidar 和 Pixhawk

2 檢查 RPLidar 的串行端口

3 安裝更多軟件包

4 創建Catkin工作空間

5 安裝 RPLidar 節點

6 安裝 Google Cartographer


前言

本頁展示了如何使用 RPLidarA2 激光雷達(RPLidarA2 lidar)設置 ROS 和 Google Cartographer SLAM,為 ArduPilot 提供本地位置估計,使其可以在沒有 GPS 的情況下運行。

這些說明在使用 APSync 更新的 NVidia TX2 上進行了測試,然后按照此處所述安裝(installed as described here)了 ROS 和 MAVROS。

Note

這些頁面正在制作中。


1 安裝 RPLidar 和 Pixhawk

應調整 RPLidar 的方向,使其 USB 調試線線與飛行控制器上的箭頭方向一致。

USB 調試線應插入運行 ROS 的配套計算機的 USB 端口。

2 檢查 RPLidar 的串行端口

RPLidarA2 插入配套計算機。如果使用安裝在 AUVidea J120 電路板上的 TX2,請確保將激光雷達插入下方的 USB 端口。

ls -l /dev/tty*

激光雷達應該顯示為 /dev/ttyUSB0 或 /dev/ttyACM0。

如果輸入“lsusb”,設備也應顯示為 "Cygnal Integrated Products, Inc. CP210x UART 橋接器 / myAVR mySmartUSB light"。

根據上面找到的串行端口,只需輸入以下兩條命令中的一條,就可以讀取設備信息:

sudo usermod -a -G dialout

3 安裝更多軟件包

完整安裝 ROS 桌面:

sudo apt-get install ros-<distro>-desktop

或安裝這些單獨的軟件包(此列表尚不完整):

sudo apt-get install ros-<distro>-tf ros-<distro>-tf-conversions ros-<distro>-laser-geometry

sudo apt-get install ros-<distro>-cv-bridge ros-<distro>-image-transport

sudo apt-get install qt4-qmake qt4-dev-tools

sudo apt-get install protobuf-compiler

4 創建Catkin工作空間

在你的主目錄中:

cd $HOME

mkdir -p catkin_ws/src

cd catkin_ws

catkin_init_workspace

5 安裝 RPLidar 節點

在工作區安裝 RPLidar 節點:

cd $HOME/catkin_ws/src

git clone https://github.com/Slamtec/rplidar_ros.git

6 安裝 Google Cartographer

安裝更多軟件包:

sudo apt-get install python-wstool python-rosdep ninja-build

使用 wstool 重新初始化工作區,然后合并 cartographer_ros.rosinstall 文件并獲取依賴代碼。

cd $HOME/catkin_ws

wstool init src

wstool merge -t src https://raw.githubusercontent.com/googlecartographer/cartographer_ros/master/cartographer_ros.rosinstall

wstool update -t src

安裝 proto3 和 deb 依賴項:

src/cartographer/scripts/install_proto3.sh

sudo rosdep init?? # if error message appears about file already existing, just ignore and continue

rosdep update

rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y

將機器人姿態發布(Robot Pose Publisher)程序包克隆到工作區中:

cd $HOME/catkin_ws/src

git clone https://github.com/GT-RAIL/robot_pose_publisher.git

使用你喜歡的編輯器(如“gedit”)創建 cartographer_ros 啟動文件

cd $HOME/catkin_ws/src/cartographer_ros/cartographer_ros/launch

gedit cartographer.launch

將以下內容復制粘貼到文件中:

<launch><param name="/use_sim_time" value="false" /><node name="cartographer_node"pkg="cartographer_ros"type="cartographer_node"args="-configuration_directory $(find cartographer_ros)/configuration_files -configuration_basename cartographer.lua"output="screen"><remap from="odom" to="/mavros/local_position/odom" /><remap from="imu" to="/mavros/imu/data" /></node><node name="cartographer_occupancy_grid_node"pkg="cartographer_ros"type="cartographer_occupancy_grid_node" /><node name="robot_pose_publisher"pkg="robot_pose_publisher"type="robot_pose_publisher"respawn="false"output="screen" ><param name="is_stamped" type="bool" value="true"/><remap from="robot_pose" to="/mavros/vision_pose/pose" /></node><node pkg="tf" type="static_transform_publisher" name="base_to_laser_broadcaster" args="0 0 0 0 0 0 base_link laser 100" />
</launch>

使用我們喜歡的編輯器(如“gedit”)創建 cartographer.lua 腳本:

cd $HOME/catkin_ws/src/cartographer_ros/cartographer_ros/configuration_files

gedit cartographer.lua

將以下內容復制粘貼到文件中。

include "map_builder.lua"
include "trajectory_builder.lua"options = {map_builder = MAP_BUILDER,trajectory_builder = TRAJECTORY_BUILDER,map_frame = "map",tracking_frame = "base_link",published_frame = "base_link",odom_frame = "odom",provide_odom_frame = true,publish_frame_projected_to_2d = false,use_odometry = false,use_nav_sat = false,use_landmarks = false,num_laser_scans = 1,num_multi_echo_laser_scans = 0,num_subdivisions_per_laser_scan = 1,num_point_clouds = 0,lookup_transform_timeout_sec = 0.2,submap_publish_period_sec = 0.3,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.,landmarks_sampling_ratio = 1.,
}MAP_BUILDER.use_trajectory_builder_2d = trueTRAJECTORY_BUILDER_2D.min_range = 0.05
TRAJECTORY_BUILDER_2D.max_range = 30
TRAJECTORY_BUILDER_2D.missing_data_ray_length = 8.5
TRAJECTORY_BUILDER_2D.use_imu_data = false
TRAJECTORY_BUILDER_2D.ceres_scan_matcher.translation_weight = 0.2
TRAJECTORY_BUILDER_2D.ceres_scan_matcher.rotation_weight = 5
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 = 1.
TRAJECTORY_BUILDER_2D.real_time_correlative_scan_matcher.rotation_delta_cost_weight = 10
TRAJECTORY_BUILDER_2D.motion_filter.max_angle_radians = math.rad(0.2)
-- for current lidar only 1 is good value
TRAJECTORY_BUILDER_2D.num_accumulated_range_data = 1TRAJECTORY_BUILDER_2D.min_z = -0.5
TRAJECTORY_BUILDER_2D.max_z = 0.5POSE_GRAPH.constraint_builder.min_score = 0.65
POSE_GRAPH.constraint_builder.global_localization_min_score = 0.65
POSE_GRAPH.optimization_problem.huber_scale = 1e2
POSE_GRAPH.optimize_every_n_nodes = 30return options

Note

與其手動修改上述軟件包,不如克隆該倉庫并安裝依賴包。

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

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

相關文章

車載診斷架構 --- 基于整車功能的正向診斷需求開發

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 做到欲望極簡,了解自己的真實欲望,不受外在潮流的影響,不盲從,不跟風。把自己的精力全部用在自己。一是去掉多余,凡事找規律,基礎是誠信;二是…

字帖生成器怎么用?電腦手機雙端操作指南

字帖生成器是一款支持電腦端和手機端的免費練字工具&#xff0c;可一鍵生成PDF格式字帖并直接打印使用。本文基于官方公開版本&#xff0c;提供無廣告、無營銷的實測操作指南。 工具基礎信息 軟件名稱&#xff1a;字帖生成器適用設備&#xff1a;Windows、安卓/鴻蒙核心功能&…

pycharm 遠程連接服務器報錯

配置遠程鏈接的時候出現報錯 Command finished with exit code 139 Execution was killed due to timeout Failed to execute command Rsync command ‘rsync’ was not found neither in local PATH nor as full executable path Starting introspection for Python… 放假前好…

局域網共享文件夾

準備工作&#xff1a; A電腦&#xff08;共享端&#xff09; B電腦&#xff08;本機&#xff09;在A電腦&#xff0c;選好要共享的目錄&#xff0c;然后右鍵屬性 > 高級共享 > 共享此文件夾 > 權限(全開)然后找到此電腦&#xff0c;右鍵&#xff0c;打開屬性&#xff…

時序數據庫全景指南:從場景選型到內核拆解

1. 什么是時序數據 時序數據&#xff08;Time-Series Data&#xff09; 是在時間上連續產生、且帶有時間戳的觀測值序列&#xff0c;典型特征&#xff1a;維度描述高并發寫百萬點/秒&#xff0c;追加為主寫多讀少90 % 查詢是降采樣或聚合時效性越新越熱&#xff0c;舊數據價值遞…

深入解析 Oracle 內存架構:駕馭 SGA 與 PGA 的性能藝術

引言&#xff1a;數據庫的心臟與大腦如果說磁盤上的數據文件是 Oracle 數據庫的“身體”&#xff0c;是永久存儲的基石&#xff0c;那么內存結構就是其“心臟與大腦”。它負責所有計算活動的發生&#xff0c;決定了數據泵送的速度與效率。一個配置得當、運行順暢的內存體系&…

竣工驗收備案識別技術:通過AI和OCR實現智能化文檔處理,提升效率與準確性,推動建筑行業數字化轉型。

竣工驗收備案是建設工程項目投入使用的最終法定程序&#xff0c;是確保工程符合規劃、質量、消防、環保等各項要求的核心關口。傳統的備案流程依賴大量紙質文檔和人工審核&#xff0c;效率低下且易出錯。隨著人工智能與大數據技術的崛起&#xff0c;竣工驗收備案識別技術應運而…

76 最小覆蓋子串

76 最小覆蓋子串 文章目錄76 最小覆蓋子串1 題目2 解答1 題目 給你一個字符串 s 、一個字符串 t 。返回 s 中涵蓋 t 所有字符的最小子串。如果 s 中不存在涵蓋 t 所有字符的子串&#xff0c;則返回空字符串 "" 。 注意&#xff1a; 對于 t 中重復字符&#xff0c;…

趣味學Rust基礎篇(變量與可變性)

這篇文章將用通俗的比喻和清晰的邏輯&#xff0c;帶你深入理解 Rust 變量背后的核心思想&#xff0c;讓你不僅“會用”&#xff0c;更能“明白為什么”。 Rust 的“盒子哲學”&#xff1a;變量、可變性、常量與隱藏 想象一下&#xff0c;Rust 里的變量就像一個個盒子。你把值&a…

2025年- H100-Lc208--912.排序數組(快速選擇排序)--Java版

1.題目2.思路 快速選擇排序的平均時間復雜度是O&#xff08;nlogn&#xff09;&#xff0c;最壞時間復雜度是O&#xff08;n^2&#xff09;&#xff0c;最好的時間復雜度是O&#xff08;nlogn&#xff09;&#xff0c;空間復雜度是O&#xff08;nlogn&#xff09;。 排序算法中…

解決 pdf.mjs 因 MIME 類型錯誤導致的模塊加載失敗問題

Mozilla PDF.js V4 開始&#xff0c;它官方分發確實只提供了 ESM 模塊&#xff08;.mjs&#xff09;&#xff0c;沒有以前的 pdf.js、pdf.worker.js UMD 版本了。 這個問題本質上是 瀏覽器要求以 application/javascript MIME 類型加載 ES Module&#xff0c;而你引入的 pdf.mj…

STM32八大模式

前言&#xff1a;STM32存在八大模式&#xff0c;分別如下推挽輸出&#xff0c;開漏輸出&#xff0c;復用推挽輸出&#xff0c;復用開漏輸出浮空輸入&#xff0c;上拉輸入&#xff0c;下拉輸入&#xff0c;模擬輸入STM32標準IO結構圖如下&#xff1a;其中如下電路為保護電路&…

OpenCV4.X庫功能全解---個人筆記

文章目錄前言1.Core核心功能1.1 基本數據類型和結構&#xff1a;1.2 數組操作&#xff1a;1.3 數學函數&#xff1a;1.4 隨機數生成&#xff1a;1.5 線性代數運算&#xff1a;1.6 常用數據結構和算法&#xff1a;1.7 XML/YAML文件讀寫&#xff1a;1.8 錯誤處理&#xff1a;1.9時…

代碼隨想錄刷題Day44

二叉搜索樹的最近公共祖先 這道題&#xff0c;可以沿用二叉樹的最近公共祖先的求法進行求解&#xff0c;也就是root判斷-左右子樹遞歸求LCA-根據左右子樹的LCA結果返回值這一套。 但是&#xff0c;如果要用上搜索二叉樹的有序性這個信息的話&#xff0c;就可以直接在遞歸時候確…

springmvc的數據校驗和處理的一個例子

JSR-303是Java 的標準規范&#xff0c;而 Spring MVC 對其提供了完美的支持和集成 1.JSR-303 的身份 JSR-303 是 Java 標準 JSR&#xff1a;Java Specification Request&#xff08;Java 規范請求&#xff09; JSR-303&#xff1a;Bean Validation 1.0&#xff08;Bean 驗證規范…

SlowFast使用指南(三)——自建數據集

寫在前面 在前兩個章節初步使用了SlowFast&#xff0c;使用的都是官方給出的數據集。 附上鏈接&#xff1a; SlowFast使用指南&#xff08;一&#xff09;——demo運行-CSDN博客 SlowFast使用指南&#xff08;二&#xff09;——訓練ava數據集-CSDN博客 本文嘗試了使用自己的數…

Day26 樹的層序遍歷 哈希表 排序算法 內核鏈表

day26 樹的層序遍歷 哈希表 排序算法 內核鏈表 實現樹的層序遍歷&#xff08;廣度遍歷&#xff09; 使用隊列輔助實現二叉樹的層序遍歷。算法核心思想是&#xff1a;從根節點開始&#xff0c;依次將每一層的節點入隊&#xff0c;出隊時訪問該節點&#xff0c;并將其左右子節點&…

【系統分析師】高分論文:論快速應用開發方法及應用

【摘要】 我在某縣衛生健康委員會公共衛生信息中心工作&#xff0c;是信息中心的負責人。2021年5月&#xff0c;我中心受縣瘓病預防控制中心委托&#xff0c;為某種瘓病疫苗3期臨床項日開發受試對象攔截系統。我負責系統架構設計、需求分析以及后期的部分編碼工作。通過與慶病預…

4056:【GESP2403八級】接竹竿

/*4056&#xff1a;【GESP2403八級】接竹竿flag 數組 存儲每個元素出現的位置&#xff0c;nxt[i]j;存儲每個位置 后面第一次出現 與a【i】相等的位置//其中 a【i]a[j] :記錄i的下一個位置 &#xff0c;flag 存儲每個值的位置下一次 具有下一次&#xff0c;相當于的鏈表了&…

企業落地版 AutoGen 多智能體工程(完整示例)

企業生產級參考實現,目標是一套可直接部署的模板工程,包含: FastAPI HTTP API(任務提交、狀態查詢) Celery 異步任務隊列(Redis Broker) PostgreSQL + pgvector(向量存儲,RAG) SQLAlchemy + Alembic(ORM 與遷移) AutoGen 多智能體編排(Planner / Coder / Executor…