主要博主 參考資料:
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 序言
- 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文件法線一直無法加載)