这几天继续琢磨Gazebo仿真环境。
在上一篇文章完成时,顺便提出了一些改进建议。想着估计也没人闲着来改进,于是就自己做了一些修改,主要有以下几个方面:
1、导入Solidworks模型
2、增加腿部自由度,添加转向步态
3、仿真环境参数调整
导入Solidworks模型
在大多数教程中为了简单起见,都使用了Gazebo默认的三种模型:球体、圆柱体和长方体。上一个版本建模使用了这些默认模型,发现有的复杂结构表达起来很困难,用到太多固定关节(fixed joint)。于是这一次琢磨了怎么用Solidworks进行建模并导入gazebo。
一个方法是,在Gazebo的模型编辑器(model editor)中可以看到一个导入模型的选项,里面介绍了可以使用stl模型。但实际使用并没有成功,问题尚未解决。
另一个方法是用插件从solidworks中直接导出urdf,这样会很方便,诸如关节轴线(joint axis)的方向都能自动识别。网上教程很多就不赘述,给两个最有用的链接:
几个注意事项:
· solidworks版本不要太老,官方说至少2012版以后,我用2016版可行
· 如果要直接从装配体导出带所有连杆和关节的完整模型(见教程),可在solidworks中进行装配,但必须留出相应的自由度。不可以把关节约束死,否则插件无法识别
· 模型是以package功能包文件夹的形式导出的,因此导出时命名要符合ros功能包的规范,例如robot_description,不能用默认的XXX.SLDASM名称,否则在ros中无法编译。
改进后的四足机器人模型如图所示,上面的方块配重是为了模拟后续可能会增加的一个机械臂:
经solidworks导入Gazebo的模型
增加腿部自由度
在参考了一些四足机器人的结构后发现,多数四足的腿都有三个自由度,而不是上一个模型中的两个。因此增加了肩部的翻滚自由度,机器的整体自由度如图:
12自由度四足机器人结构简图[1]
增加自由度后就可以实现转向步态了,效果见文末动图与视频。
仿真参数调整
在之前的仿真中,总感觉模型动作不自然,比如总是打滑、振荡。仔细研究后发现,是Gazebo仿真参数设置不合理。这一块还没有弄得太明白,只能把目前的经验分享一下:
· 对于驱动关节,其关节限位、最大扭矩、最大速度、阻尼和摩擦要进行设置。当动作指令通信正常,但机器人就是不动,一般是速度或扭矩不够。
· 整体环境,例如地面摩擦系数等要合理。如果移动机器人模型打滑,除了改进结构以外,注意检查模型与地面的摩擦系数(mu和mu2在0到1之间,超过1则视为1)。
· 使用ros_control插件时,注意调节PID参数,详见自控原理。
对于仿真参数,有一个Gazebo官方论坛上的回答值得记录一下:Object slips out of the gripper after jitters
仿真效果
Gazebo四足机器人仿真
Github链接
参考文献
[1]勾文浩, 袁立鹏, 宫赤坤, et al. 基于足端轨迹的仿生四足机器人运动学分析与步态规划[J]. 现代制造工程, 2017(7).
[2]ROS wiki, Question-Gazebo, 古月居 等网络资料