三种常见的移动底盘运动学模型分析

目录

前言

一、四轮差速运动模型

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

三、两轮差速运动学模型

总结


前言

现在大三暑假,开学就要着手准备毕设了,接手了实验室师兄的激光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各位大佬,让菜鸡又学到了知识

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/56869.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

菜鸡学Unity 之 坑神之路 (记录坑点,不断更新中~)

LZ-Says:万事儿开头难,枪在手,不得不发~ 前言 最近在了解Unity这块的内容,不得不说,新的领域,陌生的代码世界,初入茅庐,太多的陌生与不适,唯有咬紧牙关,坚持…

如何从零学习游戏开发

如何做游戏?从哪里开始学习?找工作需要会哪些东西?我已经工作只想业余时间做游戏该学什么?不知道你是不是和当初的我一样有很多困惑。根据我自身的经验带你去了解如何开始学习游戏开发。 我目前已经 工作2年了,大学时期…

菜鸡学Unity 之 Unity中的坐标系(世界坐标系和局部坐标系)

LZ-Says:哎呦喂,时间,时间,慢点过~ 前言 Today,一起来了解下在Unity中的坐标系。 首先,我们要清楚的是,在Unity中,坐标系分为俩种: 世界坐标系;局部坐标系…

菜鸡学Unity 之 汇总撸码过程中遇到的低级错误(一)

LZ-Says:不畏艰难,一起干!!! 前言 对于任何一门新接触的语言,我们总会因为不熟悉从而导致犯一些基本的低级错误,对于错误,我们要秉承拥抱的态度,遇到的越多,…

菜鸡学Unity 之 Unity中对游戏物体的常用操作旋转移动放缩

LZ-Says:愿时光依旧,美好前方~ 前言 本小节,我们一起来看下Unity中对游戏物体的常用操作旋转移动放缩这些基本骚操作吧~ 基本骚操作 全程都可以简单操纵鼠标完成,当然,直接有效是直接设置数值喽~ 鼠标控制完成基本…

菜鸡学Unity 之 Unity中的基本模型和场景操作

LZ-Say:努力,只是为了有个更好的未来~ 前言 如果我们要做一个3D游戏,那么就会需要一些模型,而模型的设计工具有玛雅,3D MAX,通常由美工和专业人员为我们设计好模型,然后导入Unity&#xff0c…

菜鸡学Unity 之 了解 Unity 中的五个视图窗口

LZ-Says:书山有路勤为径,学海无涯苦作舟~ 简述 本文作为Unity学习的第四篇博文,诣在通过简单了解本质,说白了,让我们一起一步步的熟悉Unity的使用,其次愉快的开启我们的撸码之路。 而今天,我们…

潘云鹤院士获吴文俊人工智能最高成就奖!第十一届“吴文俊人工智能科学技术奖”揭晓...

来源:中国人工智能学会 文章整理:自央视新闻、北京日报 链接: https://content-static.cctvnews.cctv.com/snow-book/video.html?item_id7729020039002188616&t1657962648440&toc_style_idvideo_default&share_towechat&tra…

程序员用300行代码,让外婆实现语音搜索购物

“阿强,手写板怎么又不见了?” 最近,程序员阿强的那位勇于尝试新事物的外婆,又迷上了网购。在不太费劲儿地把购物软件摸得门儿清之后,没想到,本以为顺畅的网购之路,卡在了搜索物品上。 在手写…

Android App开发语音处理之系统自带的语音引擎、文字转语音、语音识别的讲解及实战(超详细 附源码)

需要源码请点赞关注收藏后评论区留下QQ~~~ 一、系统自带的语音引擎 语音播报的本质是将书面文字转换成自然语言的音频流,这个转换操作被称作语音合成,又称TTS(从文本到语音)在转换过程中,为了避免机械合成的呆板和停顿…

自动聊天挂机项目

三木智能聊天云控脚本

拼多多顶级佣金助手-微信群自动发单

注意:微信版本必须使用软件根目录下的安装包安装 1.进入多多进宝网站-注册多多进宝-并创建推广位... 2.打开软件点击-多多授权-授权页面-授权成功会跳转百度,复制百度地址栏code后面的code码... 3.粘贴到软件CODE输入框-点击-确定授权... 4.推广位ID框中出现你自…

30行python代码实现微信自动陪女盆友聊天(itchat-uos + 无限制调用)

先放代码: 再放个文字的(方便复制): import itchat import requestsdef get_reply(keyword):try:url f"https://open.drea.cc/bbsapi/chat/get?keyWord{keyword}&userNametype%3Dbbs"res requests.get(url)data…

[做初中数学题做到打起来了]跟同事为了他小孩的数学题杠上了

✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。 🍎个人主页:小嗷犬的博客 🍊个人信条:为天地立心,为生民立命,为往圣继绝学,…

Whatsapp有效号码筛选 – 号码过滤器 | 电话号码过滤筛选 |配合 Whatsapp营销协议群发软件

Whatsapp号码过滤器能进行快速电话号码过滤筛选,过滤已开通whatsapp号码有效性,精准筛选出有用的whatsapp号码。Whatsapp号码筛选器可与各类Whatsapp群发软件、电话号码采集软件搭配使用,有助于辨识有效Whatsapp号码,过滤无效号码…

网络流量pcap包特征提取并保存

前言 新手写博客,写博客主要目的是为了记录自己做项目的一些过程。关于网络流量项目,刚开始做项目一个月左右,所写的博客必然有很多不足的地方,欢迎大家交流和指教。 获取pcap包 pcap包特征提取第一步是要获得pcap包。pcap一般…

TCP、UDP数据包大小的限制

一、概述 首先要看TCP/IP协议,涉及到四层:链路层,网络层,传输层,应用层。    其中以太网(Ethernet)的数据帧在链路层    IP包在网络层    TCP或UDP包在传输层    TCP或UDP中的数据&…

为程序员准备的英语学习资料

程序员学习英语有用吗?当然有用,而且有很大用! 当我们浏览StackOverFlow的时候,当我们和外国技术大牛交流的时候,当我们去面试FLAG(Facebook,LinkedIn,Amazon,Google&…

黑马程序员python培训PDF下载

在分享资源之前,大家可以先想清楚未来的职业发展方向。毕竟只有找到未来职业发展方向,才更清楚当下重点学习的内容。 根据上图我们基本上一目了然,找到自己未来要发展的方向。在找到之后可以在各个招聘app上了解一下相关岗位的技能要求是什么…

黑马程序员7

算数运算符重载 运算符重载概念:对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型 加号运算符 通过自己写函数,实现两个对象相加属性后返回新的对象 两种方式重载 成员函数方式重载 全局函数重载 上来 perso…