【ROS2】ROS2 基礎學習教程 、movelt學習

主要博主 參考資料:

ROS系列:
b站荔枝橙
b戰哈薩克斯坦x
《ROS 2機器人開發從入門到實踐》6.2.2 在RViz中顯示機器人_嗶哩嗶哩_bilibili
動手學ROS2–魚香肉絲 ???????
古月居ros2教程

北京華清智能科技 ros教程

moveit系列:
愛喝青柑普洱的鴨梨-moveit基礎入門
moveit humble官網

Youtube&b站實戰項目:

leran robotics with ros很不錯 里面系列課程都可以 但是不是放出全部,部分收費
b站:后來老師up主 機械臂仿真簡單demo全教程
automatic Addison YouTube很不錯
https://automaticaddison.com/
使用ROS與Movelt實現大象機器人myCobot 280機械臂運動軌跡規劃和控制

其他:
ROS2導入機械臂URDF竟有這些坑?SO-ARM100 Rivz可視化避坑指南_ros2導入機械臂urdf竟有這些坑?so-arm100 rivz可視化避坑指南-CSDN博客

https://medium.com/@kabilankb2003/training-so-100-robot-for-cube-lifting-in-isaac-lab-from-simulation-to-intelligent-control-with-9e81f94c6d6e

Lerobot. so-100 仿真環境數據搜集_嗶哩嗶哩_bilibili
lerobot_so100_sim仿真操控_嗶哩嗶哩_bilibili
逆映射唯一的個人空間-逆映射唯一個人主頁-嗶哩嗶哩視頻
28BoundlessHope的個人空間-28BoundlessHope個人主頁-嗶哩嗶哩視頻
11jzzz的個人空間-11jzzz個人主頁-嗶哩嗶哩視頻
ros2 手動安裝-不建議,建議使用魚香ros一鍵安裝

1 ROS入門學習

古月居ROS2入門教程:

https://book.guyuehome.com/ROS2/2.%E6%A0%B8%E5%BF%83%E6%A6%82%E5%BF%B5/2.1_%E5%B7%A5%E4%BD%9C%E7%A9%BA%E9%97%B4/

1.1 工作空間

下載古月居項目編譯報錯,原因是直接使用了Anaconda 環境
在這里插入圖片描述臨時停用Anaconda 環境

在這里插入圖片描述
永久停用Anaconda 環境
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

1.2 gazebo

gazebo啟動不了,安裝之后
在這里插入圖片描述
xzl@xzl-HP99:~/Desktop$ ros2 launch gazebo_ros gazebo.launch.py [INFO] [launch]: All log files can be found below /home/xzl/.ros/log/2025-05-26-00-10-53-007034-xzl-HP99-76311 [INFO] [launch]: Default logging verbosity is set to INFO [INFO] [gzserver-1]: process started with pid [76312] [INFO] [gzclient-2]: process started with pid [76314] [gzclient-2] gzclient: /usr/include/boost/smart_ptr/shared_ptr.hpp:728: typename boost::detail::sp_member_access::type boost::shared_ptr::operator->() const [with T = gazebo::rendering::Camera; typename boost::detail::sp_member_access::type = gazebo::rendering::Camera*]: 斷言 “px != 0” 失敗。 [ERROR] [gzclient-2]: process has died [pid 76314, exit code -6, cmd ‘gzclient --gui-client-plugin=libgazebo_ros_eol_gui.so’].

本質就是第一個連接解決方案,沒source setup文件

source /usr/share/gazebo/setup.sh

后面學習新的東西時候,就將gazebo變了,變成gazebo fortress長期支持版本,最終使用ign gazebo能啟動就代表gazebo安裝好了。

同時也要安裝ros相應版本和gazebo集成。
sudo apt-get install ros-${ROS_DISTRO}-ros-gz

Binary Installation on Ubuntu — Gazebo fortress documentation

gazebo 啟動失敗_gzclient process has died-CSDN博客

啟動gazebo失敗報錯
使用gazebo的官方模型庫文件_gazebo官網的模型數據-CSDN博客

gazebo報錯 | 魚香ROS

1.3 其他難點(后續需重新研究)

通行接口是如何從cmake文件編譯到各類文件的?

話題、服務、動作回調函數是如何執行的?回調函背后的機制是啥?

參數是如何在需要重新編譯的情況下動態設置的,看視頻第一遍沒看懂?

launch資源重映射的例子?

tf坐標系里面沒有太搞明白代碼如何操作的?

2 moviet學習

2.1 Tutorials

