淄博网站建设优化运营,济南外贸网站建站,装修免费咨询,国内外贸公司前十名目录 写在前面的话整体流程1 URDF 文件结构2 查看原始碰撞形状描述3 加入简单碰撞形状描述方法一 Meshlab 自动测量方法二 人为测量 4 加入XACRO函数简化描述 最终结果展示侧视图正视图碰撞几何体中心点设置不对出现的结果 写在前面的话
本文使用的 URDF 文件是由 solidworks … 目录 写在前面的话整体流程1 URDF 文件结构2 查看原始碰撞形状描述3 加入简单碰撞形状描述方法一 Meshlab 自动测量方法二 人为测量 4 加入XACRO函数简化描述 最终结果展示侧视图正视图碰撞几何体中心点设置不对出现的结果 写在前面的话
本文使用的 URDF 文件是由 solidworks 的 URDF export 插件生成详情请看上一篇文章solidworks模型导出urdf超详细
整体流程
1 URDF 文件结构
写法跟XML文件格式非常类似robot块包含了所有机器人的描述link块描述了零件的连接joint块描述了单个零件。collision碰撞的描述是在link块中包含origin和geometry两个属性geometry描述的是碰撞几何体的形状origin描述的是碰撞几何体的姿态包括中心点的位置和欧拉角这个地方需要重点关注 2 查看原始碰撞形状描述
原始的 URDF 文件是直接使用零件的三维模型文件作为碰撞几何体的描述但是这样在仿真的时候 gazebo 仿真软件需要耗费大量的时间进行碰撞计算gazebo 会出现加载时间过长和崩溃的情况所以有必要进行简化这个碰撞形状描述
collisionoriginxyz0 0 0rpy0 0 0 /geometrymeshfilenamepackage://car_urdf/meshes/left_front_wheel_Link.STL //geometry
/collision3 加入简单碰撞形状描述
需要提前下载meshlab软件方便后面的碰撞形状参数测量和查看
sudo apt install meshlab方法一 Meshlab 自动测量
在meshlab界面菜单栏找到 Render Show Box Corners 可以查看外接矩形的尺寸大小下图左上角的Size和该外接矩形中心点的位置下图左上角的center这个矩形中心点一般不是零件的原点可以通过下面第二图的坐标轴看出因为零件不一定是对称物体而且零件的原点也跟它保存的三维数据三维坐标有关。
注意这个只能支持拟合外接矩阵 方法二 人为测量
还可以如下图操作选中菜单栏的正方体并在右边 Measure Info 设置为 On进行人为测量这个人为结果可能会有偏差但其实影响不大因为我们在实际设置碰撞几何体的时候经常会预设一定范围的安全空间。 为了得到更加准确的结果可以选择不同的视图进行查看并测量 引入长方体描述整个机器人 box 表示长方体size分别表示长宽高三个尺寸。 box size 外接矩形的尺寸大小下图左上角的Size origin xyz 该外接矩形中心点的位置下图左上角的center collisionorigin rpy0 0 0 xyz-0.9 0 0.1/geometrybox size2.9 1.5 1.6//geometry/collision引入长方体描述车轮转向零件 box 表示长方体size分别表示长宽高三个尺寸。 collisionorigin rpy0 0 0 xyz0 -0.03 -0.27/geometrybox size0.34 0.39 0.54//geometry/collision引入圆柱体描述车轮 cylinder 表示圆柱体length表示圆柱的高radius表示圆柱的底的半径。
这里要注意的是要设置欧拉角因为圆柱体默认是竖直的也就是底部跟地面xy面平行但是车轮是竖直的所以这里的圆柱需要横滚角roll角设为90度也就是约等于1.57弧度。 collisionorigin rpy1.5707963267948966 0 0 xyz0 -0.05 0/geometrycylinder length0.2 radius0.3//geometry/collision4 加入XACRO函数简化描述
先把.urdf文件的后缀加上.xacro在urdf文件头部的robot name“”xxx“”后面属性加上xmlns:xacrohttp://www.ros.org/wiki/xacro
robotnamecar_urdf xmlns:xacrohttp://www.ros.org/wiki/xacro因为我的三维模型车轮转向器和车轮都是重复的东西可以进行统一函数封装方便函数调用这个类似函数定义不细讲可以去看古月居的视频或者找几个代码看看。 这里的左右轮和左右轮转向器为什么要分开写因为他们的中心点是不一样的这个需要注意一下这个可能真正的工程试验才会遇到提醒一下。 xacro:property namebase_box_size value2.9 1.5 1.6/xacro:property nameorient_box_size value0.34 0.39 0.54/xacro:property namewheel_cylinder_radius value0.3/xacro:property namewheel_cylinder_length value0.2/xacro:macro namebase_collisioncollisionoriginxyz-0.9 0 0.1rpy0 0 0 /geometrybox size${base_box_size}//geometry/collision/xacro:macroxacro:macro nameleft_orient_collisioncollisionoriginxyz0 -0.03 -0.27rpy0 0 0 /geometrybox size${orient_box_size}//geometry/collision/xacro:macroxacro:macro nameright_orient_collisioncollisionoriginxyz0 0.03 -0.27rpy0 0 0 /geometrybox size${orient_box_size}//geometry/collision/xacro:macroxacro:macro nameleft_wheel_collisioncollisionoriginxyz0 -0.05 0rpy${pi/2} 0 0 /geometrycylinder radius${wheel_cylinder_radius} length${wheel_cylinder_length}//geometry/collision/xacro:macroxacro:macro nameright_wheel_collisioncollisionoriginxyz0 0.05 0rpy${pi/2} 0 0 /geometrycylinder radius${wheel_cylinder_radius} length${wheel_cylinder_length}//geometry/collision/xacro:macro
最终结果展示
侧视图 正视图 碰撞几何体中心点设置不对出现的结果
这是长方体中心点全部默认为 0 且车轮圆柱没设置欧拉角的显示结果