基于ROS的轮式机器人建模方法与仿真研究
2021-04-09朱建军王明园张博文
朱建军,王明园,张博文
(吉林化工学院 信息与控制工程学院,吉林 吉林 132022)
随着“中国制造2020”和“工业4.0”的提出[1],中国开始向人工智能应用发展,ROS(Robot Operating System)作为开源机器人操作系统平台,免费提供开放的源码,为人工智能的发展提供了强大的动力[2],开源机器人操作系统被广泛使用.ROS开源操作系统具有复用化和模块化功能,使机器人开发变得更加容易,为智能机器人的发展提供技术保障,极大地提高了开发效率[3].相比传统的Matlab、OpenGL等操作系统,ROS更易上手.利用SolidWorks创建机器人模型,进一步降低模型创建的复杂度和难度,有效提高建模的效率.
1 机器人操作平台
ROS系统源于2007年机器人技术公司“Willow Garage”个人机器人项目与斯坦福大学人工智能实验室项目的合作[4].2008年后,由柳树车库进行推广和维护.经过多年的发展,ROS操作系统变得更加完善,不仅为操作者提供了实用性较强的工具也提供了先进的开源算法.ROS主要用于机器人的仿真和控制,他是分布式体系结构,每个软件包都是独立的.ROS可以独立运行,也可以根据使用要求进行松耦合运行.按照ROS的系统框架可将其分为计算图级、社区级、文件系统级3个层级.ROS支持多种语言开发,例如Python、Java、C++等,ROS的代码复用使得对机器人的开发更加便捷,开源操作平台降低了机器人开发的难度,开发者可以在ROS社区分享和交流技术方面的知识.ROS具有点对点设计、多种编程语言、快速测试和分布式计算等优点,基于ROS的机器人应用开发逐渐成为主流,目前大多数机器人工厂都在使用他.
2 机器人三维建模创建
ROS环境下建模比较复杂,有一定的局限性需要分析复杂的程序和模型结构,步骤过于繁琐,设计者必须在建模时保持清晰的思路.将外部模型导入ROS中可以有效减少建模时间,提高工作效率.利用SolidWorks三维建模软件[5]建立机器人的模型,再将模型文件导入ROS,该方法具有操作简单、使用方便等优点.
SolidWorks的建模方式分为两种,分别为自底向上和自顶向下.自底向上的建模方法是先绘制总体模型所需要的各个零部件,再利用SolidWorks中的组合关系将零部件进行配合,此建模方式可以对零部件的进行旋转和移动,但对零部件精度的要求十分精确.误差的存在会使零件无法正常配合,再次修改比较麻烦.另一种为自顶向下的建模方法,这种建模方法是先在装配体中绘制零件的草图,确定终止关系和模型之间的参考关系.以这种方式建模时修改参考零部件模型,其他零部件也会进行相应的更新,对设计者的要求较高,设计思路要十分清晰,操作比较困难.
本文采用自底向上的建模方法,先绘制各个零件的草图,按照要求的尺寸和几何关系进行图形的绘制,再利用切割和拉伸定义每个零部件的厚度尺寸和相应的规格.图1为移动机器人的每个零部件的三维模型和最终的组装模型.
图1 零件与装配图
模型组装完成后,再利用sw2urdf插件将三维模型生成ROS中可执行的URDF文件,在生成URDF文件之前先在三维模型中添加相应的坐标系和基准轴,坐标系是每个关节相对于仿真环境中世界坐标系的位置和方向,生成URDF文件时可以形成相应的坐标点.基准轴是每个关节旋转的轴承,本次设计的移动机器人共需要5个基准轴,分别为4个轮子旋转的基准轴和激光雷达的基准轴,坐标系和基准轴如图2所示.
图2 坐标与基准轴
3 模型文件分析与优化
移动机器人模型文件采用四驱滑动驱动,可以根据四轮驱动模型进行模型的运动学分析.移动机器人的运动状态由角速度和线速度两个参数决定[6],运动模型分析如图3所示.
图3 运动模型分析
vr=ω×L,
(1)
其中ω是机器人自身旋转的角速度,L是车轮中心到机器人的中心的距离,vr是提供小车运动的角速度.再由计算出vr得到小车轮子的合速度[7].
vw=vr+v,
(2)
(3)
(4)
(5)
(6)
а是车身底盘宽度的1/2,b是小车身底盘长度的1/2,通过一个简单的矢量加运算,可以计算小车的轮子合速vw.
3.1 URDF模型文件
URDF(Unified Robot Description Format)是一种在ROS中描述机器人仿真模型的编程语言[8],他基于XML文本文件来描述机器人的模型.用户可以根据机器人模型的属性进行模型尺寸、形状、颜色、质量和旋转类型等基本属性的修改,还可以加入机器人动力学、运动学和碰撞检测等.
[9]
图4 模型文件关节
URDF模型描述文件中包含本体、关节和节点的定义以及父节点和子节点之间的关系,基本编程语法如表1所示.
表1 URDF基本语法
图5 link描述示意图
图6 关节连接示意图
3.2 XACRO模型文件优化
XACRO是对URDF文件进行优化后的模型文件,解决了URDF文件存在代码冗长,重复内容过多、不便修改模型文件参数等问题,另外XACRO具有参数计算功能,更利于二次开发.XACRO文件要首先定义标头,其格式如下:
...
URDF文件的优化方式有以下3种:
2.宏定义,可以完成一些最小模块的定义,在程序中可以重复调用,降低了代码的冗长.
3.数学计算,通过计算得到精确的参数,使模型更加精确,便于修改.
3.3 模型文件导入
将优化的模型文件导入到Rviz中显示3D模型,其导入流程图如图7.
图7 模型导入流程
4 仿真环境测试
在模型文件所在的目录下打开终端并输入指令roslaunch car_gaebo mycar.launch,通过Rviz显示模型,如图8(a)、(b)分别为小车在Rviz的3D模型、TF坐标系和模型中的link.
图8 模型导入图
在新终端输入roslaunch car_gazebo teleop.launch控制小车运动,机器人小车的运行状态可以通过仿真环境gazebo进行监控,同时在终端可以实时获取小车运行时的轨迹坐标及状态,仿真测试结果如图9和表2所示.
时间变化/s图9 位置变化曲线
表2 位置变化数据
Rviz中小车的轨迹路线和雷达信息测试结果如图10所示,其中①是小车运行时的历史轨迹,②是雷达检测周围障碍物的信息.通过添加相应的控制程序后可以实现键盘控制功能,行走路线与键盘控制路线基本一致,实现机器人模型可控,雷达检测信息与障碍物信息相吻合.
图10 仿真测试图
5 结 论
本文实现了在SolidWorks创建机器人的三维模型,经过配合组装后转换为URDF文件,在优化模型文件后导入到仿真环境中添加相应的控制程序,利用键盘控制小车的运动,通过最终的测试,小车成功在Gazebo和Rviz中运行.相比于ROS环境下的建模,利用SolidWorks建模能够减少建模的时间,提高模型的准确性.实践证明了方案在模型构建中的可靠性和有效性,通过外部建立模型再导入到Gazebo和Rviz中可以提高工作效率,克服ROS本身建模的局限性.后续可以添加相应的定位建图和路径规划算法,测试小车在陌生环境中的导航等功能.