当前位置: 首页 > news >正文

【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.dtcms.com/a/359110.html

相关文章:

  • Docker实战避坑指南:从入门到精通
  • plantsimulation知识点 多条RGV驮一台工件图标显示顺序问题
  • lumerical_FDTD_光源_TFSF
  • 【AI】【强化学习】强化学习算法总结、资料汇总、个人理解
  • php连接rabbitmq例子
  • SpringCloud学习笔记
  • 大模型应用开发面试全流程实录:RAG、上下文工程与多Agent协作技术深度解析
  • ABAP 刷新屏幕
  • 【C++】日期类实现详解:代码解析与复用优化
  • BEV-VAE
  • 3000. 对角线最长的矩形的面积
  • 配置vsc可用的C语言环境
  • Linux系统统计用户登录和注销时间的工具之ac
  • Dify的搭建
  • Glato - AI 驱动的广告视频创作平台
  • [光学原理与应用-329]:ZEMAX - 主要用途与主要功能
  • Python爬虫实战:研究统计学方法,构建电商平台数据分析系统
  • Windows驱动开发与双机调试环境[驱动开发环境配置高阶]
  • [创业之路-582]:评估难易程度、重要程度,站在不同的角度有不同的答案
  • 第09章 t检验:两独立样本t检验
  • 【MCP系列教程】 Python 实现 FastMCP StreamableHTTP MCP:在通义灵码 IDE 开发并部署至阿里云百炼
  • 49.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--扩展功能--集成网关--Refit跨服务调用
  • java中的VO、DAO、BO、PO、DO、DTO
  • 操作系统-虚拟内存篇
  • 数据结构(顺序表力扣刷题)
  • 使用 Visio Viewer 查看 Visio 绘图文件
  • GEE中上传研究区域范围
  • 个性化导航新体验:cpolar让Dashy支持语音控制
  • 仓颉基于http调用DeepSeek
  • 【MySQL数据库】索引 - 结构 学习记录