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,重新显示。