[https://www.youtube.com/watch?v=7J2mlFMvMUI]

第一种是忽视摩擦力,而使用diff进行tracked vehicles的模拟。不好

第二种是使用多种圆柱体。用来模拟实际选旋转接触地面时的摩擦力。但是这种运动非常颠簸,不切实际

第三种是将[that is simulating the track as a chain of very small link and ?chain together and applying some like real torque to some of the chain links],意思应该是模拟出履带上的凸起线,然后实现履带?的真实的扭矩。

在他的描述中,有实现比较好的例子vrab?

但是大多情况下Dynamics Engine都无法提供有效的模拟,无法爬升(似乎来源于突起物很难进行摩擦的仿真)。并且可以遇见的,性能要求将会飙升。

他提到他进行了模型的简化、同时保留足够的拟真性。

他首先提出了一种叫做instantaneous center of rotation(即时旋转中心),并且提到无人机广泛使用这个概念。即车辆绕着一个点旋转。

wheel vehicle的转弯取决于转弯半径的圆直径?

对于我们的履带车tracked vehicles,有一个叫做a coefficient called steering efficiency(转向效率的系数),范围是0~1,表示车辆在转弯时的打滑程度。然后就可以通过这个系数去计算车辆到旋转中心的距离,然后得出对应的角度(这段我没太听懂,语速有点快)
在这里插入图片描述

他提到他的这种模型可以实现任意的履带结构,固定式和动态式的都可以实现。且和真实的相差不大。

他的论文是[https://arxiv.org/abs/1703.04316],可惜我无法看懂。

他概述了这种模型 contact surface motion(CSM)

第一步是: 确定一个虚拟的摩擦力方向,使其与周围的圆相切(注意不是指的是车辆重心的圆)。不这么做会转弯而不是旋转。(我们可以假设一下,当这些圆据合成一个圆,要想摩擦力与圆相切,这些摩擦力需要是一个方向,而这个时候转弯就会异常困难)

第二步是在斜面运动的情况。第一种是静止时平衡(摩擦力大小就仅来源于法向力与重力,二者相等时合力为零)。第二种是非静止时,摩擦力大小变为
Ffriction  =  μ (Fnormal+Fweight)  +  k vdes F_{\rm friction} \;=\; \mu\,(F_{\rm normal}+F_{\rm weight}) \;+\; k\,v_{\rm des} Ffriction=μ(Fnormal+Fweight)+kvdes
其中 $ \mu $ 被作者表示为0.2。实验证明这是合理的。?这里我不确定,没听清楚

这是由于gazebo模拟不可能从电机驱动履带的方式去模拟,只能通过给组件速度去模拟

在这里插入图片描述

同时这个插件在gazebo classic和gazebo ignition中都有对应的实现(非常感谢作者的工作)。

Ignition Gazebo 中的 Tracked Vehicle 插件架构

我们重点看看ignition版本的,他分成了两个部分:

  • track controller :控制单个轨道(传送带),订阅整车的 Twist 消息(包含速度与角速度),发送转向效率等数据。

  • track vehicle:合并多个轨道track controller,来计算他说的instantaneous center of rotation?另一个功能是回应/cmd_vel或者其他话题,并转成对单条履带的摩擦力/驱动力。),

Contact Surface Properties Event(接触面属性事件)

ignition gazebo使用的物理引擎(DART),在每一帧里都会做“碰撞检测 + 物理求解”,并触发一个事件events::CollectContactSurfaceProperties

同时trackcontroller会在初始化是注册,并对该时间进行回调。

要启用“按接触点自定义”功能,需要给对应实体打上一个组件(Component):

_ecm.SetComponentData<components::EnableContactSurfaceCustomization>(
  _entity, true);

这样 DART 就不会用全局默认的摩擦参数,而是让你的插件逐点来调。

后续在问答环节里面作者针对ignition的兼容性问题的时候,承认这种事件回调的方式不是很好,且会出现问题,远未达到能使用的情况。会议在2021年,但我仍未找到对应的新的解决方案。

如在2024中[https://github.com/gazebosim/gz-sim/issues/1662#issuecomment-2231352036]中,低版本如fortress提到模型具有无法避免的问题。

2022年[https://answers.gazebosim.org/question/27910]

我很遗憾看到这一点,gazebo的完成程度很低,我希望他们能够在这方面有更多的完成度。

虽然情况如此,但我仍然坚持这个开发。通过[https://github.com/gazebosim/gz-sim/blob/ign-gazebo6/examples/worlds/tracked_vehicle_simple.sdf]我得知了一个完整的ignition fortress开发示例。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