ROS机器人开发实践阅读笔记之如何用ROS进行机器人建模与仿真

ROS系列文章目录

  1. ROS是什么及ROS的安装
  2. ROS的架构是如何设计的
  3. ROS中需要掌握的基础操作
  4. ROS中有哪些常用的组件
  5. 如何用ROS搭建一个机器人平台
  6. 如何用ROS进行机器人建模与仿真


前言


一、统一机器人描述格式——URDF

URDF(Unified Robot Description Format,统一机器人描述格式)是ROS中一个非常重要的机器人模型描述格式,ROS同时也提供URDF文件的C++解析器,可以解析URDF文件中使用XML格式描述的机器人模型。

URDF文件中常用的XML标签

标签作用
link标签描述机器人某个刚体部分的外观和物理属性,包括尺寸(size)、颜色(color)、形状(shape)、惯性矩阵(inertial matrix)、碰撞参数(collision properties)等参数
joint标签用于描述机器人关节的运动学和动力学属性,包括关节运动的位置和速度限制
robot标签robot是完整机器人模型的最顶层标签,link和joint标签都必须包含在robot标签内
gazebo标签用于描述机器人模型在Gazebo中仿真所需要的参数,包括机器人材料的属性、Gazebo插件等。该标签不是机器人模型必需的部分,只有在Gazebo仿真时才需加入

二、创建机器人URDF模型

1.创建URDF模型

下图为mrobot的URDF模型架构
在这里插入图片描述

mrobot这款机器人底盘模型有7个link和6个joint。7个link包括1个机器人底板、2个电机、2个驱动轮和2个万向轮;6个joint负责将驱动轮、万向轮、电机安装到底板上,并设置相应的连接方式。

2.URDF模型解析

在上面创建的URDF模型,需要对其关键部分进行解析。

3.在rviz中显示模型

完成了URDF模型的构建,可以使用rviz将该模型可视化显示出来,检查是否符合我们的预期设计目标。


三、改进URDF模型

刚才创建的机器人模型还非常简单,仅可以在rviz中可视化显示,如果要将其放入仿真环境中,仅仅只有模型的可视化属性还不够,还需要为其添加一些必要的属性,比如添加物理属性和碰撞属性。

我们可以通过在base_link中加入和标签,描述机器人的物理惯性属性和碰撞属性。

惯性参数的设置主要包含质量和惯性矩阵。如果是规则物体,可以通过尺寸、质量等公式计算得到。在使用真实机器人的设计模型时,标签内可以显示复杂的机器人外观,但是为了减少碰撞检测时的计算量,中往往使用简化后的机器人模型,例如可以将机械臂的一根连杆简化成圆柱体或长方体。这里附上博客园大佬的解法

四、添加传感器模型

1.添加摄像头

首先尝试创建一个摄像头的模型。可以仿照真实摄像头画了一个长方体,以此代表摄像头模型。对应的模型文件是mrobot_description/urdf/camera.xacro
在代码中使用了一个名为usb_camera的宏来描述摄像头,输入参数是摄像头的名称,宏中包含了表示摄像头长方体link的参数。
然后还需要创建一个顶层xacro文件,把机器人和摄像头这两个模块拼装在一起。在这个顶层xacro文件中,包含了描述摄像头的模型文件,然后使用一个fixed类型的joint把摄像头固定到机器人顶部支撑板靠前的位置。可以在Solidworks等软件中创建更加形象、具体的传感器模型,然后转换成URDF模型格式装配到机器人上。

2.添加Kinect

Kinect是一种常用的RGB-D摄像头,三维模型文件kinect.dae可以在TurtleBot功能包中找到。Kinect模型描述文件mrobot_description/urdf/kinect.xacro。
在可视化设置中使用标签可以导入该模型的mesh文件,标签中可将模型简化为一个长方体,精简碰撞检测的数学计算。
然后将Kinect和机器人拼装到一起,顶层xacro文件mrobot_description/launch/mrobot_with_kinect.urdf.xacro

3.添加激光雷达

添加方式与Kinect类似。

五、基于ArbotiX和rviz的仿真器

1.安装ArbotiX

在ROS-Kinetic软件源中还没集成ArbotiX功能包的二进制安装文件,所以需要使用源码编译的方式在Ubuntu上进行安装。ArbotiX功能包的源码在GitHub上托管,可以从Github上git clone下来。下载成功后在工作空间的根路径下使用catkin_make命令进行编译即可。

这里还找到了博客园大佬的安装使用教程

2.配置ArbotiX

ArbotiX功能包安装完成后,就可以针对机器人模型进行配置了。配置步骤较为简单,不需要修改机器人的模型文件,只需要创建一个启动ArbotiX节点的launch文件,再创建一个控制器相关的配置文件即可。

3.运行仿真环境

完成上述配置后,就完成了rviz+ArbotiX的仿真环境的搭建,通过输入一些命令即可运行该仿真环境,通过订阅发布信息的方式即可让机器人动起来。

六、ros_control

在rviz+ArbotiX构建的仿真器中使用了一款ArbotiX差速控制器以实现对机器人模型的控制,但是这款控制器有很大的局限性,无法在ROS丰富的机器人应用中通用。
ros_control就是ROS为开发者提供的机器人控制中间件,包含一系列控制器接口、传动装置接口、硬件接口、控制器工具箱等,可以帮助机器人应用功能包快速落地,提高开发效率。
在这里插入图片描述

七、Gazebo仿真

1.机器人模型添加Gazebo属性

使用xacro设计的机器人URDF模型已经描述了机器人的外观特征和物理特性,虽然已经具备在Gazebo中仿真的基本条件,但是,由于没有在模型中加入Gazebo的相关属性,还是无法让模型在Gazebo仿真环境中动起来。

2.在Gazebo中显示机器人模型

我们需要创建一个启动文件robot_mrobot/mrobot_gazebo/view_mrobot_gazebo.launch,运行Gazebo,加载机器人模型,并且启动一些必要的节点。

3.控制机器人在Gazebo中运动

通过在机器人模型中已经加入了libgazebo_ros_diff_drive.so插件,可以使用差速控制器实现机器人运动。

4.摄像头仿真

在之前rviz+ArbotiX搭建的机器人仿真环境中,机器人装配了多种传感器模型,但是这些模型并无法获取任何环境数据。Gazebo的强大之处还在于提供了一系列传感器插件,可以帮助我们仿真传感器数据,获取Gazebo虚拟环境中的传感信息。
首先为机器人模型添加一个摄像头插件,让机器人看到Gazebo中的虚拟世界。

5.Kinect仿真

很多应用还会使用Kinect等RGB-D传感器,接下来就为Gazebo中的机器人装配一个Kinect,让它可以获取更加丰富的三维信息。

6.激光雷达仿真

在SLAM和导航等机器人应用中,为了获取更精确的三维环境信息,往往会使用激光雷达作为主要传感器。同样我们可以在Gazebo中为仿真机器人装载一款激光雷达。


总结

以上就是本文的内容,本文介绍了ROS的描述形式-URDF,如何创建与改进URDF模型,添加传感器模型,使用基于ArbotiX和rviz的仿真器,Gazebo仿真,本文写的比较粗糙,之后会补上缺失的部分重要内容。

参考资料:
(1)《ROS机器人开发实践》 胡春旭著
(2) ROS官网 http://wiki.ros.org/melodic/Installation/Ubuntu
(3) 百度百科 https://baike.baidu.com/

如需转载请注明:转自CSDN甦傑

欢迎持续关注 我的ROS专栏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值