系列文章目录

一:ROS 机器人系统仿真概述 二:ROS 机器人系统仿真_URDF集成Rviz基本流程

本章会介绍:

  • 如何创建并显示机器人模型;
  • 如何搭建仿真环境;
  • 如何实现机器人模型与仿真环境的交互。

本章预期的学习目标如下:

  • 能够独立使用URDF创建机器人模型,并在Rviz和Gazebo中分别显示;
  • 能够使用Gazebo搭建仿真环境;
  • 能够使用机器人模型中的传感器(雷达、摄像头、编码器…)获取仿真环境数据。

文章目录

  • 系列文章目录
  • @[TOC](文章目录)
  • 前言
  • URDF集成Rviz基本流程
  • 实现流程:
  • 1.创建功能包,导入依赖
  • 2.编写 URDF 文件
  • 3.在 launch 文件中集成 URDF 与 Rviz
  • 4.在 Rviz 中显示机器人模型
  • 5.优化 rviz 启动

前言

(无人机方向)ros小白学习之路(九)ROS 机器人系统仿真_URDF集成Rviz基本流程
参考视频:视频 参考手册:手册

URDF集成Rviz基本流程

前面介绍过,URDF 不能单独使用,需要结合 Rviz 或 Gazebo,URDF 只是一个文件,需要在 Rviz 或 Gazebo中渲染成图形化的机器人模型,当前,首先演示URDF与Rviz的集成使用,因为URDF与Rviz的集成较之于URDF与Gazebo的集成更为简单,后期,基于Rviz的集成实现,我们再进一步介绍URDF语法。

实现流程:

1.创建功能包,导入依赖

  1. 创建一个新的功能包,名称自定义,导入依赖包:urdf与xacro
  2. 在当前功能包下,再新建几个目录:
  3. urdf: 存储 urdf 文件的目录
  4. meshes:机器人模型渲染文件(暂不使用)
  5. config: 配置文件
  6. launch: 存储 launch 启动文件

2.编写 URDF 文件

新建一个子级文件夹:urdf(可选),文件夹中添加一个.urdf文件,复制如下内容:

<robot name="mycar">
    <link name="base_link">
        <visual>
            <geometry>
                <box size="0.5 0.2 0.1" />
            </geometry>
        </visual>
    </link>
</robot>

解释:
geometry:几何模型
box:盒子
size=“长 宽 高”:定义长宽高(空格隔开)

3.在 launch 文件中集成 URDF 与 Rviz

在launch目录下,新建一个 launch 文件,该 launch 文件需要启动 Rviz,并导入 urdf 文件,Rviz
启动后可以自动载入解析urdf文件,并显示机器人模型,核心问题:如何导入 urdf 文件? 在 ROS 中,可以将 urdf文件的路径设置到参数服务器,使用的参数名是:robot_description,示例代码如下:

<launch>

    <!-- 设置参数 -->
    <param name="robot_description" textfile="$(find 包名)/urdf/urdf/urdf01_HelloWorld.urdf" />

    <!-- 启动 rviz -->
    <node pkg="rviz" type="rviz" name="rviz" />

</launch>

注意

“$(find 包名)/urdf/urdf/urdf01_HelloWorld.urdf” />更改为自己的路径
找到urdf文件负责路径

springboot 无人机 spark无人机教程_springboot 无人机

4.在 Rviz 中显示机器人模型

rviz 启动后,会发现并没有盒装的机器人模型,这是因为默认情况下没有添加机器人显示组件,需要手动添加,添加方式如下:

添加模型

springboot 无人机 spark无人机教程_学习_02

设置参考坐标系

springboot 无人机 spark无人机教程_学习_03

5.优化 rviz 启动

重复启动launch文件时,Rviz 之前的组件配置信息不会自动保存,需要重复执行步骤4的操作,为了方便使用,可以使用如下方式优化:

首先,将当前配置保存进config目录

springboot 无人机 spark无人机教程_springboot 无人机_04


然后,launch文件中 Rviz 的启动配置添加参数:args,值设置为-d 配置文件路径

<launch>
    <param name="robot_description" textfile="$(find 包名)/urdf/urdf/urdf01_HelloWorld.urdf" />
    <node pkg="rviz" type="rviz" name="rviz" args="-d $(find 报名)/config/rviz/show_mycar.rviz" />
</launch>