麦克纳姆轮平台坐标系说明

  关注同名微信公众号“混沌无形”,阅读更多有趣好文!

原文链接https://mp.weixin.qq.com/s/GWhlXsuY6QYyoZydaSYpjQ(包含原文PDF百度云下载链接)

建立坐标系:如图 2.1所示,建立以机器人几何中心(AC与DB的交点)为原点的CENTER坐标系,机器人前向运动方向为x轴正方向(红色箭头),与之垂直向左为y轴正方向(绿色箭头),z轴垂直于纸面向外,满足右手定则。

麦轮平台是全向移动机器人的原因是其有三个自由度,意味着可以在平面内做出任意方向平移同时自旋的动作,如图 2.1所示,采用任意方向的线速度及角速度[vc w]T来描述CENTER的速度,而vc可沿着坐标轴分解为两个分速度,表示为[vcx vcy w]T。 

其线速度[vcx vcy]T方向为沿着坐标轴正方向则为正,反方向为负;而机器人逆时针旋转的时候,角速度w为正,反之为负。(定义方式与《两轮差速驱动机器人运动模型及应用分析》中的相似)

精彩的理论论证过程见原文链接(含全文下载链接)

由于网页排版效果一般,所以笔者按照期刊论文版式为小伙伴们整理了原文PDF,方便收藏和回味。

原文链接https://mp.weixin.qq.com/s/GWhlXsuY6QYyoZydaSYpjQ(包含原文PDF百度云下载链接)
CSDN下载链接:https://download.csdn.net/download/qq_19598969/19860792

如果喜欢的话,可以关注同名微信公众号“混沌无形”,阅读更多有趣好文!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是一个基于C语言的麦克纳姆轮代码示例,实现跑坐标点微调: ```c #include <stdio.h> #include <math.h> // 麦克纳姆轮的半径 #define WHEEL_RADIUS 5.0 // 麦克纳姆轮的边长 #define WHEEL_LENGTH 10.0 // 麦克纳姆轮的旋转角度 #define WHEEL_ANGLE M_PI / 4.0 // 坐标点结构体 typedef struct { double x; double y; } Point; // 计算麦克纳姆轮的速度分量 void calculateWheelSpeed(Point target, double heading, double speed, double* wheelSpeeds) { double x = target.x; double y = target.y; // 计算偏移量 double dx = x - WHEEL_LENGTH * cos(heading); double dy = y - WHEEL_LENGTH * sin(heading); // 计算方向角度和距离 double angle = atan2(dy, dx); double distance = sqrt(dx * dx + dy * dy); // 计算麦克纳姆轮的速度分量 wheelSpeeds[0] = speed * sin(angle + WHEEL_ANGLE) + distance / WHEEL_RADIUS; wheelSpeeds[1] = speed * cos(angle + WHEEL_ANGLE) + distance / WHEEL_RADIUS; wheelSpeeds[2] = speed * cos(angle - WHEEL_ANGLE) + distance / WHEEL_RADIUS; wheelSpeeds[3] = speed * sin(angle - WHEEL_ANGLE) + distance / WHEEL_RADIUS; } int main() { // 目标坐标点 Point target = { 10.0, 10.0 }; // 当前机器人位置和朝向角度 Point position = { 0.0, 0.0 }; double heading = 0.0; // 当前机器人速度 double speed = 1.0; // 麦克纳姆轮的速度分量 double wheelSpeeds[4]; // 计算麦克纳姆轮的速度分量 calculateWheelSpeed(target, heading, speed, wheelSpeeds); // 输出麦克纳姆轮的速度分量 printf("Wheel speeds: %lf %lf %lf %lf\n", wheelSpeeds[0], wheelSpeeds[1], wheelSpeeds[2], wheelSpeeds[3]); return 0; } ``` 在这个示例中,我们定义了一些常量来表示麦克纳姆轮的半径、边长和旋转角度。我们还定义了一个 `Point` 结构体来表示坐标点,以及一个 `calculateWheelSpeed` 函数来计算麦克纳姆轮的速度分量。 在 `main` 函数中,我们定义了目标坐标点、当前机器人位置和朝向角度、机器人速度和麦克纳姆轮的速度分量。然后,我们调用 `calculateWheelSpeed` 函数来计算麦克纳姆轮的速度分量,并输出结果。 你可以根据自己的需求修改这个示例代码,进行更加复杂的坐标微调操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

混沌无形

谢谢老板

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值