摘要: 原創博客:轉載請標明出處:http://www.cnblogs.com/zxouxuewei/
好長時間沒有更新博客了,今天給大家分享福利,三輪的全向輪運動學正解。機器人控制的基礎是運動學分析,利用運動學分析,可以得出機器人運動過程中各類參數的變化規律和相互之間的關系,
采用控制系統對這些參數進行控制,才能設計出正確合理的控制系統。
一,首先車輪的安裝方式決定了你的運動學模型。首先我的安裝方式為120度安裝,如下圖安裝:
在運動建模之前,為簡化運動學數學模型,做下列幾種理想化假設:
(1)全向輪不與地面打滑,同時地面有足夠摩擦力;
(2)電機軸線中心正是底盤重心;
(3)三個全向輪中心處於同上。
二。在以上條件成立的情況下,機器人運動分析如圖所示。
。
其中:α為yr與輪子的夾角,L1、L2、L3為各全向輪中心與底盤中心的距離,v1、v2、v3為第(i=1,2,3)個車輪中心的線速度。根據平面運動速度分解合成關系,可建立如下方程:
式中,為機器人的角速度,設逆時針方向為正; L1、L2、L3分別為機器人中心到某一時刻各輪子與地面接觸點之間距離;vx、vy為機器人相對於車體中心的速度。 為計算方便將L1、L2、L3取近似平均值L, 根據實際結構可知α=30°。同時,車輪的速度瞬心即車輪與地面接觸點,可知vi=rω (i=1,2,3)。另外,為簡化計算公式,在建立相對坐標系時取θ=0°,將α=30°、θ=0°帶入公式1中,可以得到如公式2所示的最終機器人運動學模型:
3.然后可以證明看看機器人在x,y,z方向上運動的模型
證明完成后:控制的底層函數代碼如下:
#define VX_VALUE (0.5f) #define VY_VALUE (sqrt(3)/2.f) #define L_value (20*0.01f) #define RADIUS_value (1.0/12.5*0.01f) void Speed_Moto_Control(float vx,float vy,float vz) { motor_one = (-VX_VALUE*vx + VY_VALUE*vy + L_value*vz); motor_two = (-VX_VALUE*vx - VY_VALUE*vy + L_value*vz); motor_there = (vx + L_value*vz); }