ROS机器人入门-机器人系统仿真(一)
在机器人操作系统的学习、开发和测试中,存在着购买机器人的成本过高、测试时直接将未经验证的程序部署到实体机器人运行,容易造成硬件损坏等诸多问题。ROS中的仿真就显得尤为重要了。
简介
在ROS中,主要有一下几款组件进行机器人仿真。
URDF
URDF是 Unified Robot Description Format 的首字母缩写,直译为统一(标准化)机器人描述格式,可以以一种 XML 的方式描述机器人的部分结构,比如底盘、摄像头、激光雷达、机械臂以及不同关节的自由度等,该文件可以被 C++ 内置的解释器转换成可视化的机器人模型,是 ROS 中实现机器人仿真的重要组件。
Rviz
Rviz 是 ROS Visualization Tool 的首字母缩写,直译为ROS的三维可视化工具。它的主要目的是以三维方式显示ROS消息,可以将 数据进行可视化表达。例如:可以显示机器人模型,可以无需编程就能表达激光测距仪(LRF)传感器中的传感 器到障碍物的距离,RealSense、Kinect或Xtion等三维距离传感器的点云数据(PCD,Point Cloud Data),从相机获取的图像值等。
以“ros- [ROS_DISTRO] -desktop-full”命令安装ROS时,Rviz会默认被安装。
运行使用命令
rviz
或rosrun rviz rviz
如果Rviz没有安装,可调用如下命令进行安装:
1 >sudo apt install ros-[ROS_DISTRO]-rviz
Gazebo
Gazebo是一款3D动态模拟器,用于显示机器人模型并创建仿真环境,能够在复杂的室内和室外环境中准确有效地模拟机器人。与游戏引擎提供高保真度的视觉模拟类似,Gazebo提供高保真度的物理模拟,其提供一整套传感器模型,以及对用户和程序非常友好的交互方式。
以“ros- [ROS_DISTRO] -desktop-full”命令安装ROS时,gzebo会默认被安装。
运行使用命令
gazebo
或rosrun gazebo_ros gazebo
如果 gazebo没有安装,可按如下方式进行安装:
1.添加源:
1
2
3
4
5
6 sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main"
>
/etc/apt/sources.list.d/gazebo-stable.list'
Copy
wget http://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -
Copy2.安装:
1
2
3
4 sudo apt update
Copy
sudo apt install gazebo11
sudo apt install libgazebo11-dev
URDF集成Rviz
URDF不能单独使用,因为它只是一种文件,需要在Rviz或者Gazebo中渲染成图形化的机器人模型。
由于URDF与Rviz的集成相较于URDF与Gazebo的集成简单,所以首先先了解基于Rviz的集成实现。
任务:在 Rviz 中显示一个盒状机器人
实现
Rviz的集成流程主要有以下几点:
- 准备阶段:新建功能包,导入相关依赖
- 编写URDF文件
- 在launch文件中集成URDF与Rviz
- 在Rviz中显示机器人模型
准备阶段
1、在工作空间下新建功能包并导入相关依赖
1 | cd src |
3、新建目录
urdf
: 存储 urdf 文件的目录meshes
:机器人模型渲染文件(暂不使用)config
: 配置文件launch
: 存储 launch 启动文件
建立目录的目的是为了让项目文件结构清晰合理,不是ROS的强制规范。
编写 URDF 文件
在urdf
目录下新建xxx.urdf
文件,添加如下内容
1 | <robot name="mycar"> |
配置launch文件
在launch
目录下新建launch文件用于启动Rviz并使其自动导入urdf文件。
通过将urdf文件路径设置到参数服务器上,参数名称为robot_description
。
1 | <launch> |
启动Rviz并调用机器人模型
执行source ./devel/setup.bash
后,使用roslaunch 包名 xxx.launch
调用launch文件启动Rviz。启动后rviz并未加载模型,是由于默认情况下没有添加机器人显示组件,需要手动添加。
设置完成后,会显示出红色盒状模型。
Rviz启动优化
重复启动launch
文件时,Rviz 之前的组件配置信息不会自动保存,需要重复上述配置过程,为了方便使用,可以使用如下方式优化:
- 将当前配置保存进
config
目录。
然后,
launch
文件中 Rviz 的启动配置添加参数:args
,值设置为-d 配置文件路径
1
2
3
4
5<launch>
<param name="robot_description" textfile="$(find 包名)/urdf/xxx.urdf" />
<node pkg="rviz" type="rviz" name="rviz" args="-d $(find 包名)/config/rviz/配置文件名.rviz" />
</launch>
Copy再启动时,就可以包含之前的组件配置了。