Getting Started
可以參考愛喝青柑普洱的鴨梨,主要就是如何創建工作空間和編譯,注意編譯內存不夠非常容易崩了,所以最好參考文檔,加上–parallel-workers 1,一個個編譯。

MoveIt Quickstart in RViz
主要介紹了rviz的面板怎么用,一個正常的機械臂,各個規劃按鈕怎么使用

Your First C++ MoveIt Project
主要講解了一個簡單的c++代碼,如何從初始狀態規劃到目標狀態,并且在rviz中顯示。注意編譯時候可以參用增量編譯,參考愛喝青柑普洱的鴨梨 colcon build --packages-select hello_moveit 單獨編譯這一個包

Visualizing In RViz
這一講,主要講的是如何使用代碼控制rivzvisualtools

Planning Around Objects
這一講,主要講的是環境中添加了碰撞對象,如何使用代碼控制rivzvisualtools,并且規劃執行

3 youtube視頻&實戰

以automatic Addison為主線:

系列1 ROS基礎

install ros2 jazzy
其中可以將ros的setup.bash echo到.~/bashrc里面,這樣每次打開shell自動導入環境變量
安裝gazebo 22.04版本 ,我的是按照古月居ros2教程進行安裝,最終老是崩潰的原因放到csdn里面了,沒source setup文件
domainid可以讓機器人在不同的域中工作,默認都是0

后面由于YouTube時長原因,時間太長了,就直接讀了這個教育網站的博客
但是其中從urdf開始還是看的網站
urdf 小車的輪子是旋轉的joint
rosdep installb -i --from… 的命令會檢查項目中的pacay.xml文件哪些沒安裝,自動幫你安裝了
xacrao 更簡單 更加靈活
mycobot280 里面有很多的不同結構的文件
夾爪:
urdf 的prefix指的是命名前綴
mimic標簽 主控制器移動一個單位,引用主控制器其他的關節結構將要移動的位置長度

小車的urdf xacrao文件imu系列 可以在gazebo標簽里面增加topic這樣仿真里面就可以看到imu模擬測量的點云了

幾何碰撞通常將不規則的地方簡化,比如車子直接簡化為長方體

gazebo的使用,gazebo 世界模型和urdf一樣,本質就是urdf,只不過里面一個個嵌套了,機器人控制文件
所有的機械臂控制都需要一個控制的yaml文件,自己新的機械臂導入時候setup助手會幫助生成一個
controlleryaml里面有 很多控制的參數

gazebo中的機械夾爪怎么關閉的,可以通過gz topic發送符合controller控制的信息然后,可以使用topic發送對應上的msg的,然后對應格式msg 的topic就可以關閉夾爪
后續可以使用其他封裝的服務比如action ,使用ros action來執行命令
當前也可以使用腳本來執行操作,比如是Python和c++ 直接spin自旋然后 就可以使用腳本然后launch不斷發布話題

gazebo中的虛擬深度相機圖像可以回傳到rivz中

機器人有很多參數化的技巧,可以使用c++腳本來先設定一個參數,然后再設定一個參數來改變他,從而可以使得不用改變腳本的情況下重參數化

動作action的ros寫法,??? YouTube筆記講的很好,粗略了看了下,沒看完
話題重映射類似java接口一樣,可以重映射應該

系列2 導航章節

傳感器融合:采用卡爾曼濾波
slam建圖:amcl 自適應蒙特卡洛定位,采用粒子濾波算法,slam導航也有例子,也要創建yaml文件然后進行導航處理
導航實操章節也有
nav2 simple commander api可以使用此api控制機器人的運動,路徑規劃,以及各種任務

系列3 movelt系列

1.sdrf文件是對urdf文件的一個補充 里面有很多不錯的博客內容
不同規劃器之間的區別,ompl,pilz橢圓曲線的規劃適合攪拌東西 類似一個抓取的仿真的任務,分為不同的階段
moveit2 任務構造器 不同階段的概念比官方文解釋的清楚,生成器,傳播器,連接器。任務規劃中容器的概念,包裝器,串行,并行(替代,后備,合并階段),包括日志中各類箭頭的解釋,不同的指向是不一樣的,具體含義可以看博客內容

gazebo官方文檔里面 fortess里面 使用gazebo項目 里面有一個盧森堡大學的課程還不錯 盧森堡 大學的movelt2 里面有深度相機拍攝軌跡規劃的場景

系列4 自己動手實操

movelt官方文檔系列實操筆記

0 preface 序言

  1. colcon build報錯:

