问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

ROS学习笔记-机器人系统仿真6-URDF、Gazebo与Rviz综合应用

发布网友 发布时间:2024-10-06 22:28

我来回答

1个回答

热心网友 时间:2024-10-22 14:26

关于URDF(Xacro)、Rviz 和 Gazebo 三者的关系,前面已有阐述: URDF 用于创建机器人模型、Rviz 可以显示机器人感知到的环境信息,Gazebo 用于仿真,可以模拟外界环境,以及机器人的一些传感器。那么如何在 Gazebo 中运行这些传感器,并显示这些传感器的数据(机器人的视角)呢?本节主要介绍的重点就是将三者结合:通过 Gazebo 模拟机器人的传感器,然后在 Rviz 中显示这些传感器感知到的数据。主要内容包括:

1. 机器人运动控制以及里程计信息显示

gazebo 中已经可以正常显示机器人模型了,那么如何像在 rviz 中一样控制机器人运动呢?在此,需要涉及到ros中的组件: ros_control。

1.1. ros_control 简介

场景:同一套 ROS 程序,如何部署在不同的机器人系统上,比如:开发阶段为了提高效率是在仿真平台上测试的,部署时又有不同的实体机器人平台,不同平台的实现是有差异的,如何保证 ROS 程序的可移植性?ROS 内置的解决方式是 ros_control。

ros_control:是一组软件包,它包含了控制器接口,控制器管理器,传输和硬件接口。ros_control 是一套机器人控制的中间件,是一套规范,不同的机器人平台只要按照这套规范实现,那么就可以保证 与ROS 程序兼容,通过这套规范,实现了一种可插拔的架构设计,大大提高了程序设计的效率与灵活性。

gazebo 已经实现了 ros_control 的相关接口,如果需要在 gazebo 中控制机器人运动,直接调用相关接口即可

1.2. 运动控制实现流程(Gazebo)

1.2.1 为 joint 添加传动装置以及控制器

两轮差速配置

包名/urdf/gazebo/move.urdf.xacro

1.2.2 xacro 文件集成

最后还需要将上述 xacro 文件集成进总的机器人模型文件,代码示例如下:

当前核心: 包含 控制器以及传动配置的 xacro 文件

1.2.3 启动 gazebo并控制机器人运动

launch文件:

启动 launch 文件,使用 topic list 查看话题列表,会发现多了 /cmd_vel 然后发布 vmd_vel 消息控制即可

使用命令控制(或者可以编写单独的节点控制)

接下来我们会发现: 小车在 Gazebo 中已经正常运行起来了

使用键盘控制机器人运动:

设置线速度(speed)和角速度(turn):

1.3. Rviz查看里程计信息

在 Gazebo 的仿真环境中,机器人的里程计信息以及运动朝向等信息是无法获取的,可以通过 Rviz 显示机器人的里程计信息以及运动朝向

里程计: 机器人相对出发点坐标系的位姿状态(X 坐标 Y 坐标 Z坐标以及朝向)。

1.3.1 启动 Rviz

launch 文件

1.3.2 添加组件

执行 launch 文件后,在 Rviz 中添加图示组件:

2. 雷达信息仿真以及显示

通过 Gazebo 模拟激光雷达传感器,并在 Rviz 中显示激光数据。

实现流程:

雷达仿真基本流程:

2.1. Gazebo 仿真雷达

2.1.1 新建 Xacro 文件,配置雷达传感器信息

2.1.2 xacro 文件集成

将步骤1的 Xacro 文件集成进总的机器人模型文件,代码示例如下:

2.1.3 启动仿真环境

编写launch文件,启动gazebo,此处略...

2.2. Rviz 显示雷达数据

先启动 rviz,添加雷达信息显示插件

3. 摄像头信息仿真以及显示

通过 Gazebo 模拟摄像头传感器,并在 Rviz 中显示摄像头数据。

实现流程:

摄像头仿真基本流程:

3.1. Gazebo 仿真摄像头

3.1.1 新建 Xacro 文件,配置摄像头传感器信息

3.1.2 xacro 文件集成

将步骤1的 Xacro 文件集成进总的机器人模型文件,代码示例如下:

3.1.3 启动仿真环境

编写launch文件,启动gazebo,此处略...

