码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 三种常见的移动底盘运动学模型分析


    目录

    前言

    一、四轮差速运动模型

    二、麦克纳姆轮运动学模型

    三、两轮差速运动学模型

    总结


    前言

    现在大三暑假,开学就要着手准备毕设了,接手了实验室师兄的激光SLAM小车项目,先从下位机学起,争取把整个项目接受下来,有所收获有所创新。

    这篇是在学习代码过程中,对四轮差速小车、麦克纳姆轮小车以及两轮差速小车运动学模型的学习总结。

    一、四轮差速运动模型

     

    符号说明:

    在四轮差速模型中,前轮和后轮的速度是同步的,这里以底盘几何中心COG沿y轴方向上的点ICR作为整个底盘进行圆周运动时的圆心,ICR和COG的距离大小与圆周运动角速度大小有关。

    公式推导:

    绕圆心做圆周运动的物体,其线速度v、角速度w和圆周半径d满足w=v/d。因此可以建立底盘中的约束关系:

    \omega _c=\frac{v_c}{d_c}

    假设线d_{c}与y轴的夹角为,可以对上式进行变形,结果如下所示:

    \omega _c=\frac{v_c}{d_c}=\frac{v_c\cos \alpha _c}{d_c\cos \alpha _c}=\frac{v_{cx}}{d_{cy}}

    \omega _c=\frac{v_c}{d_c}=\frac{v_c\sin \alpha _c}{d_c\sin \alpha _c}=\frac{v_{cy}}{d_{cx}}

    刚体旋转时,各个位置的角速度与质心处的角速度是一样的,即四个轮子绕ICR旋转的角速度也是\omega _{c}。按照上式推理,同样可以得到以下约束关系式:

    \omega _c=\frac{v_i}{d_i}=\frac{v_i\cos \alpha _i}{d_i\cos \alpha _i}=\frac{v_{ix}}{d_{ix}}

    \omega _c=\frac{v_i}{d_i}=\frac{v_i\sin \alpha _i}{d_i\sin \alpha _i}=\frac{v_{iy}}{d_{iy}}

    同时,d_{i}与d_{c}在x轴和y轴上的投影长度满足下式关系:

    d_{1y}=d_{2y}=d_{cy}-\frac{c}{2}

    d_{3y}=d_{4y}=d_{cy}+\frac{c}{2}

    当四轮差速底盘设定的左轮、游轮速度分别为v_{l}和v_{r},且前轮、后轮速度严格同步时,有下式所示关系:

    v_l=v_{1x}=v_{2x}

    v_r=v_{3x}=v_{4x}

    综合上式可以得到以下结果:

    v_l=v_{1x}=v_{2x}=\omega _c\left( d_{cy}-\frac{c}{2} \right) =v_{cx}-\omega _c\cdot \frac{c}{2}

    v_r=v_{3x}=v_{4x}=\omega _c\left( d_{cy}+\frac{c}{2} \right) =v_{cx}+\omega _c\cdot \frac{c}{2}

    将上式整理后,得到四轮差速底盘的前向运动学关系:

    \left[ \begin{array}{c} v_{cx}\\ \omega _z\\ \end{array} \right] =\left[ \begin{matrix} \frac{1}{2}& \frac{1}{2}\\ -\frac{1}{c}& \frac{1}{c}\\ \end{matrix} \right] \left[ \begin{array}{c} v_l\\ v_r\\ \end{array} \right]

    参考博客:移动机器人运动模型(两轮、四轮、麦克纳姆轮和概率运动)_anthony-36的博客-CSDN博客_移动机器人运动模型


    二、麦克纳姆轮运动学模型

     已知车中心的xy方向线速度v_{tx}、v_{ty}和角速度\omega,可以计算出每个轮子的中心速度:

    \vec{v}=\vec{v}_t+\vec{v}_r=\vec{v}_t+\vec{\omega}\times \vec{r}

    那么轮子中心的xy方向速度分量为:

    v_x=v_{tx}-v_{rx}=v_{tx}-v_r\cos \theta =v_{tx}-v_r\frac{r_y}{r}=v_{tx}-\omega r_y

    v_y=v_{ty}+v_{ry}=v_{ty}+v_r\sin \theta =v_{ty}+v_r\frac{r_x}{r}=v_{ty}+\omega r_x

    根据轮子中心的速度,可以分解为沿辊子方向速度和垂直辊子方向速度,垂直辊子方向速度可以不记,\underset{u}{\rightarrow}是沿辊子方向的单位向量(投影),可以得到:

    \vec{v}_{||}=\vec{v}\cdot \vec{u}

    辊子方向与x轴方向夹角为45°,则单位向量可以表示为:

    \vec{u}=-\frac{1}{\sqrt{2}}\vec{i}+\frac{1}{\sqrt{2}}\vec{j}

    则有:

    v_{||}=\vec{v}\cdot \vec{u}=\left( \vec{v}_x\vec{i}+\vec{v}_y\vec{j} \right) \cdot \left( -\frac{1}{\sqrt{2}}\vec{i}+\frac{1}{\sqrt{2}}\vec{j} \right)

    化简后得到:

    \vec{v}_{||}=-\frac{1}{\sqrt{2}}v_x+\frac{1}{\sqrt{2}}v_y

    然后从与地面接触的辊子速度到轮子线转速:

    v_v=v_{||}\cdot \sqrt{2}=-v_x+v_y

    代入上述v_{x}、v_{y}计算公式得:

    v_v=-\left( v_{tx}-\omega r_y \right) +\left( v_{ty}+\omega r_x \right) =v_{ty}-v_{tx}+\omega \left( r_x+r_y \right)

     依次可得四个轮子的计算公式:

    \left\{ \begin{array}{l} v_{v1}=v_{ty}-v_{tx}+\omega \left( r_x+r_b \right)\\ v_{v2}=v_{ty}+v_{tx}-\omega \left( r_x+r_b \right)\\ v_{v3}=v_{ty}-v_{tx}-\omega \left( r_x+r_b \right)\\ v_{v4}=v_{ty}+v_{tx}+\omega \left( r_x+r_b \right)\\ \end{array} \right.

    式中r_{x}、r_{y}是车身横向距离和纵向距离的一半

    参考博客:一文读懂麦克纳姆轮全向移动原理及剖析_苏守坤的博客-CSDN博客_麦克纳姆轮原理

    在小车横向距离和纵向距离相近时,麦轮的运动学模型会退化成四轮差速小车的运动学模型,y方向的速度为0,r_{x}、r_{y}相等,看一下公式就推出来了。


    三、两轮差速运动学模型

    运动特性为两轮差速驱动,其底部后方两个同构驱动轮的转动为其提供动力,前方的随动轮起支撑作用并不推动其运动,两轮差速驱动如下图所示。

     它的解算是要达到下图所示目的:

    给定前进速度和角速度,计算出左右轮的速度。

    根据高中所学的线速度角速度公式,可得:

    v_1=v_c+\omega \frac{d}{2}

    v_2=v_c-\omega \frac{d}{2}

    参考博客:两轮差速机器人运动学模型_奔驰的战猪的博客-CSDN博客_两轮差速模型


    总结

    感谢CSDN各位大佬,让菜鸡又学到了知识

  • 相关阅读:
    安装指定版本nodejs
    Java文件前后端上传下载工具类
    java题库——认证考试题1
    Spark SQL结构化数据文件处理
    使用git时,错误集锦
    Vue3项目关于轮播图的封装应该怎么封装才是最简单的呢
    代码复现——gradle项目
    多种多模态图像融合方法
    【SQL刷题】Day13----SQL分组数据专项练习
    SpringBoot的静态资源访问问题
  • 原文地址:https://blog.csdn.net/qq_52785580/article/details/125995617
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号