阿克曼结构移动机器人的gazebo仿真(一)
第一章、从SOLIDWORKS中导出URDF
0.前言
二轮差速小车已经完结。接下去要进入阿克曼结构移动机器人的仿真。阿克曼小车的结构也就是我们看到最多的应用最广的车型,也称为car-like robot。在这里先挖下一个大坑,因为要做的东西很多,目前要做的仅仅是让阿克曼小车能够在gazebo仿真器中跑动起来,并且能够进行建图导航即可,后续再对其进行拓展。本次系列要做的还是类似于二轮差速车仿真实现这样的一个流程,不过这次要分别用Twist消息和ackermann消息实现阿克曼小车的运动,以及建图导航,请各位拭目以待。
1.配置sw_urdf_exporter插件
在二轮差速小车gazebo仿真的第一章已经说到配置的方法,这边再给一个插件的下载地址
下载sw2urdfSetup.exe文件后点击安装,安装后就能用插件从SolidWorks中导出URDF模型了。
2.打开创建好的solidworks模型
下面是装配好的tianracer阿克曼小车模型装配体(这里非常感谢天之博特的模型支持),值得注意的是在装配的过程中,小车的车头要指向X轴正方向,竖直方向为Z轴正方向,这些在装配的过程中需要额外注意,否则导出的URDF文件在gazebo或者RVIZ中小车的方位会有问题,如小车直接侧翻等等。
3.创建所有link点和坐标系和joint轴线
与差速小车配置有所不同的是,这次需要将点、坐标系、轴线混合起来配置。因为有些地方需要用到两轴线的交点作为点,然后构建坐标系,配置深度摄像头、激光雷达、单目摄像头的方式与之前配置差速小车传感器配件的方式一样,我们还可以找一个小零件做imu传感器模块(其实仿真环境里面没有必要用到imu,但是为了还原真实性的话可以放置用一下),以上配置方式我按下不表,可参考二轮差速小车的配置方式。附上链接:
接下去重点讲一下阿克曼底盘的配置,我们先看一下阿克曼车的运动学模型:
我们可以看到车子转弯的时候两前轮会发生摆转,在模型中令小车转向的是与两前轮相连接的转向铰链也叫steering hinge,前边两个steering hinge通过连杆连接形成正梯形四边形结构,正因为是特殊的正梯形四边形结构,使得两前轮的转动角度不同,且四轮的旋转中心可汇交与车外的一点,而这一点即使小车的旋转中心。通过控制steering hinge的转动角度,可求得小车的最小转弯半径,在这里我们要记录一下车子前后轮的轮距wheel base,以及左右轮的宽度,以便于后续的需要。前后轮的配置与二轮差速小车的配置一致这里不再赘述。主要讲一下steering hinge,先配置left steering hinge ,在配置的时候尽量保持前后轮平行,并在配置前将与之相配合的轮子隐形以便于配置,并且需要将连杆删去(gazebo无法仿真四边形机构),因其与base_link相配合,我们在base_link上边设置其旋转轴,并将其命名为le_steer:
接着我们在left steering hinge上创建左轮的转动轴,并将其命名为le_fr_wh:
选择参考几何体–点,选择刚刚建立的两轴线交叉生成点,该点为left steering hinge以及left front wheel旋转轴的交点:
以点为基准建立坐标系并将其命名为le_steer_hinge:
我们对right steering hinge的配置如法炮制,至此坐标系和轴线已经全部配置完毕。
4.使用sw_urdf_exporter插件导出URDF
依次点击“工具—File—Export as URDF”打开插件,首先配置的是URDF Exporter界面,配置方法在二轮差速小车章节已经写的比较详细了,这里不再赘述,值得注意的是前轮的配置parent link 到child link的顺序依次是base_link–>steering_hinge–>front_wheel,并且steering hinge的joint type是revolute,wheel的joint type是continuous,传感器的joint type是fixed。如下图所示:
至此URDF Exporter界面已经配置完毕,点击“Preview and Export”选项,会出现一个新的界面,先配置的是各个joint,在这里我们需要配置一下两个steering hinge joint以及四个wheel joint的limit参数,如下图所示:
其他的joint可以不用去配置,接着点击next进入link配置界面:
在此界面无需做太多的配置,惯量参数可以在后期配置,这里我们通过修改color的参数来设置各个link的颜色。
检查无误后点击“Export URDF and Meshes”。选择路径对导出文件进行保存。切记命名的时候,文件名不能带有大写字母和中文,以免出现问题。我们将其命名为“tianracer_description”。
小结
以上便是从solidworks导出阿克曼小车urdf的全部过程。接下去要做的便是将导出的功能包放进ubuntu系统并对其进行配置,先做一个键盘控制节点用Twist消息类型控制小车运动的实现,敬请期待。