主页
产品
应用案例
新闻动态
购买渠道
下载与支持
关于我们
生态合作
联系我们
主页
产品
新闻动态
购买渠道
下载与支持
关于我们
加入我们
联系我们
  • 中文|
  • Eng
  • SLAMWARE解决方案适配三轮全向型底盘说明

     

    在机器人界中,三轮全向型底盘也具有非常广泛的应用,基于SLAMWARE的集成过程中,三轮全向型底盘也存在一定难度,为协助用户集成,本文将做详细说明。

    目前,常见的三轮全向型底盘可分为两种,一种是1个全向轮在前,2个在后(即下图中的a),另一种是2个全向轮在前,1个在后(即下图中的b)

    三轮全向型底盘

    在下面的内容中,将针对这两种常用底盘做一个说明。

    一、定义

    1.机器人坐标系

    所有跟机器人运动有关的计算均在机器人坐标系中进行:

     三轮全向型底盘图1

    如图所示,机器人前进的正前方为x轴正方向,机器人左侧为y轴正方向,机器人的中心点的地面为坐标系的原点(O)

    2.机器人运动控制指令

    SLAMWARE Core模块采用统一的全向速度指令来对机器人进行运动控制,其坐标系如下:

     三轮全向型底盘图2

    机器人往前方移动的速度为Vx,往左方平移的速度为Vy,逆时针旋转的角速度为ω。

    同理,如果需要机器人向后移动,那么Vx为负值;向右移动,Vy为负值;顺时针旋转,则ω为负值。

    这些速度和角速度的计量单位均为公制单位,即分别为米每秒,和弧度每秒。

    注意:角速度的单位是弧度每秒,而非角度每秒,在实际使用中,需要根据实际单位进行换算。

    3.轮组速度定义

    根据轮组布局不同,轮组的速度定义如下图所示

     三轮全向型底盘图3

    Va,Vb和Vc分别表示各个轮子的线速度,以让机器人发生逆时针旋转的方向为正,单位依然是米每秒

    4.机器人位移定义

    SLAMWARE在向底盘下达运动指令的同时,需要底盘上报机器人轮组的位移信息。

    该位移信息由三部分组成,分别是Dx,Dy,Dθ,定义如下:

     三轮全向型底盘图4

    同样的,按照机器人的坐标系,如果机器人向前移动了,则Dx为正,向左移动了,则Dy为正,逆时针旋转了,则Dθ为正。

    对应的每个轮子上的线位移分别是La,Lb,Lc

    二、涉及指令

    针对传统的两轮差动式的底盘,可以直接使用

    SLAMWARECORECB_CMD_GET_BASE_MOTOR_DATA

    和SLAMWARECORECB_CMD_SET_BASE_MOTOR两条指令来操作。

     

    针对其他类型的机器人底盘,涉及到的指令主要是

    SLAMWARECORECB_CMD_SET_V_AND_GET_DEADRECKON指令,即0x41指令。

     

    它的请求报文的内容是:

     所以对应的:

     

    而这个指令的响应报文如下:(由于历史原因,响应报文中dx ,dy的单位是mm, dtheta的单位是度)

    对应的代码如下:

    三、计算公式

    备注:所有公式中的R表示的是机器人的旋转半径,单位是米(也就是轮子距离机器人中心的距离)

    1.速度分解

    将SLAMWARE Core下发的速度指令分解到各个轮子上。

    布局a:1个全向轮在前,2个全向轮在后

    Va = Vy + R * ω

    Vb = - Vx * cos(30°) - Vy * sin(30°) + R * ω

    Vc = Vx * cos(30°) - Vy * sin(30°) + R * ω

    布局b:2个全向轮在前,1个全向轮在后

    Va = - Vy + R * ω

    Vb = Vx * cos(30°) + Vy * sin(30°) + R * ω

    Vc = -Vx * cos(30°) + Vy * sin(30°) + R * ω

    2.里程累积

    当底盘收到上述指令以后,需要首先获得三个轮子在上一次收到这条指令和这一次收到这条指令之间的线位移,分别记作Da,Db,Dc

    布局a:1个全向轮在前,2个全向轮在后

    Dθ = (Da + Db + Dc) / R / 3

    Dx = (- Db * cos(30°) + Dc /  cos(30°)) / 2

    Dy = (- Db * sin(30°) - Dc / sin(30°) + Da) / 3

    布局b:2个全向轮在前,1个全向轮在后

    Dθ = (Da + Db + Dc) / R / 3

    Dx = (Db /  cos(30°) - Dc / cos(30°)) / 2

    Dy = (-Da + Db / sin(30°) + Dc / sin(30°)) / 3

    四、示例代码

    关键字:SLAMWARE,三轮全向型底盘,机器人底盘

    top