colcon build --mixin release usage: colcon [-h] [–log-base LOG_BASE] [–log-level LOG_LEVEL] {build,extension-points,extensions,graph,info,list,metadata,mixin,test,test-result,version-check} … colcon: error: Mixin ‘release’ is not available for ‘build’

按照豆包最終解決了:但是他這里說的有錯,最終也只是拉取在線的default配置,沒有自己定義,最終編譯成功

如果 default mixin 中確實沒有 release 配置,或者你想自定義配置,可以創建自己的 mixin 文件:
在這里插入圖片描述
2 moveit 第一個c++入門項目,編譯報錯,原因在于粘貼的文件不一樣

colcon build --packages-select hello_moveit

將該成如下:

#include <moveit/move_group_interface/move_group_interface.h>

在這里插入圖片描述
3 第一個c++項目,按要求改之源碼之后,會編譯報錯,原因暫未解決,但是b站播主視頻并未講解到這里。
在這里插入圖片描述
解決方案:又是文檔改了導致不兼容了

auto move_group_interface = MoveGroupInterface(node, “panda_arm”);

【Moveit2】第一個C++ Moveit程序_moveit c+±CSDN博客

automatic Addison 系列實操

實操到:Movelt系列 automatic addison

  • 您的第一個c++項目 總是規劃失敗 原因是日志好像只支持關節空間 不支持末端姿態

效果:

gazebo ros2 rivz+movelt 聯合仿真

過程:
使用這個命令時候,報錯是因為mycobot_description編譯好之后,shell未重載
ros2 launch urdf_tutorial display.launch.py model:=/home/ubuntu/ros2_ws/src/mycobot_ros2/mycobot_description/urdf/robots/mycobot_280.urdf.xacro

source install/setup.bash

直接使用youtube博客的官方案例那樣topic控制命令不生效

使用這樣可以

ros2 topic pub /diff_drive_base_controller/cmd_vel_unstamped geometry_msgs/msg/Twist “{linear: {x: 0.2, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 0.5}}” --rate 5
在這里插入圖片描述

怎么跑博客的house.world,直接使用gz命令是不行的,

要改2個方面,

1個環境變量 ,這個改成類似這個:

export IGN_GAZEBO_RESOURCE_PATH=“$HOME/world_tutorial”

1個 用這個啟動house world

ign gazebo

啟動成功,最終報這個錯
在這里插入圖片描述
在這里插入圖片描述
moviet+rviz聯合仿真

規劃器選不到,日志有好幾個報錯

OMPL 規劃適配器參數類型不匹配(導致規劃管道加載失敗)
機器人模型關節定義不匹配(影響模型解析)
次要報錯:腳本中gz命令未找到

在這里插入圖片描述
按照gpt 的數組改成字符串改了,

還有部分報錯會一直刷屏,需要繼續改

在這里插入圖片描述后來仔細的研究了下幾個問題,

第一個 expected [string] got [string_array] 錯誤的核心原因。yaml格式不對
Using CHOMP Planner — MoveIt Documentation: Humble documentation

在這里插入圖片描述
moveit 后面總是帶這個_metic找不到的錯誤
https://github.com/ros-controls/gazebo_ros2_control/issues/173

我這里在后綴都添加了一個mimic
在這里插入圖片描述

后來就好了,github上面有很多相似的問題

https://github.com/ros-controls/gz_ros2_control/issues/96

https://github.com/art-e-fact/crane_x7_description/pull/1

https://github.com/ROBOTIS-GIT/turtlebot3_manipulation/issues/66

https://github.com/ros-controls/gz_ros2_control/blob/e2a475104b67134cebb697ed533fc3523dfe3924/ign_ros2_control/src/ign_system.cpp#L290

https://github.com/moveit/moveit2/blob/92ca89dca4fee679bc63a53bde9a992415a4d29e/moveit_core/robot_model/src/robot_model.cpp#L1301

https://github.com/ros-controls/gazebo_ros2_control/issues/173

https://github.com/ros-controls/gazebo_ros2_control/issues/173

https://robotics.stackexchange.com/questions/25107/ros2-moveit-cant-find-mimic-joint

您的第一個c++ movelt項目

在這里插入圖片描述
將頭文件改成hpp->h

改了頭文件之后,仍然報錯,找不到對應的函數

在這里插入圖片描述
里面的函數給改變了
在這里插入圖片描述
您的第一個c++ 項目

這個cpp項目,

在這里插入圖片描述
shell 1是這樣的