3.2. Rviz 显示摄像头数据

执行 gazebo 并启动 Rviz,在 Rviz 中添加摄像头组件。

4. kinect深度相机信息仿真以及显示

通过 Gazebo 模拟kinect摄像头,并在 Rviz 中显示kinect摄像头数据。

实现流程:

kinect摄像头仿真基本流程:

4.1. Gazebo仿真Kinect

4.1.1 新建 Xacro 文件,配置 kinetic传感器信息

4.1.2 xacro 文件集成

将步骤1的 Xacro 文件集成进总的机器人模型文件,代码示例如下:

4.1.3 启动仿真环境

编写launch文件,启动gazebo,此处略...

4.2 Rviz 显示 Kinect 数据

启动 rviz,添加摄像头组件查看数据

补充:kinect 点云数据显示

在kinect中也可以以点云的方式显示感知周围环境,在 rviz 中操作如下:

问题:在rviz中显示时错位。

原因:在kinect中图像数据与点云数据使用了两套坐标系统,且两套坐标系统位姿并不一致。

解决:

1.在插件中为kinect设置坐标系,修改配置文件的标签内容:

2.发布新设置的坐标系到kinect连杆的坐标变换关系,在启动rviz的launch中,添加:

3.启动rviz,重新显示。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
快手极速版怎么绑定不了微信? 本班数学期中测试的优秀率是50%是什么意思 期中测试中全班56名同学有42人达到了优秀标准熊启中是稠剂的优秀率是... 期中测试中,全班56名同学,有49跟达到了优秀标准,求期中测试的优秀率是... 东瓜怎样吃,是减肥的最佳效果呢? 木耳冬瓜瘦肉汤怎么做味道极佳? 黑木耳冬瓜肉末汤美食做法 和前男友分手一年多了,也没联系过,怎么昨晚突然梦到他,而且感觉好真实... 面对分手两年多后的前男友,我应该怎么办 ...了微信但不说话,相亲女加了微信却不聊天,这是什么心态?_百... 用ros_control控制UR5机械臂 【ROS2】ros2-control介绍 离婚时怎样争夺小孩抚养权 夫妻离婚小孩抚养权怎么争取 为什么电脑黑屏且电源灯闪? 旧电脑如何升级-内存为主`另请教新配置单 我新买的780手机与电脑连接不上.不能将本地歌曲输入到手机卡内._百度... 怎么开启七彩虹780G开SATA2 上网记录怎么删除? 在淘宝买东西时出现“0x09c80068”指令引用的“0x09c80068内存是什么意... 新疆最富裕的城市你知道吗 新疆哪个市最富 单位和个人应该遵守的结算纪律的内容有哪些? 寻找中国最适合人类居住的地方... 新疆哪好 醋的好处和坏处分别介绍 醋的好处和坏处 新疆昌吉回族自治州水利资源 新疆有哪些受游客欢迎的热门景点? 昌吉回族自治州资源 老人腿肿怎么办 汤尼小熊护肤品那个是抹脸的 婴儿抹脸应该抹油还是霜 bonpoint面霜怎么用?bonpoint面霜使用方法 您知道天是什么吗? 阴间在宇宙哪个地方? ...的商是两位数,□里最小填___;要使商是一位数,□里最大填___百度知 ... □87÷37,要使商是一位数,□里可填__ 加工不同材料时使用的数控刀具是否相同? 几十二除以五,要使商是两位数,括号里可以填什么,要使商是一位数... ...5中,要使商是两位数,□最小填_;要使商是一位数,□最大填_._百度知 ... ?□45÷5的商是三位数,□里最小可以填(??). A.6 B.5 C.9 D.5至_百度... ...□里最小可以填();要使商是一位数,□里最大可以填().2、 要使□1÷5的商是一位数,□里最大可以填___. □6÷5要使商是一位数,□里最大能填1 释永信难道人家不可以有私生活吗?现在什么年代啊!是人都会有性关系,谁... 释永信最后的结局会是什么? - 知乎 中国最富的和尚是哪个? 口36÷52,要使商是灰两位数,口里最小填();要使商是一位数,口里最大最... ...商是两位数,口里最小要填___;要使商是一位数,口里最大能填... ...要使商是两位数框框里最小能填什么要使商是一位数囗里最大能填...