Chinaunix首页 | 论坛 | 博客
  • 博客访问: 53608
  • 博文数量: 38
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 425
  • 用 户 组: 普通用户
  • 注册时间: 2019-04-28 11:41
文章分类
文章存档

2021年(7)

2020年(19)

2019年(12)

我的朋友

分类: IT业界

2019-11-18 11:34:14

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

目前,常见的三轮全向型底盘可分为两种,一种是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

四、示例代码

阅读(665) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~