在這里插入圖片描述
shell2是這樣的
在這里插入圖片描述
但是不生效 rivz 的規劃還是都偏向于 0.0.0

在這里插入圖片描述

曲面軌跡自己demo 系列實操

實操到:豆包自動生成油箱檢測項目 在ubantu ws_learning_test下面(但stl文件法線一直無法加載)

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

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

相關文章

Java類加載與JVM詳解:從基礎到雙親委托機制

在Java開發中&#xff0c;理解JVM&#xff08;Java虛擬機&#xff09;和類加載機制是掌握高級特性的關鍵。本文將從JDK、JRE、JVM的關系入手&#xff0c;深入講解JVM的內存結構&#xff0c;并詳細剖析類加載的全過程&#xff0c;包括加載時機、流程以及核心機制——雙親委托模型…

準備機試--圖【y總版】[重要]【最短路】

常用代碼模板3——搜索與圖論 - AcWing 一般&#xff0c;稀疏圖&#xff08;m約等于n&#xff09;:堆優化版本的dj&#xff1b;稠密圖&#xff08;mn^2&#xff09;&#xff1a;樸素dj 最短路的難點在于建圖【抽象出點和邊】 樸素dj

Python API接口實戰指南:從入門到精通

&#x1f31f; Hello&#xff0c;我是蔣星熠Jaxonic&#xff01; &#x1f308; 在浩瀚無垠的技術宇宙中&#xff0c;我是一名執著的星際旅人&#xff0c;用代碼繪制探索的軌跡。 &#x1f680; 每一個算法都是我點燃的推進器&#xff0c;每一行代碼都是我航行的星圖。 &#x…

Spring和mybatis整合后事務攔截器TransactionInterceptor開啟提交事務流程

目錄一、說明二、TransactionInterceptor開啟事務&#xff08;1&#xff09;、攔截方法&#xff08;2&#xff09;、開啟事務綁定數據庫連接&#xff08;3&#xff09;、mybatis中sql執行數據庫連接獲取&#xff08;4&#xff09;、事務提交和當前線程ThreadLocal清理&#xff…

05.《ARP協議基礎知識探秘》

ARP協議基本介紹與實踐 文章目錄**ARP協議基本介紹與實踐**ARP概述ARP報文類型ARP工作過程解析ARP工作原理示意圖無故ARP/免費ARP實驗案例**實驗目標**實驗環境實驗步驟ARP概述 作用&#xff1a;ARP&#xff08;Address Resolution Protocol&#xff0c;地址解析協議&#xff…

互聯網大廠面試:大模型應用開發崗位核心技術點解析

互聯網大廠面試&#xff1a;大模型應用開發崗位核心技術點解析 第一輪&#xff1a;大模型基礎與上下文工程 問題 1&#xff1a;你能簡單介紹 Transformer 架構的工作原理嗎&#xff1f; 小C&#xff1a;嗯&#xff0c;我理解是 Transformer 主要依賴自注意力機制&#xff08;Se…

【深度學習新浪潮】有沒有什么方法可以將照片變成線描稿,比如日式漫畫的那種?

一、技術原理與研究進展 1. 線描生成的核心技術路徑 傳統方法:基于邊緣檢測(如Canny算子)和形態學操作,但難以處理復雜紋理和藝術風格。 深度學習方法: 端到端生成:使用U-Net架構(如ArtLine項目)直接學習照片到線描的映射,結合自注意力機制和感知損失提升細節保留能力…

NV032NV037美光固態閃存NV043NV045

NV032NV037美光固態閃存NV043NV045在數字化浪潮席卷全球的當下&#xff0c;存儲技術的每一次突破都深刻影響著從個人消費到企業級應用的各個領域。美光科技作為行業領軍者&#xff0c;其NV系列固態閃存產品始終以技術創新為核心驅動力。本文將聚焦NV032、NV037、NV043、NV045四…

天碩G40工業固態硬盤破解軌道存儲難題

在高鐵與軌道交通高速發展的今天&#xff0c;軌道檢測探傷是保障列車安全運行的核心環節。據統計&#xff0c;我國鐵路總里程已突破16萬公里&#xff0c;日均檢測數據量超10TB。加固平板一體機作為軌道探傷領域的“移動工作站”&#xff0c;需要在跨越大江南北的極端環境中實時…

基于Velero + 阿里云 OSS的Kubernetes 集群的備份與恢復

