移动机器人的运动学模型:车式移动机器人
车式移动机器人运动学模型
问题
车式移动机器人更具有普遍意义。

参数
- v v v:机器人自身线速度
- ω \omega ω:前轮转向角速度
- u \textbf{u} u:输入,包括 v v v, ω \omega ω
- q ˙ \dot{\textbf{q}} q˙:机器人在环境中的位姿描述
- θ \theta θ:机器人纵向轴与x轴之间的夹脚
- ϕ \phi ϕ:前轮转角
- L L L:车身长度
推导1
当知道机器人自身前进速度和前轮转角角速度时,求机器人在环境中的位姿。
q ˙ \dot{\textbf{q}} q˙= f ( u ) f(\textbf{u}) f(u)
定义机器人在环境中位姿:
q = [ x y θ ϕ ] \textbf{q}=\left [ \begin{aligned} x \\ y \\ \theta \\ \phi \end{aligned} \right] q=⎣⎢⎢⎢⎢⎡xyθϕ⎦⎥⎥⎥⎥⎤
机器人输入,包括自身线速度和前轮转角角速度:
u = [ v ω ] \textbf{u}=\left [ \begin{aligned} v \\ \omega \\ \end{aligned} \right] u=[vω]
而
x ˙ = cos ( θ ) v y ˙ = sin ( θ ) v ϕ ˙ = ω \begin{aligned} \dot{x} &= \cos(\theta) v \\ \dot{y} &= \sin(\theta) v\\ \dot{\phi} &= \omega \end{aligned} x˙y˙ϕ˙=cos(θ)v=sin(θ)v=ω
对与计算角速度可以参照下图(其他地方扣过来的,注意符号使用不太一样)

就有了 θ ˙ = tan ϕ L v \dot{\theta} = \frac{\tan\phi}{L} v θ˙=Ltanϕv
那么,
q ˙ = [ cos ( θ ) 0 sin ( θ ) 0 tan ϕ L 0 0 1 ] u \dot{\textbf{q}}= \begin{aligned} \begin{bmatrix} \cos(\theta) & 0 \\ \sin(\theta) & 0 \\ \frac{\tan\phi}{L} & 0 \\ 0 & 1 \end{bmatrix} \end{aligned} \textbf{u} q˙=⎣⎢⎢⎡cos(θ)sin(θ)Ltanϕ00001⎦⎥⎥⎤u
更详细的,即:
[ x ˙ y ˙ θ ˙ ϕ ˙ ] = [ cos ( θ ) 0 sin ( θ ) 0 tan ϕ L 0 0 1 ] [ v ω ] \left [ \begin{aligned} \dot{x} \\ \dot{y} \\ \dot{\theta} \\ \dot{\phi} \end{aligned} \right]= \begin{aligned} \begin{bmatrix} \cos(\theta) & 0 \\ \sin(\theta) & 0 \\ \frac{\tan\phi}{L} & 0 \\ 0 & 1 \end{bmatrix} \end{aligned} \left [ \begin{aligned} v \\ \omega \\ \end{aligned} \right] ⎣⎢⎢⎢⎢⎡x˙y˙θ˙ϕ˙⎦⎥⎥⎥⎥⎤=⎣⎢⎢⎡cos(θ)sin(θ)Ltanϕ00001⎦⎥⎥⎤[vω]
推导2
另一种情况是,知道机器人的前轮转角角度(即方向盘角度)和加速度(即油门),想要求机器人的状态。
- v v v:机器人自身线速度(前进速度)
- θ \theta θ:机器人纵向轴与x轴之间的夹脚
- u \textbf{u} u:输入,包括 v v v, θ \theta θ
- q ˙ \dot{\textbf{q}} q˙:机器人在环境中的位姿描述
- ϕ \phi ϕ:前轮转角
- L L L:车身长度
机器人的状态
q = [ x y θ v ] T \textbf{q}=\left [ \begin{aligned} x \\ y \\ \theta \\ v \end{aligned} \right]^T q=⎣⎢⎢⎢⎢⎡xyθv⎦⎥⎥⎥⎥⎤T
机器人输入,包括(油门)加速度和(方向盘)前轮转角:
u = [ a ϕ ] \textbf{u}=\left [ \begin{aligned} a \\ \phi \\ \end{aligned} \right] u=[aϕ]
那么,
x ˙ = v ∗ cos ( θ ) y ˙ = v ∗ sin ( θ ) θ ˙ = v ∗ tan ( ϕ ) / L v ˙ = a \begin{aligned} \dot{x} &= v * \cos (\theta)\\ \dot{y} &= v * \sin (\theta)\\ \dot{\theta} &= v * \tan(\phi) / L \\ \dot{v} &= a \end{aligned} x˙y˙θ˙v˙=v∗cos(θ)=v∗sin(θ)=v∗tan(ϕ)/L=a
更进一步单步更新可以表示为:
x t + 1 = x t + v ∗ cos ( θ ) ∗ d t y t + 1 = y t + v ∗ sin ( θ ) ∗ d t θ t + 1 = θ t + v ∗ tan ( ϕ ) / L ∗ d t v t + 1 = v t + a ∗ d t \begin{aligned} x_{t+1} &= x_{t} + v * \cos (\theta) * dt\\ y_{t+1} &= y_{t} + v * \sin (\theta)* dt\\ \theta_{t+1} &= \theta_{t} + v * \tan(\phi) / L*dt\\ v_{t+1} &= v_{t} + a * dt \end{aligned} xt+1yt+1θt+1vt+1=xt+v∗cos(θ)∗dt=yt+v∗sin(θ)∗dt=θt+v∗tan(ϕ)/L∗dt=vt+a∗dt
Reference
- https://blog.csdn.net/qq_40870689/article/details/87971282
- http://www.cs.cmu.edu/~rasc/Download/AMRobots3.pdf
- Autonomous Robots Modeling, Path Planning, and Control
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
