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

2023-05-16

第一章、从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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • ffmpeg压缩视频

    安装ffmpeg conda install c conda forge x264 61 61 39 1 161 3030 39 ffmpeg 61 4 3 2 压缩mov视频 ffmpeg i movie mov c v libx264
  • AI行动,解放做表打工人

    1 atomecho 插件介绍 如果你是个 需要做财报 数据新闻的冤种 xff1b 或者是 网上有的我都想要 的囤积狂魔 xff1b 或是沉迷 Ctrl 43 C Ctrl 43 V 的做表工具人 那你一定不陌生 对不上的格式 找不到的数据
  • golang高性能rocksdb参数配置

    golang高性能rocksdb参数配置 import 34 errors 34 34 log 34 34 monorepo service autotable comm grocksdb 34 34 strings 34 34 githu
  • Linux doc和docx转换pdf

    准备工作 服务器安装libreoffice apt get install libreoffice 安装完成libreoffice后 xff0c 测试是否安装成功 soffice h 例子 把 tmp test docx 转换成 tmp t
  • 多个硬盘挂载到同一个目录

    同一目录无法重复挂载 xff0c 后挂载的会覆盖之前挂载的磁盘 但是现在需要将4块磁盘并行挂载 xff0c 该如何操作呢 xff1f 将2块磁盘合并到一个逻辑卷 进行挂载 基本知识 基本概念PV Physical Volume 物理卷物理卷
  • LeetCode 跳跃游戏 题解

    题述 xff1a 给定一个非负整数数组 nums xff0c 你最初位于数组的 第一个下标 数组中的每个元素代表你在该位置可以跳跃的最大长度 判断你是否能够到达最后一个下标 思路 xff1a 阅读题目我们可以发现只要数组里面没有0 我们就一
  • #error This file was generated by a newer version of protoc which is 【protoc版本问题】

    在github上下载自己适合的protoc版 xff08 我的环境是ubuntu18 04 ros melodic版本 xff09 gazebo9对应的最低版本protoc为3 0 0 我之前版本为3 14 0会提示目前文件由旧版本生成 x
  • Dispatcher.BeginInvoke()方法使用不当导致UI界面卡死的原因分析

    前段时间 xff0c 公司同事开发了一个小工具 xff0c 在工具执行过程中 xff0c UI 界面一直处于卡死状态 通过阅读代码发现 xff0c 主要是由于 Dispatcher BeginInvoke 方法使用不当导致的 本文将通过一个
  • List的Clear方法与RemoveAll方法用法小结

    示例代码 using System using System Collections Generic namespace ListClearExp class Program static void Main string args Lis
  • 利用C#访问注册表获取软件的安装路径

    绝大多数软件 xff0c 基本上都会在注册表中记录自己的名字和安装路径信息 在注册表中记录这些信息的位置是 xff1a HKEY LOCAL MACHINE SOFTWARE Microsoft Windows CurrentVersion
  • 使用ValidationRule类来检查用户输入的有效性

    1 新建WPF应用程序ValidationRuleExp 整个程序的结构如下图所示 程序运行起来后的效果如下图所示 用户操作程序时 xff0c 先输入固话 手机 Email 个人网站等信息 xff0c 再点击右侧的 点我记住你 按钮 xff
  • 关闭窗体后,进程仍然在运行的问题重现与解决

    1 问题陈述 在开发中 xff0c 遇到这样一个问题 xff1a 点击程序主窗体右上角的叉号关闭应用程序后 xff0c 程序的进程却没有关闭 通过查阅资料 xff0c 了解到 xff0c 产生此类问题的原因主要有以下两点 xff1a 1 x
  • Python判断一个字符串是否包含子串的几种方法

    1 使用成员操作符 in span class hljs prompt gt gt gt span s 61 span class hljs string 39 nihao shijie 39 span span class hljs pr
  • easyui-datagrid获取行和列数据

    1 获取当前行 span class hljs keyword var span row 61 span class hljs string 39 dg 39 span datagrid span class hljs string 39
  • No plugin found for prefix ‘tomcat7’ in the current project and in the plugin groups

    idea中开发javaweb应用 xff0c 使用mvn tomcat7 run命令运行应用时 xff0c 需要配置tomcat的maven插件 在没有配置的情况下会出现下面的错误提示 ERROR No plugin found for p
  • C#中的IComparable和IComparer接口

    C 中 xff0c 自定义类型 xff0c 支持比较和排序 xff0c 需要实现IComparable接口 IComparable接口存在一个名为CompareTo 的方法 xff0c 接收类型为object的参数表示被比较对象 xff0c
  • LeetCode Nim游戏 题解

    题述 xff1a 你和你的朋友 xff0c 两个人一起玩 Nim 游戏 xff1a 桌子上有一堆石头 你们轮流进行自己的回合 xff0c 你作为先手 每一回合 xff0c 轮到的人拿掉 1 3 块石头 拿掉最后一块石头的人就是获胜者 假设你
  • C#接口汇总

    1 IComparable和IComparer接口 用于比较和排序 IComparable 可比较的 xff0c 实现该接口的类 xff0c 便具有 可比较的 特性 IComparer 比较器 xff0c 实现该接口的类 xff0c 是一个
  • Python操作环境变量

    1 使用os读取环境变量 import os os getenv 39 path 39 os environ get 39 path 39 os environ 39 path 39 2 遍历打印所有环境变量 通过访问os environ可
  • 教程 | 阿克曼结构移动机器人的gazebo仿真(一)

    第一章 从SOLIDWORKS中导出URDF 二轮差速小车已经完结 接下去要进入阿克曼结构移动机器人的仿真 阿克曼小车的结构也就是我们看到最多的应用最广的车型 xff0c 也称为car like robot 在这里先挖下一个大坑 xff0c