师五喜,王栋伟,李宝全.多机器人领航-跟随型编队控制[J].天津工业大学学报,2018,37(02):72-78.

1 机器人模型及问题描述

1.1 领航者运动学模型

在这里插入图片描述

作者给出了如下动力学模型方程式:
[ x ˙ y ˙ z ˙ ] = [ cos ⁡ θ 0 sin ⁡ θ 0 0 1 ] [ v ( t ) ω ( t ) ] (1) \left[\begin{matrix} \dot{x} \\ \dot{y} \\ \dot{z} \\ \end{matrix}\right]= \left[\begin{matrix} \cos \theta & 0 \\ \sin \theta & 0 \\ 0 & 1 \\ \end{matrix}\right] \left[\begin{matrix} v(t) \\ \omega(t) \\ \end{matrix}\right] \tag{1} x˙y˙z˙=cosθsinθ0001[v(t)ω(t)](1)

展开方便理解
{ x ˙ = cos ⁡ θ ⋅ v ( t ) y ˙ = sin ⁡ θ ⋅ v ( t ) θ ˙ = ω ( t ) \left\{\begin{aligned} \dot{x} &= \cos \theta \cdot v(t) \\ \dot{y} &= \sin \theta \cdot v(t) \\ \dot{\theta} &= \omega(t) \\ \end{aligned}\right. x˙y˙θ˙=cosθv(t)=sinθv(t)=ω(t)

1.2 跟随者运动学模型

符号说明:
R F R_F RF:跟随者机器人
L F L_F LF:领航者机器人
v L v_L vL:领航者机器人的线速度
ω L \omega_L ωL:领航者机器人的角速度
θ L \theta_L θL:领航者机器人的线速度与水平方向的夹角
v F v_F vF:跟随者机器人的线速度
ω F \omega_F ωF:跟随者机器人的角速度
θ F \theta_F θF:跟随者机器人的线速度与水平方向的夹角
λ L − F \lambda_{L-F} λLF:两机器人参考点之间的距离
φ L − F \varphi_{L-F} φLF:领航者机器人前进方向与两机器人参考点连线的夹角

λ L − F d \lambda_{L-F}^d λLFd:最终目标
φ L − F d \varphi_{L-F}^d φLFd:最终目标


在世界坐标系中,虚拟机器人( V V V)与领航者( L L L)之间的位置关系为:

在这里插入图片描述

注意这里要明确一个事情,就是跟随者最终要达到的位置是虚拟机器人的位置,并不是达到领航机器人的位置,这一点要注意。

{ x V = x L + λ L − F d   cos ⁡ ( φ L − F d + θ L ) y V = y L + λ L − F d   sin ⁡ ( φ L − F d + θ L ) θ V = θ L (2) \left\{\begin{aligned} x_V &= x_L + \lambda_{L-F}^d ~\cos(\varphi_{L-F}^{d} + \theta_L) \\ y_V &= y_L + \lambda_{L-F}^d ~\sin(\varphi_{L-F}^{d} + \theta_L) \\ \theta_V &= \theta_L \\ \end{aligned}\right. \tag{2} xVyVθV=xL+λLFd cos(φLFd+θL)=yL+λLFd sin(φLFd+θL)=θL(2)

跟随者( F F F)与领航者( L L L)之间的位置关系为:
在这里插入图片描述

{ x F = x L + λ L − F   cos ⁡ ( φ L − F + θ L ) y F = y L + λ L − F   sin ⁡ ( φ L − F + θ L ) θ F = θ L − F (3) \left\{\begin{aligned} x_F &= x_L + \lambda_{L-F} ~\cos(\varphi_{L-F} + \theta_L) \\ y_F &= y_L + \lambda_{L-F} ~\sin(\varphi_{L-F} + \theta_L) \\ \theta_F &= \theta_{L-F} \\ \end{aligned}\right. \tag{3} xFyFθF=xL+λLF cos(φLF+θL)=yL+λLF sin(φLF+θL)=θLF(3)


虚拟机器人( V V V)与跟随者之间( F F F)的表达式为:

在这里插入图片描述

{ x e = x V − x F y e = y V − y F θ e = θ V − θ F (4) \left\{\begin{aligned} x_e &= x_V - x_F \\ y_e &= y_V - y_F \\ \theta_e &= \theta_{V} - \theta_{F} \\ \end{aligned}\right. \tag{4} xeyeθe=xVxF=yVyF=θVθF(4)

通过转移矩阵,将其转换到跟随者机器人( F F F)自身的坐标系 x F − y F x_F - y_F xFyF 下的误差表达式为:

在这里插入图片描述

[ e x e y e θ ] = [ cos ⁡ θ F sin ⁡ θ F 0 − sin ⁡ θ F cos ⁡ θ F 0 0 0 1 ] [ x e y e θ e ] (5) \left[\begin{matrix} e_x \\ e_y \\ e_\theta \\ \end{matrix}\right]= \left[\begin{matrix} \cos \theta_F & \sin \theta_F & 0 \\ -\sin \theta_F & \cos \theta_F & 0 \\ 0 & 0 & 1 \\ \end{matrix}\right] \left[\begin{matrix} x_e \\ y_e \\ \theta_e \\ \end{matrix}\right] \tag{5} exeyeθ=cosθFsinθF0sinθFcosθF0001xeyeθe(5)

还是展开一下多一层理解:
{ e x = cos ⁡ ( θ F ) x e + sin ⁡ ( θ F ) y e e y = − sin ⁡ ( θ F ) x e + cos ⁡ ( θ F ) y e e θ = θ e \left\{\begin{aligned} e_x &= \cos (\theta_F) x_e + \sin(\theta_F) y_e \\ e_y &= -\sin (\theta_F) x_e + \cos(\theta_F) y_e \\ e_\theta &= \theta_e \\ \end{aligned}\right. exeyeθ=cos(θF)xe+sin(θF)ye=sin(θF)xe+cos(θF)ye=θe

继续反推回去:
{ e x = cos ⁡ ( θ F ) x e + sin ⁡ ( θ F ) y e = cos ⁡ ( θ F ) ( x V − x F ) + sin ⁡ ( θ F ) ( y V − y F ) e y = − sin ⁡ ( θ F ) x e + cos ⁡ ( θ F ) y e = − sin ⁡ ( θ F ) ( x V − x F ) + cos ⁡ ( θ F ) ( y V − y F ) e θ = θ e = θ V − θ F \left\{\begin{aligned} e_x &= \cos (\theta_F) x_e + \sin(\theta_F) y_e \\ &= \cos (\theta_F) (x_V - x_F) + \sin(\theta_F) (y_V - y_F) \\ e_y &= -\sin (\theta_F) x_e + \cos(\theta_F) y_e \\ &= -\sin (\theta_F) (x_V - x_F) + \cos(\theta_F) (y_V - y_F) \\ e_\theta &= \theta_e \\ &= \theta_V - \theta_F \\ \end{aligned}\right. exeyeθ=cos(θF)xe+sin(θF)ye=cos(θF)(xVxF)+sin(θF)(yVyF)=sin(θF)xe+cos(θF)ye=sin(θF)(xVxF)+cos(θF)(yVyF)=θe=θVθF


{ x F = x L + λ L − F   cos ⁡ ( φ L − F + θ L ) y F = y L + λ L − F   sin ⁡ ( φ L − F + θ L ) θ F = θ L − F (3) \left\{\begin{aligned} x_F &= x_L + \lambda_{L-F} ~\cos(\varphi_{L-F} + \theta_L) \\ y_F &= y_L + \lambda_{L-F} ~\sin(\varphi_{L-F} + \theta_L) \\ \theta_F &= \theta_{L-F} \\ \end{aligned}\right. \tag{3} xFyFθF=xL+λLF cos(φLF+θL)=yL+λLF sin(φLF+θL)=θLF(3)

{ x e = x V − x F y e = y V − y F θ e = θ V − θ F (4) \left\{\begin{aligned} x_e &= x_V - x_F \\ y_e &= y_V - y_F \\ \theta_e &= \theta_{V} - \theta_{F} \\ \end{aligned}\right. \tag{4} xeyeθe=xVxF=yVyF=θVθF(4)

[ e x e y e θ ] = [ cos ⁡ θ F sin ⁡ θ F 0 − sin ⁡ θ F cos ⁡ θ F 0 0 0 1 ] [ x e y e θ e ] (5) \left[\begin{matrix} e_x \\ e_y \\ e_\theta \\ \end{matrix}\right]= \left[\begin{matrix} \cos \theta_F & \sin \theta_F & 0 \\ -\sin \theta_F & \cos \theta_F & 0 \\ 0 & 0 & 1 \\ \end{matrix}\right] \left[\begin{matrix} x_e \\ y_e \\ \theta_e \\ \end{matrix}\right] \tag{5} exeyeθ=cosθFsinθF0sinθFcosθF0001xeyeθe(5)

将式(3)(4)代入到(5)中得:(这里借用了式子(2))
e x = cos ⁡ ( θ F ) ( x V − x F ) + sin ⁡ ( θ F ) ( y V − y F ) = cos ⁡ ( θ F ) ( x V − x L − λ L − F cos ⁡ ( φ L − F + θ L ) ) + sin ⁡ ( θ F ) ( y V − y L − λ L − F sin ⁡ ( φ L − F + θ L ) ) = cos ⁡ ( θ F ) ( x L + λ L − F d   cos ⁡ ( φ L − F d + θ L ) − x L − λ L − F cos ⁡ ( φ L − F + θ L ) ) + sin ⁡ ( θ F ) ( y L + λ L − F d   sin ⁡ ( φ L − F d + θ L ) − y L − λ L − F sin ⁡ ( φ L − F + θ L ) ) = cos ⁡ ( θ F ) ( λ L − F d   cos ⁡ ( φ L − F d + θ L ) − λ L − F cos ⁡ ( φ L − F + θ L ) ) + sin ⁡ ( θ F ) ( λ L − F d   sin ⁡ ( φ L − F d + θ L ) − λ L − F sin ⁡ ( φ L − F + θ L ) ) = λ L − F d   cos ⁡ ( φ L − F d + θ L ) cos ⁡ ( θ F ) − λ L − F cos ⁡ ( φ L − F + θ L ) cos ⁡ ( θ F ) + λ L − F d   sin ⁡ ( φ L − F d + θ L ) sin ⁡ ( θ F ) − λ L − F sin ⁡ ( φ L − F + θ L ) sin ⁡ ( θ F ) = λ L − F d   cos ⁡ ( φ L − F d + θ L ) cos ⁡ ( θ F ) + λ L − F d   sin ⁡ ( φ L − F d + θ L ) sin ⁡ ( θ F ) − λ L − F cos ⁡ ( φ L − F + θ L ) cos ⁡ ( θ F ) − λ L − F sin ⁡ ( φ L − F + θ L ) sin ⁡ ( θ F ) = λ L − F d   ( cos ⁡ ( φ L − F d + θ L ) cos ⁡ ( θ F ) +   sin ⁡ ( φ L − F d + θ L ) sin ⁡ ( θ F ) ) − λ L − F ( cos ⁡ ( φ L − F + θ L ) cos ⁡ ( θ F ) + sin ⁡ ( φ L − F + θ L ) sin ⁡ ( θ F ) ) \begin{aligned} e_x =& \cos (\theta_F) (x_V - x_F) + \sin(\theta_F) (y_V - y_F) \\ =& \cos (\theta_F) (x_V - x_L- \lambda_{L-F} \cos(\varphi_{L-F} + \theta_L)) \\ &+ \sin(\theta_F) (y_V - y_L - \lambda_{L-F} \sin(\varphi_{L-F} + \theta_L)) \\ =& \cos (\theta_F) (x_L + \lambda_{L-F}^d ~\cos(\varphi_{L-F}^{d} + \theta_L) - x_L- \lambda_{L-F} \cos(\varphi_{L-F} + \theta_L)) \\ &+ \sin(\theta_F) (y_L + \lambda_{L-F}^d ~\sin(\varphi_{L-F}^{d} + \theta_L) - y_L - \lambda_{L-F} \sin(\varphi_{L-F} + \theta_L)) \\ =& \cos (\theta_F) (\lambda_{L-F}^d ~\cos(\varphi_{L-F}^{d} + \theta_L) - \lambda_{L-F} \cos(\varphi_{L-F} + \theta_L)) \\ &+ \sin(\theta_F) (\lambda_{L-F}^d ~\sin(\varphi_{L-F}^{d} + \theta_L) - \lambda_{L-F} \sin(\varphi_{L-F} + \theta_L)) \\ =& \lambda_{L-F}^d ~\cos(\varphi_{L-F}^{d} + \theta_L) \cos (\theta_F) - \lambda_{L-F} \cos(\varphi_{L-F} + \theta_L) \cos (\theta_F) \\ &+ \lambda_{L-F}^d ~\sin(\varphi_{L-F}^{d} + \theta_L) \sin(\theta_F) - \lambda_{L-F} \sin(\varphi_{L-F} + \theta_L) \sin(\theta_F) \\ =& \lambda_{L-F}^d ~\cos(\varphi_{L-F}^{d} + \theta_L) \cos (\theta_F) + \lambda_{L-F}^d ~\sin(\varphi_{L-F}^{d} + \theta_L) \sin(\theta_F) \\ &- \lambda_{L-F} \cos(\varphi_{L-F} + \theta_L) \cos (\theta_F)- \lambda_{L-F} \sin(\varphi_{L-F} + \theta_L) \sin(\theta_F) \\ =& \lambda_{L-F}^d ~(\cos(\varphi_{L-F}^{d} + \theta_L) \cos (\theta_F) + ~\sin(\varphi_{L-F}^{d} + \theta_L) \sin(\theta_F)) \\ &- \lambda_{L-F} ( \cos(\varphi_{L-F} + \theta_L) \cos (\theta_F)+ \sin(\varphi_{L-F} + \theta_L) \sin(\theta_F)) \\ \end{aligned} ex=======cos(θF)(xVxF)+sin(θF)(yVyF)cos(θF)(xVxLλLFcos(φLF+θL))+sin(θF)(yVyLλLFsin(φLF+θL))cos(θF)(xL+λLFd cos(φLFd+θL)xLλLFcos(φLF+θL))+sin(θF)(yL+λLFd sin(φLFd+θL)yLλLFsin(φLF+θL))cos(θF)(λLFd cos(φLFd+θL)λLFcos(φLF+θL))+sin(θF)(λLFd sin(φLFd+θL)λLFsin(φLF+θL))λLFd cos(φLFd+θL)cos(θF)λLFcos(φLF+θL)cos(θF)+λLFd sin(φLFd+θL)sin(θF)λLFsin(φLF+θL)sin(θF)λLFd cos(φLFd+θL)cos(θF)+λLFd sin(φLFd+θL)sin(θF)λLFcos(φLF+θL)cos(θF)λLFsin(φLF+θL)sin(θF)λLFd (cos(φLFd+θL)cos(θF)+ sin(φLFd+θL)sin(θF))λLF(cos(φLF+θL)cos(θF)+sin(φLF+θL)sin(θF))

cos ⁡ ( φ L − F + θ L − θ F ) = cos ⁡ ( φ L − F + θ L ) cos ⁡ ( θ F ) + sin ⁡ ( φ L − F + θ L ) sin ⁡ ( θ F ) \cos(\varphi_{L-F} + \theta_L - \theta_F) = \cos(\varphi_{L-F} + \theta_L) \cos(\theta_F) + \sin(\varphi_{L-F} + \theta_L) \sin(\theta_F) cos(φLF+θLθF)=cos(φLF+θL)cos(θF)+sin(φLF+θL)sin(θF)

[ e x e y e θ ] = [ λ L − F d cos ⁡ ( φ L − F d + e θ ) − λ L − F cos ⁡ ( φ L − F + e θ ) λ L − F d sin ⁡ ( φ L − F d + e θ ) − λ L − F sin ⁡ ( φ L − F + e θ ) θ L − θ F ] (6) \left[\begin{matrix} e_x \\ e_y \\ e_\theta \\ \end{matrix}\right]= \left[\begin{matrix} \lambda_{L-F}^{d} \cos(\varphi_{L-F}^{d} + e_\theta) - \lambda_{L-F} \cos(\varphi_{L-F} + e_\theta) \\ \lambda_{L-F}^{d} \sin(\varphi_{L-F}^{d} + e_\theta) - \lambda_{L-F} \sin(\varphi_{L-F} + e_\theta) \\ \theta_L - \theta_F \\ \end{matrix}\right] \tag{6} exeyeθ=λLFdcos(φLFd+eθ)λLFcos(φLF+eθ)λLFdsin(φLFd+eθ)λLFsin(φLF+eθ)θLθF(6)

求导得:

{ e ˙ x = v L cos ⁡ e θ − v F + ω L λ L − F d sin ⁡ ( φ L − F + e θ ) e ˙ y = v L sin ⁡ e θ − ω F e x + ω L λ L − F d cos ⁡ ( φ L − F + e θ ) e ˙ θ = ω L − ω F (7) \left\{\begin{aligned} \dot{e}_x &= v_L \cos e_\theta - v_F + \omega_L \lambda_{L-F}^{d} \sin(\varphi_{L-F} + e_\theta) \\ \dot{e}_y &= v_L \sin e_\theta - \omega_F e_x + \omega_L \lambda_{L-F}^{d} \cos(\varphi_{L-F} + e_\theta) \\ \dot{e}_\theta &= \omega_L - \omega_F \\ \end{aligned}\right. \tag{7} e˙xe˙ye˙θ=vLcoseθvF+ωLλLFdsin(φLF+eθ)=vLsineθωFex+ωLλLFdcos(φLF+eθ)=ωLωF(7)

注意,式(7)中第三个角度误差的式子,也可以为 e θ = θ L − θ F e_\theta = \theta_L - \theta_F eθ=θLθF

至此,机器人编队控制问题转化为跟随机器人 R F R_F RF 对虚拟机器人 R V R_V RV 的轨迹跟踪问题,即寻找合适的控制律( v F , ω F v_F, \omega_F vF,ωF)使得式(7)描述的闭环系统渐近稳定.

2 控制器设计

设计控制器如下:
v F = v L cos ⁡ e θ + γ v F + ϕ 1 (9) v_F = v_L \cos e_{\theta} + \gamma_{vF} + \phi_1 \tag{9} vF=vLcoseθ+γvF+ϕ1(9)

ω F = ω L + k v L e y 1 + e x 2 + e y 2 + γ ω F + ϕ 2 (10) \omega_F = \omega_L + \frac{k v_L e_y}{\sqrt{1 + e^2_x + e^2_y}} + \gamma_{\omega F} + \phi_2 \tag{10} ωF=ωL+1+ex2+ey2 kvLey+γωF+ϕ2(10)

3 仿真与实验

3.1 仿真

Leader 状态

% Paper: 2018_多机器人领航-跟随型编队控制
% Author: Z-JC
% Data: 2021-11-20
clear
clc


%%
% Leader1's states
xL(1,1)     = 2;
yL(1,1)     = 2;
thetaL(1,1) = 0;
vL = 0.1;
wL = 0.1;

% Parameters
alpha1 = 0.45;
alpha2 = 0.5;
k = 3.0;

% Time states
t(1,1) = 0;
dT = 0.1;

for i=1:999
    % Record Time
    t(1,i+1) = t(1,i) + dT;
    
    % Updta Leader
    thetaL(1,i+1) = thetaL(1,i) + dT * wL;
    xL(1,i+1) = xL(1,i) + dT * vL * cos(thetaL(1,i));
    yL(1,i+1) = yL(1,i) + dT * vL * sin(thetaL(1,i));
    
end



%% 
plot(xL,yL);
xlim([0.5,3.5]); ylim([1.5,4.5]);

在这里插入图片描述

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