webots使用imu传感器(位姿传感器)实现四轮全向轮小车自旋前进,学会可拓展到其他的模型上(边自旋边沿一个方向直行)C语言版本附源码(开源)

如何做一个全向轮小车我在这里不再赘述了,直接上主要部分

为实现上述功能,需要获取到小车的绝对角度(在地图这个大的坐标系中),在webots中我们需要的便是imu传感器(即InertralUint),在实际的运用中,一个陀螺仪的功能便包括了imu的功能。

在代码的调试过程中,我们要学会观察每一个外设输出的数据,例如这个imu,你会发现他输出的一个弧度角,并且朝向一个位置时他的返回值是固定的,用图翻译一下:

 这就是对imu返回值的解释,所以在我们的程序编写中,最好先旋转imu传感器找到返回值为0度的地方,固定imu传感器,然后先分析这种情况。

 AD轮子提供一个方向的速度,BC轮子提供一个方向的速度,通过这两个方向速度的合成实现小车可以向各个方向移动,当向前移动时,两个方向速度大小相等,所以矢量三角形的角度为Π/4.

上面简单介绍了一下全向轮移动的原理,下面解释如何实现不管小车怎样放置,都可以沿着地图大坐标系的一个方向前进。当车头面向正前方,目标路线向前(imu传感器返回值为0)放置的时候,车正向移动,cos和sin计算取的角度为45度。假如车头向右偏了三十度,此时imu传感器返回值换算得到Π/6,我们是不是可以理解为车不动,而我们的目标行驶方向向左转了30度,所以为了使车还能够沿目标路线前进,则车向左前方30度行走即可,取得角度自然变成了(45-30)=15度=Π/12

所以得到 sin和cos利用的角度 sc_angle=3.14*(57.3*spin_angle-45 )/ 180,里面45度的加减需要根据自己的全局坐标系左面是Π/2还是右面是Π/2有关。

到这里便可以实现无论车怎么放都可以向一个方向移动了,效果如下:

最后便要实现旋转了,只需要给左面两个轮子和右面两个轮子速度差即可,最终效果如下

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值