ROS联合Webots之麦克纳姆轮篇-搭建麦轮底盘

article/2025/5/17 19:52:06

ROS联合Webots之麦克纳姆轮篇-搭建麦轮底盘

ubuntu版本:20.04
webots版本:2021a
ros版本:noetic

0.前言

之前笔者出过ROS联合webots开发教程,在教程中使用的是双轮差动底盘模型,今天笔者将带给笔者麦克纳姆轮的使用教程。

1.模型选取

在Webots中,官方提供了kuka公司推出的youbot机器人作为麦克纳姆轮的案例

  • 实物机器人如下所示:
    在这里插入图片描述
  • 仿真机器人如下所示:
    在这里插入图片描述

2.youbot底盘

由上面的两张图可以看到youbot的底盘是麦克纳姆轮底盘,麦克纳姆轮也简称麦轮,与普通的轮子不同,麦轮除了提供前后方向的移动,还能提供左右方向的移动。
麦轮分为两种(A轮和B轮),A轮会产生轴向向左,垂直轴向向前的速度分量,如下图所示:
在这里插入图片描述

B轮会产生轴向向右,垂直轴向向后的速度分量,下图所示。
在这里插入图片描述

youbot机器人底盘上的麦克纳姆轮为A-B-A-B配置,如下图所示:
在这里插入图片描述

将四个轮子复制进自己的机器人中。

3.Webots仿真中的WorldInfo节点

WorldInfo的参数介绍如下所示:

WorldInfo {SFString title                          ""         # 给世界取个好听的名字吧MFString info                           [ ]        # 介绍世界的信息参数SFFloat  gravity                        9.81       # 设置地球引力大小参数SFFloat  CFM                            0.00001    # 用于管理接触关节的约束力参数SFFloat  ERP                            0.2        # 用于管理接触关节的错误减少参数SFString physics                        ""         # 允许用户使用ODE API 编程自定义物理效果的物理插件SFFloat  basicTimeStep                  32         # Webots执行的模拟步骤的持续时间SFFloat  FPS                            60         # 每秒传输帧数SFInt32  optimalThreadCount             1          # 用于计算世界物理的实际线程数SFFloat  physicsDisableTime             1          # 物理禁用时间SFFloat  physicsDisableLinearThreshold  0.01       # 物理禁用线性阈值SFFloat  physicsDisableAngularThreshold 0.01       # 物理禁用角度阈值SFNode   defaultDamping                 NULL       # 默认阻尼SFFloat  inkEvaporation                 0          # 字段设置为非空值,则地面纹理的颜色将慢慢变为白色。SFString coordinateSystem               "ENU"      # 坐标系SFString gpsCoordinateSystem            "local"    # GPS坐标系SFVec3f  gpsReference                   0 0 0      # GPS参数SFFloat  lineScale                      0.1        # 线标尺SFInt32  randomSeed                     0          # 随机种子MFNode   contactProperties              []         # 允许指定多个 ContactProperties 节点,这些节点定义 Solid 节点碰撞时的行为。
}

4.通过修改worldInfo实现麦克纳姆轮底盘运动

  1. 添加两个ContactProperties节点,通过此节点可以定义Solid节点碰撞时的行为,如下图所示:
    在这里插入图片描述

ContactProperties节点参数介绍:

ContactProperties {SFString material1          "default"            # 指定接触材料1,Solid的碰撞节点名SFString material2          "default"            # 指定接触材料2,Solid的碰撞节点名MFFloat  coulombFriction    1                    # 库仑摩擦系数,0 导致无摩擦接触,无穷大导致接触永不滑动SFVec2f  frictionRotation   0 0                  # 允许用户旋转非对称的情况下使用的摩擦方向SFFloat  bounce             0.5                  # 恢复系数,表示撞击前后的速度比SFFloat  bounceVelocity     0.01                 # 弹跳速度MFFloat  forceDependentSlip 0                    # 摩擦的滑移SFFloat  softERP            0.2                  # 管理局部接触关节的错误减少参数SFFloat  softCFM            0.001                # 管理局部接触关节的软约束力混合SFString bumpSound          "sounds/bump.wav"    # any stringSFString rollSound          "sounds/roll.waw"    # any stringSFString SlideSound         "sounds/slide.wav"   # any string
}
  1. 第一个ContactProperties节点如下图所示:
    在这里插入图片描述

第二个ContactProperties节点如下图所示:
在这里插入图片描述

主要修改material1coulombFriction;frictionRotation;bounceforceDependentSlip参数。

  • material1字段在麦克纳姆轮实体的节点下已经定义,如下图所示:
    在这里插入图片描述

