多移动机器人系列(一)-移动机器人运动学模型

本文介绍了移动机器人在不同领域的应用,重点讨论了两轮差速和四旋翼机器人的运动模型,以及如何使用ROS1/2和Python进行控制。文章详细阐述了运动学模型的线性化过程,为单个和集群移动机器人控制奠定了基础。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

系列文章目录

移动机器人跟踪,控制和集群,基于ROS1/ROS2与python实现。



前言

       移动机器人是机器人的一个重要的分支,在无人驾驶、太空探索、海洋勘探和医疗服务等领域得到了广泛的使用。其中轮式移动机器人是一个重要的分支,轮式移动机器人又可以根据驱动方式的不同分为阿克曼结构,两轮差速结构和麦克纳姆轮结构等。       

       随着相关技术的迅猛发展,移动机器人的性能得到了极大地提高。对于一些具有时间分布和空间分布的任务,单个移动机器人具有一定的局限性。通过多个移动机器人相互之间的协作,在处理一些时空分布的任务上表现出极大地优势,多移动机器人已经成为为移动机器人发展的热门领域之一。

        ROS(移动机器人操作系统)的出现极大地加速了移动机器人的开发过程。ROS提供了一个松耦合的框架,提高了代码的复用率,极大地加快了机器人开发的进度。

       在ROS的编程语言中,使用较多的有C++和Python。其中,C++的执行效率会更高一些,适合一些对实时性有要求的场合,例如图像处理领域。Python的开源社区会更好一些,在开源社区中可以找见各种第三方库,开发起来会更方便一些。在本文中,主要使用Python作为开发语言。


一、移动机器人简介

        移动机器人是机器人的一个重要的分支,在。按照运动结构的不同,移动机器人可以分为空中移动机器人,轮式移动机器人,腿足式移动机器人和水下潜航器等。

        在本文中,仅对两轮差速移动机器人和四旋翼移动机器人进行研究。其中两轮差速移动机器人选用Turtlebot3,四旋翼使用PX4。

二、移动机器人运动模型

       移动机器人是机器人的一个重要的分支,在无人驾驶、太空探索、海洋勘探和医疗服务等领域得到了广泛的使用。其中轮式移动机器人是一个重要的分支,轮式移动机器人又可以根据驱动方式的不同分为阿克曼结构,两轮差速结构和麦克纳姆轮结构等。

        从运动学方面完成对移动机器人的控制,运动学到动力学的解算由底层控制器完成,在这里不涉及。我们做如下假设:1 移动机器人做纯滑动无滚动的运动。2 忽略地形对移动机器人的影响。 3 忽略移动机器人运动过程中两轮半径的变化。4 忽略移动机器人执行机构的动态特性。

\left\{\begin{matrix} \dot{x}=vcos\theta\\ \dot{y}=vsin\theta\\ \dot{\theta}=\omega \end{matrix}\right.

三、运动学模型线性化

        在移动机器人的线性控制中,需要对移动机器人的运动学方程进行线性化。线性化可以分为精确线性化和近似线性化。其中近似线性化方法简单,适应范围广,但是精度较低。精确线性化需要根据具体情形进行分析,计算量较大。在这里使用近似线性化。

       选取移动机器人的的状态量为X=[x,y,\theta ]^{T},移动机器人的控制量为u=[v,\omega ]^{T}。用r表示参考轨迹上的任意一点,移动机器人在参考点上的参考状态量X_{r}=[x_{r},y_{r},\theta _{r}]^{T},参考控制量u_{r}=[v_{r},\omega _{r}]^{T}

        为了建立移动机器人的线性化误差方程,在轨迹上的某一参考点r,将移动机器人非线性运动方程表示为更一般的形式。

\dot{X}_{r} = f(X_{r},u_{r})

        在参考点处对移动机器人的运动学方程进行泰勒展开,忽略高阶项,只保留线性项,可以得到:

\dot{X} = f(X_{r},u_{r})+\frac{\partial f(X,u)}{\partial X}|_{X=X_{r},u=u_{r}}(X-X_{r})+\frac{\partial f(X,u)}{\partial u}|_{X=X_{r},u=u_{r}}(u-u_{r})

        其中,雅克比矩阵定义如下:

\frac{\partial f(X,u)}{\partial X}|_{X=X_{r},u=u_{r}}=\begin{bmatrix} 0 &0 &-v_{r}sin\theta _{r} \\ 0 &0 & v_{r}cos\theta _{r} \\ 0 &0 &0 \end{bmatrix}

\frac{\partial f(X,u)}{\partial u}|_{X=X_{r},u=u_{r}}=\begin{bmatrix} cos\theta _{r} &0 \\ sin\theta _{r} &0 \\ 0 &1 \end{bmatrix}

        进一步可以得到:

\bigtriangleup\dot{X}=A_{m} \bigtriangleup X+B_{m}\bigtriangleup u

式中,

\Delta \dot{X}=\begin{bmatrix} \dot{x}-\dot{x}_{r}\\ \dot{y}-\dot{y}_{r}\\ \dot{\theta }-\dot{\theta }_{r} \end{bmatrix}A_{m}=\begin{bmatrix} 0 & 0 & -v_{r}sin\theta _{r}\\ 0& 0& v_{r}cos\theta _{r}\\ 0& 0& 0\end{bmatrix}

\Delta X=\begin{bmatrix} x-x_{r}\\ y-y_{r}\\ \theta-\theta_{r}\\ \end{bmatrix},B_{m}=\begin{bmatrix} cos\theta_{r} &0 \\ sin\theta_{r} &0 \\ 0 &1 \end{bmatrix},\Delta u=\begin{bmatrix} v-v_{r}\\ \omega -\omega _{r} \end{bmatrix}

       至此得到了移动机器人基于误差的连续状态方程,在实际的应用过程中还需要进一步地离散处理,这里采用近似离散化的方式对其进行离散,通过向前欧拉法离散化,可以得到k时刻移动机器人在参考点r的线性化误差方程:

\tilde{x}(k+1)=(I+TA_{m})\tilde{x}(k)+TB_{m}\tilde{u}(k)

式中,T为离散时间间隔,

\left\{\begin{matrix} \tilde{x}=\Delta X(k)\\ \tilde{u}=\Delta u(k) \end{matrix}\right.

将公式进一步简化为:

\tilde{x}(k+1)=A\tilde{x}(k)+B\tilde{u}(k)

式中,A=(I+TA_{m})B=TB_{m}

A_{m}=\begin{bmatrix} 1 & 0 & -v_{r}Tsin\theta _{r}\\ 0 & 1 & v_{r}Tcos\theta _{r}\\ 0 & 0 & 1\end{bmatrix}  ,    B=\begin{bmatrix} Tcos\theta_{r} &0 \\ Tsin\theta_{r} &0 \\ 0& T \end{bmatrix}

        到此得到移动机器人基于误差的连续状态方程,这里采用了近似离散化,在实际的使用过程中,可以根据精度的要求采用数值方法进行更加精确的离散化。


总结

        以上就是本节所讲述的内容,本节讲解了两轮差速驱动的移动机器人的运动学模型,并对非线性模型进行了线性化。在建立了运动学模型后,为后续的单个移动机器人的运动控制与多个移动机器人的运动控制建立了基础。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值