第一章、从SOLIDWORKS中导出URDF

二轮差速小车已经完结。接下去要进入阿克曼结构移动机器人的仿真。阿克曼小车的结构也就是我们看到最多的应用最广的车型,也称为car-like robot。在这里先挖下一个大坑,因为要做的东西很多,目前要做的仅仅是让阿克曼小车能够在gazebo仿真器中跑动起来,并且能够进行建图导航即可,后续再对其进行拓展。本次系列要做的还是类似于二轮差速车仿真实现这样的一个流程,不过这次要分别用Twist消息和ackermann消息实现阿克曼小车的运动,以及建图导航,请各位拭目以待。

1.配置sw_urdf_exporter插件

在二轮差速小车gazebo仿真的第一章已经说到配置的方法,这边再给一个插件的下载地址

[http://wiki.ros.org/sw_urdf_exporter]    http://wiki.ros.org/sw_urdf_exporter

下载sw2urdfSetup.exe文件后点击安装,安装后就能用插件从SolidWorks中导出URDF模型了。

2.打开创建好的solidworks模型

下面是装配好的tianracer阿克曼小车模型装配体(这里非常感谢天之博特的模型支持),值得注意的是在装配的过程中,小车的车头要指向X轴正方向,竖直方向为Z轴正方向,这些在装配的过程中需要额外注意,否则导出的URDF文件在gazebo或者RVIZ中小车的方位会有问题,如小车直接侧翻等等。

3.创建所有link点和坐标系和joint轴线

与差速小车配置有所不同的是,这次需要将点、坐标系、轴线混合起来配置。因为有些地方需要用到两轴线的交点作为点,然后构建坐标系,配置深度摄像头、激光雷达、单目摄像头的方式与之前配置差速小车传感器配件的方式一样,我们还可以找一个小零件做imu传感器模块(其实仿真环境里面没有必要用到imu,但是为了还原真实性的话可以放置用一下),以上配置方式我按下不表,可参考二轮差速小车的配置方式。附上链接:

[ROS学习初探之自建小车模型并进行仿真(一)]

接下去重点讲一下阿克曼底盘的配置,我们先看一下阿克曼车的运动学模型:

我们可以看到车子转弯的时候两前轮会发生摆转,在模型中令小车转向的是与两前轮相连接的转向铰链也叫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”。选择路径对导出文件进行保存。切记命名的时候,文件名不能带有大写字母和中文,以免出现问题。我们将其命名为“racebot_description”。

小结

以上便是从solidworks导出阿克曼小车urdf的全部过程。接下去要做的便是将导出的功能包放进ubuntu系统并对其进行配置,先做一个键盘控制节点用Twist消息类型控制小车运动的实现,敬请期待。

参考资料

1.[ROS学习初探之自建小车模型并进行仿真(一)]

https://blog.csdn.net/qq_48427527/article/details/108071749?spm=1001.2014.3001.5501

教程 | 阿克曼结构移动机器人的gazebo仿真(一)相关推荐

  1. 教程 | 阿克曼结构移动机器人的gazebo仿真(五)

    第四章.用xacro优化URDF并配置gazebo仿真插件 1►前言 上节用简易模型写了一个小车的URDF代码,这一节将用xacro对其进行优化,这里我并不打算用宏对参数进行封装,因为我个人觉得这样看 ...

  2. 教程 | 阿克曼结构移动机器人的gazebo仿真(二)

    第二章.配置xacro文件 0.前言 上一节已经将urdf导出来了,这一节需要配置一下xacro文件.先看一下导出的功能包在gazebo以及rviz中显示的效果. 将功能包放进工作空间进行编译,sou ...

  3. 教程 | 阿克曼结构移动机器人的gazebo仿真(九)

    第九章.模型替换以及TEB调参技巧 1.前言 上节内容让小车在gazebo仿真环境中实现导航,本节内容重点介绍一下gazebo仿真中的模型替换方法以及TEB调参的技巧. 2.模型替换 阿克曼小车项目从 ...

  4. 阿克曼结构移动机器人的gazebo仿真(八)

    阿克曼结构移动机器人的gazebo仿真(八) 第八章.实现小车自主导航 0.前言 上一节通过配置小车的里程计,用gmapping算法建了房间的二维栅格地图:这一节通过配置AMCL定位以及move_ba ...

  5. 阿克曼结构移动机器人的gazebo仿真(九)

    阿克曼结构移动机器人的gazebo仿真(九) 第九章.模型替换以及TEB调参技巧 0.前言 上节内容让小车在gazebo仿真环境中实现导航,本节内容重点介绍一下gazebo仿真中的模型替换方法以及TE ...

  6. 阿克曼小车urdf模型搭建与gazebo仿真

    阿克曼小车urdf模型搭建与gazebo仿真 参考: 一.urdf模型 1.urdf 模型搭建 1.1 link标签 1.2 joint相关 1.3 偏移关系讲解 2. xacro描述机器人 3. r ...

  7. ROS开发笔记(5)——基于 python 开发 Turtlebot3 Gazebo仿真环境下键盘操控移动机器人(Teleop-bot )

    前文中记录了随机移动机器人的开发过程,本文内容为Turtlebot3 Gazebo仿真环境下Teleop-bot 键盘操控移动机器人,主要包含以下几个部分: 1.键盘驱动(按键驱动发布keys话题) ...

  8. ROS | Gazebo仿真—阿克曼(Ackermann)四轮小车模型

    ROS | Gazebo仿真-阿克曼(Ackermann)四轮小车模型 1. 仿真描述 2. Gazebo简介 2.1 Gazebo的典型用途 2.2 Gazebo的主要特点 3. ros_contr ...

  9. Visp_ros学习笔记(二):在Gazebo环境下实现Pionner3dx移动机器人视觉伺服仿真

    开发环境:Unbuntu 18.04 LTS + ROS Melodic + ViSP 3.3.1   本文主要介绍了如何实现Pionner3dx移动机器人视觉伺服仿真,仿真环境是ROS+Gazebo ...

最新文章

  1. C语言文件操作函数大全(看到总结的真的很好,就转载贡献给大家了)
  2. 03-树3 Tree Traversals Again (c++递归实现)
  3. Ubuntu18.10的chrome免输入密码
  4. c#winform演练 ktv项目 制作歌曲播放列表
  5. 黄聪:C#操作Word表格的常见操作
  6. 问题:jquery event.which详解
  7. 算法题:(1) 有一个集合R = [a, b, c, d, e, f, g, h, i, j, k, l, m, n, ],....请写出求解这样的一个子集的通用算法。
  8. VB中PictureBox控件使用教程
  9. CTF-Web-[极客大挑战 2019]Knife
  10. 数据分析——KMeans聚类算法
  11. 对象关系Lookup与Master-Detail
  12. matlab实现zca去白化,白化算法
  13. 关于Halcon::threshold 用时
  14. 动手实现一个docker引擎-1-从内核到docker的三驾马车
  15. 网站盈利模式分析分类——别人的网站是怎么赚钱的
  16. cookie清空Java_java清除及设置cookie代码
  17. MySQL图形管理软件安装及使用
  18. python实现双屏同时播放视频_多画面同时播放视频 如何在一个视频画面中播放多个视频?...
  19. 环保认证油烟监测装置餐饮业油烟污染如何治理?
  20. 搞IT产品,请谨记Mobile First

热门文章

  1. java阿姆斯特朗数,Java判断阿姆斯特朗数
  2. ZedGraph保存图片的两种方式
  3. espnow 例程解析
  4. 2010高分传记剧情《国王的演讲》DVD中英双字1024高清
  5. WAIC预热 | 赋能企业数字化转型,容智信息×亿欧“AI商业落地论坛”重磅来袭
  6. 类的练习:定义一个Tree(树)类,有成员ages(树龄),成员函数grow(int years)对ages加上years,age()显示tree对象的ages的值。
  7. Arduino 入门学习笔记7 I2C LCD1602液晶显示实验 及 超声波传感器距离检测
  8. 英特尔多核平台编程优化大赛报告
  9. 适合零基础学习Python的书籍
  10. 【编程小技巧】实现弹窗、选项、关机(文件后缀改成.vbs)