大家可以尝试着修改成ExteriorWheelMat试试,可以发现机器人横向移动时会随即带着旋转的姿态,因为这时这个轮子的frictionRotation摩擦方向正好是同向,有一个同向的力导致机器人旋转。

  • coulombFriction字段可以设置4个参数。只有一个参数时摩擦是对称的;两个参数时摩擦是不对称的;三个参数时对material1使用不对称系数,对于material2使用对称系数;四个参数时对material1material2都使用不对称系数。此时我们设置了3个参数,说明对material1是不对称系数,对material2是对称系数。
  • frictionRotation字段中,第一节点设置成-0.965,第二节点设置成0.965
  • bounce字段设置成0,对象会有效的停止在和他碰撞的表面,不会弹跳。
  • forceDependentSlip字段可以设置4个参数。使用一个参数,则该系数适用于两个方向;两个参数时力相关滑移是不对称的,对两个material使用相同的系数;三个参数时对material1使用不对称系数,对于material2使用对称系数;四个参数时对material1material2都使用不对称系数。
    通过使用上面的节点配置,可以实现麦克纳姆轮的运动方式

效果

在这里插入图片描述

结语

本文也是基于笔者的学习和使用经验总结的,主观性较强,如果有哪些不对的地方或者不明白的地方,欢迎评论区留言交流~

为了能和读者进一步讨论问题,建立了一个微信群,方便给大家解答问题,也可以一起讨论问题。
加群链接

开源项目mecanum_robotsim正在更新中~~
✌Bye


http://chatgpt.dhexx.cn/article/xB488VyG.shtml

相关文章

webots和ros2笔记08-分封

如果阅读完webots_ros2源码,到此已经接近尾声了,为何?已经入门webots和ros2了。 是否需要继续研究就看需求了!推荐阅读下文: ROS2机器人操作系统零基础快速入门 https://zhuanlan.zhihu.com/p/96940278 学完ros2基…

VITS 语音合成完全端到端TTS的里程碑

Conditional Variational Autoencoder with Adversarial Learning for End-to-End Text-to-Speech(ICML 2021) KAKAO公司与KAIST韩国科学院,近年在TTS领域佳作频出,目前最主流的HiFiGAN声码器也是其成果。 目录 概览&#xff1…

webots使用以及第三方模型导入装配、运动学仿真教程

因为项目需要使用机器人的运动学仿真,因此需要的使用相应的机器人运动学仿真软件。在查阅了一些资料以后,决定使用webots作为仿真的基本软件。 但是webots的使用教程,国内基本没有。仅在博客园的内的有一个系列博客,介绍了webots…

ROS联合Webots扩展(二)通过语音控制机器人方案

通过语音控制机器人方案 注意: 再学习本系列教程时,应该已经安装过ROS了并且需要有一些ROS的基本知识此教程以webots_demo为基础 ubuntu版本:20.04 webots版本:2021a ros版本:noetic 0.前言 目前语音机器人已经非常…

Webots和ROS2使用说明(部分翻译)

参考链接 Reference: 文档:http://wiki.ros.org/webots_ros2源码:https://github.com/cyberbotics/webots_ros2 2021更新webotsros2 笔记系列: https://blog.csdn.net/ZhangRelay/article/details/112670542 目前,已…

Webots介绍

Webots介绍 1 介绍1.1 概述1.2 应用1.3 入门要求1.4 技术支持1.5 仿真步骤世界(webots定义)控制器超级控制器 1.6 平台能力三维建模能力物理引擎外设支持 2 软件使用启动webots用户界面文件菜单编辑菜单查看菜单模拟菜单构建菜单叠加菜单工具菜单帮助菜单…

三维地图Cesium加载天地图

1、首先去天地图官网申请key码&#xff0c;http://lbs.tianditu.gov.cn/server/MapService.html 2、下载Cesium静态资源包文件&#xff0c;如图 3、引入并加载 <div class"background" ><div id"cesiumContainer"></div></div>…

如何使用ArcGIS Pro制作三维地图

概述 随着设备性能提升和程序的升级&#xff0c;三维地图开始逐步登入主流地图&#xff0c;网上有很多使用ArcGIS制作三维地图的教程&#xff0c;这里给大家介绍一下使用ArcGIS Pro制作三维地图的方法&#xff0c;希望能对大家有所帮助。 数据来源 本教程所使用的数据是从水…

03 三维地图添加切片图层

在介绍了创建二维、三维地图之后,我们接下来介绍三维地图如何添加切片图层。地图添加切片图层的最终结果如下图所示,在此过程中默认实现了将业务图层居中显示的效果: 具体操作如下所示: 1 创建HTML基本架构,创建div和引入相关的文件,然后设置div的基本样式,如下: …

