在学习webots过程中,对于URDF文件生成、PROTO文件的生成,学习了CSDN上的多篇博客,终于实现了自己的文件导入及初步仿真动作的实现。现做一简单汇总,并简要介绍,希望能帮助到有需要的人。
一点体会,有时候很难照着一篇博客从头到尾跟下来就能复现,涉及很多因素,包括软件版本不同(solidworks版本不同,对应SW2URDF版本就不同;webots版本不同;python版本不同;URDF2webots版本不同)系统不同(WIN、Linux+ROS)、机器人构型不同(三轴、四轴、六轴),因此需要多多参考别人的多篇文章,找出最接近自己需要的2-3篇,再加上自己实操,才能完成自己的目的和解决自己遇到的问题。
1、下面这篇文章介绍了URDF模型的joint标签详解,了解基本概念还是很有必要的。
ROS中URDF模型的joint标签详解_ros joint-CSDN博客
要点:
1.1 joint中的属性
关节一共有如下六个类型:
continuous: 一个不受限制的, 绕着一根轴的转动副.
revolute: 一个转动角度受到限制的, 绕着一根轴的转动副.
prismatic: 一个沿着一根轴的滑动副, 并且有限位.
fixed: 固定关节.
floating: 这个关节允许六个自由度的运动, 浮动关节.
planar: wiki上的原话是: This joint allows motion in a plane perpendicular to the axis. 我理解是, 这个关节允许再垂直于轴的一个平面内进行运动, 参考"ROS机器人开发实践"第115页上的内容. 这里的运动应该即包括平移, 也包括旋转.
1.2 joint中的元素
<origin>(可选, 默认为0) 这是一个可选的参数, 并不必须.它反应了从parent link到child link之间的一个变换
<parent>(必须) 指定了这个关节的parent link
<parent>(必须) 指定了这个关节的parent link
<axis>(可选, 默认为(1, 0, 0)) 相对于child link也就是joint link的坐标系:
<calibration>(可选, 非必须)
用于校准关节的参考位置:
rising: 当关节沿正方向移动, 将除法上升沿.
falling: 反之.<dynamics>(可选, 非必须, 默认为0)
反映了这个关节的一些物理参数, 比如阻尼值或者静摩擦力等:
<limit>(仅仅在prismatic和revolute的关节时需要设置)
其中包含如下几个属性:
lower和upper(可选, 默认为0): 反映了关节移动的最小值或者最大值. 如果关节是continuous类型的话, 就会被自动忽略. 如果不填的话全部默认为0.
effort(必须存在): 其中包含如下几个属性:
lower和upper(可选, 默认为0): 反映了关节移动的最小值或者最大值. 如果关节是continuous类型的话, 就会被自动忽略. 如果不填的话全部默认为0.effort(必须存在):velocity(必须): 设定了关节运动的最大速度.
<mimic>(可选)
这个标签用于明确定义的关节和其他关节之间的关系. 其中包括multiplier和offset
<safety_controller>(可选)
这个元素可以包含一下属性:
soft_lower_limit(可选, 默认为0)
soft_upper_limit(可选, 默认为0)
k_position(可选, 默认为0)k_velocity(必须)
2、命令行下使用python转换urdf为 proto,及各参数的设置
【webots】urdf文件转换为webots文件 详细步骤-CSDN博客
python -m urdf2webots.importer --input=urdf所在目录 --box-collision --static-base --tool-slot=base_link --multi-file --rotation="1 0 0 -1.5708"
3、四轴机械臂URDF导出前在solidworks中的设置讲解的很细,对初学者最有参考价值的文章之一。
导出后的package文件ubuntu下使用暂未使用,使用时再参考学习。
提到导出文件时,改成不带下标点并且全都为小写字母的名称,否则编译会出错。
sw2urdf使用探索_sw2urdfsetup-CSDN博客
4、这个博主的两篇文章,尤其是第二篇文章也不错,对初学者最有参考价值的文章之一。
第一篇文章讲了meshlab软件处理修复网格文件,可能以后用的上。
webots使用以及第三方模型导入装配、运动学仿真教程_webots六轴机械臂仿真-CSDN博客
第二篇文章简单介绍了六轴工业机械臂的模型导入。
将SolidWorks机器人模型导入webots的快捷方法_solidworks 导入webots-CSDN博客
5、导入proto文件前需要将其/\替换一下。就像下面这篇文章末尾里提到的。
利用插件将solidworks模型转化为URDF文件,再转化为proto文件并导入Webots_ubuntu_逆风的少年-CSDN学习社区
6、下面这个是一个四轮小车的导入过程,暂未涉及,留着备查。
webots导入solidworks模型_webots导入模型-CSDN博客
7、导入之后可能遇到的坑:控制台报错接触点超限
webots警告:WARNING: Contact joints between materials will only be created for the 10……_warning: close contact of 0.861590 angstroms betwe-CSDN博客
我的解决思路是在场景树中将BoundingObject设置为box类型,默认的可能太过复杂,用box可以大大简化计算量。
补充1:
这篇站外的文章也不错。
如何将URDF转为PROTO并导入Webots - C-Alen - 博客园 (cnblogs.com)
谢谢阅读~~
版权归原作者 博学慎思笃行 所有, 如有侵权,请联系我们删除。