在 Kubernetes&#xff08;K8s&#xff09;中&#xff0c;備份和恢復是保障數據安全與業務連續性的關鍵環節&#xff0c;主要方式包括 ETCD 備份恢復 和 Velero 備份恢復&#xff0c;兩者在備份粒度、恢復影響范圍、存儲位置等方面存在以下差異&#xff1a; 1、ETCD 備份恢復&…

解構與重構:“真人不露相,露相非真人” 的存在論新解 —— 論 “真在” 的行為表達本質

解構與重構&#xff1a;“真人不露相&#xff0c;露相非真人” 的存在論新解 —— 論 “真在” 的行為表達本質緒論&#xff1a;傳統解釋的突圍 —— 從 “藏才” 到 “存真”“真人不露相&#xff0c;露相非真人” 這句諺語&#xff0c;自明代《西游記》以降&#xff0c;便長期…

數據結構:哈希表、排序和查找

一、哈希算法1.將數據通過哈希算法映射成一個健值&#xff0c;存取都在同一個位置&#xff0c;實現數據的高效存儲和查找&#xff0c;時間復雜度由O(n)->O(1)2.哈希碰撞&#xff1a;多個數據通過哈希算法得到的鍵值相同二、哈希表1.構建哈希表存放0-100之間的數據2.哈希算法…

【Java基礎】Java I/O模型解析:BIO、NIO、AIO的區別與聯系(Netty入門必備基礎)

Java I/O模型深度解析&#xff1a;BIO、NIO、AIO的區別與聯系 引言 在Java的網絡編程與文件操作中&#xff0c;I/O&#xff08;輸入/輸出&#xff09;模型是繞不開的核心話題。從早期的BIO&#xff08;Blocking I/O&#xff09;到Java 1.4引入的NIO&#xff08;Non-blocking I/…

windows PowerToys之無界鼠標:一套鍵鼠控制多臺設備

&#x1f4bb;簡介 在多設備協作的工作場景中&#xff0c;如何實現一套鍵鼠控制多臺設備了&#xff1f;微軟推出的 PowerToys 工具集中的 Mouse Without Borders&#xff08;無界鼠標&#xff09;&#xff0c;通過軟件層實現跨設備的鍵鼠共享與數據同步功能&#xff0c;為多臺…

一道比較難的sql題,篩選出重復字段的行數

select * from 導入數據表; id city_column 1 北京,上海,廣州 2 上海,上海,深圳 3 北京,杭州,北京 4 上海,廣州,深圳select substring_index(khmc,,,1), * from 導入數據表 truncate table 導入數據表 select count(distinct khmc) from 導入數據表; …

【K8s】整體認識K8s之與集群外部訪問--service

這一篇文章主要是對service發現新的理解 為什么要使用service服務發現&#xff1f; 首先pod的IP&#xff0c;是動態的&#xff0c;當我們重啟一個pod的時候&#xff0c;它會給它分配一個新的IP&#xff0c;但是如果微服務a想要去調用微服務b&#xff0c;他是需要知道微服務b所有…

k8s(自寫)

kubernetes k8s是什么&#xff1f;Kubernetes是什么&#xff1f;架構是怎么樣的&#xff1f;6分鐘快速入門_嗶哩嗶哩_bilibili kubernetes是google開源神器&#xff0c;介于應用服務和服務器之間&#xff0c;能夠通過策略協調和管理多個應用服務&#xff0c;只需要一個yaml文…

實現微信小程序的UniApp相機組件:拍照、錄像與雙指縮放

在微信小程序開發中&#xff0c;相機功能已成為許多應用的核心組成部分。本文將介紹如何使用UniApp框架實現一個功能豐富的相機組件&#xff0c;支持拍照、錄像、前后攝像頭切換以及雙指縮放等功能。功能概述這個相機組件具備以下核心功能&#xff1a;拍照功能&#xff1a;支持…

python pyqt5開發DoIP上位機【診斷回復的函數都是怎么調用的?】

目錄 文章合集 一、底層網絡接收:`_receive_loop`(觸發起點) 調用時機: 核心代碼: 作用: 二、數據解析:`handle_received_data`(判斷是否為診斷回復) 調用時機: 核心代碼(診斷回復相關部分): 作用: 三、UI顯示:`add_trace_entry`(展示到界面) 調用時機: 信號…

談物質的運動與運動的物質

運動的物質是不是物質的運動&#xff0c;如果假設是&#xff08;第一假設&#xff09;&#xff0c;那末運動的物質是物質的運動&#xff0c;而運動是物質的根本屬性&#xff0c;又運動的物質是物質&#xff0c;則物質的運動是物質&#xff0c;既然運動是物質的根本屬性&#xf…