三维pcd地图转二维栅格地图

1.概述 在使用导航时&#xff0c;通常会根据二维栅格地图做路径规划&#xff0c;需要将三维点云地图转化成栅格地图。 本文采用滤波及投影的方法&#xff0c; 主要步骤包括 对输入点云进行直通滤波&#xff0c;获取限定高度范围的数据在进行半径滤波&#xff0c;去除部分孤立…

【python数据处理】替代Excel三维地图依据经纬度坐标的绘制热力地图的方式

替代Excel三维地图依据经纬度坐标的绘制热力地图的方式 背景pyecharts绘制 背景 由于某人访问了某地&#xff0c;即便是调整电脑中的区域为别的国家或者地区时候&#xff0c;excel三维地图选择时候依然会弹出很抱歉&#xff0c;三维地图当前不在你的国家/地区使用。这个“当前…

三维地图3D可视化应用案例

1、如何搭建离线地图开发环境 2、下载离线地图数据(金字塔瓦片数据&#xff09; 3、下载离线地图地形数据库&#xff08;实现地表高低起伏&#xff09; 4、添加离线地图数据到本地服务器 &#xff08;含3D&#xff09; 5、离线地图二次开发接口&#xff08;离线地图API&#…

BlenderGIS生成三维地图白模

目录 简介安装配置处理选点建模后记 简介 BlenderBlenderGISOpenTopography 可以实现地图选点并获取对应三维白模 安装 安装 blender&#xff08;版本不要太新&#xff0c;我用的是 3.0&#xff09;&#xff1a;https://www.blender.org/download/ 获取 blender-gis&#xf…

很抱歉,三维地图当前不能在你的国家/地区使用 Excel绘制三维地图问题解决

手动反爬虫&#xff1a;原博地址 https://blog.csdn.net/lys_828/article/details/123585838 知识梳理不易&#xff0c;请尊重劳动成果&#xff0c;文章仅发布在CSDN网站上&#xff0c;在其他网站看到该博文均属于未经作者授权的恶意爬取信息问题 之前在利用Excel进行三维地图…

MATLAB绘制三维地图

1、meshgrid&#xff1a;生成格点矩阵&#xff0c;类似于给定坐标空间 [x,y]meshgrid(1:10); 2、interp插值法 插值法又称“内插法”&#xff0c;是利用函数f (x)在某区间中已知的若干点的函数值&#xff0c;作出适当的特定函数&#xff0c;在区间的其他点上用这特定函数的值作…

说说基于BS架构的三维地图引擎如arcgis以及三维引擎cesium等在数字孪生三维可视化项目中踩过的那些坑

不知从何年何月BS架构的系统在PC端领域占据了大半壁江山&#xff0c;众多的软件公司为了迎合客户&#xff0c;在项目中纷纷采用BS架构&#xff0c;也因此导致培养了一大批相应的程序员技术人才。 然而&#xff0c;在移动端、手机领域&#xff0c;却又出现另一番景象&#…

ESMap三维地图开发流程

易景地图&#xff08;ESMap&#xff09;是一款三维地图在线开发平台&#xff0c;常被用来做智慧城市数据可视化的在线快速开发&#xff0c;广泛应用于室内外定位导航和数字孪生技术场景。下面就简单介绍一下ESMap三维地图的开发流程&#xff1a; 一、场景搭建 进入官网&#…

html加载三维地图,Cesium加载三维地形及WMS地图,并实现动态控制显示

写在前面: 本次工程主要实现的是cesium基础三维地形加载、视角控制、经纬度显示;重点是实现cesium加载wms图层,并对wms图层进行参数更新,实现动态控制,进一步实现时间地图的展示目的。为时间地图可视化提供了三维显示的思路。中间进行参数控制的时候,需要销毁provider,目…

实景三维数据也可以免费下载

之前分享过不少影像&#xff0c;矢量、DEM…数据下载方法。 随着实景三维的火热&#xff0c;一些实景三维数据可以免费下载吗&#xff1f; 有&#xff01;但可下载的真的不多… 今天我们就来看看怎么才能下载到免费的实景三维数据。 全国地理信息资源目录服务系统 https://…

ArcScene:构建三维地图

主要介绍一下使用ArcScene来制作三维地图&#xff0c;下面是主要的步骤 1.打开ArcGIS下面的ArcScene&#xff0c;将研究区域的DEM和矢量边界数据添加进来&#xff1a; 2.右键DEM&#xff0c;点击属性->基本高度&#xff0c;选择“在自定义表面上浮动”&#xff0c;该路径选…