全向移动
任务目标
移动设备的姿态变化作为控制指令,体感控制机器人实现无头模式运动。
任务流程
为了实现全向移动这一项目,我们需要完成以下三个环节:
学习麦克纳姆轮
基于机器人坐标系的移动控制
基于大地坐标系的移动控制
注意:该项目需要使用移动设备来实现,PC端不支持。
知识点
底盘
移动设备
运算符
数据对象
2学习麦克纳姆轮
本环节目标
学习麦克纳姆轮原理,实现机器人向右前偏30度方向平移。
本环节流程图
对单个麦克纳姆轮进行受力分析
对麦轮底盘进行力的合成与分解
对机器人向某一方 向运动进行力的分析
知识点介绍
1.对单个麦克纳姆轮进行受力分析
对麦克纳姆轮来说,轮毂为主动轮(由电机驱动), 辊子为从动轮(受外力的作用而产生转动),辊子 与轮毂呈45°角。从透视关系看,与地面接触的辊子与从轮子上方观察的辊子方向是轴对称的。而我们所有的分析都是基于与地面接触的小辊子的方向。
让我们进行手滚麦轮小实验。当手推着左旋轮正转时, 左旋轮的受力方向为右上角45度。
当手推着右旋轮正转时,右旋轮的受力方向为左上角45度。
总结来看,单个麦轮的受力方向就是麦轮与地面接触时小辊子的朝向。
2.力的合成与分解
(1 )力的合成
进行相同方向上力的合成,只需要将相同方向的力相加。比如绳子上向右的合力为右侧三个人用的力进行相加。
把不同方向上的力分解到同一方向,上后相加减,得到合力。比如两队势均力敌,左侧三人的力与右侧三人的力相互抵消,则绳子中端受到的合力为0。
(2)力的分解
将一个力分解为两个或两个以上的等效分力, 依据的是力的平行四边形法则。
①
如果我们将一根橡皮筋拉到0点,使用测力计观察力的值;
②
使用两个弹簧测力计,向两边拉动,保持皮筋仍然位于0点,观察测力计的值;
③
再次改变两个弹簧测力计的角度。
这个实验就是将橡皮筋的拉力分解成两个弹簧测力计,上的力。通过多次改变角度,记录测力计数据, 我们可以得出两个力合成时,这两个力的线段为邻边作平行四边形,这两个邻边之间的对角线就代表合力的大小和方向,这就叫做平行四边形定则。
3.对麦克纳姆轮底盘进行受力分析
我们以俯视视角观察整个机器人,可以发现小辊子的排布呈"X”型。机器人上使用四个麦克纳姆轮,只是安装方式的一种,因为麦轮的特殊结构意味着麦轮是存在多种安装方式的,三角形安装方式同样也可以实现机器人的全向运动。通过学习,我们不仅可以实现四轮式麦克纳姆轮的控制,同时也可以举一反三自己分析出三轮式麦轮底盘的控制方法。
我们从底盘透视下去,四个麦轮与地面接触的小辊子呈"矩形”
俯视时小辊子排布 透视地面接触小辊子 轮子转动时受力方向
●正转时受力的方向
●逆转时受力的方向
因此,我们可以对麦轮不同转动情况进行力的分解与合成,从而可以得出底盘实现平移的原理。
对底盘上的每个麦轮进行受力分解:
对力进行合成:
4.对机器人向某一方 向运动进行力的分析
如果机器人朝向右偏30度方向平移,从力的角度对整机进行分析。(如果底盘只发生平移运动,则底盘对角线上轮子力的大小与方向相同)。
5.三角函数
左前轮与右后轮的受力大小为a/2,右 前轮和左后轮力的受力大小为b/2 , tan15=b/a。四个轮子受力存在这样的数学关系,同理,我们可以对底盘朝向任意方向平移的情况进行受力分析。机器人底盘能够实现全向运动的原因是四个轮子所受的合力可以朝向任意方向。
编程引导
改变速度与角度,实现机器人朝不同方向进行平移。
实现效果
机器人向不同方向运动。
基于机器人坐标系的移动控制
本环节目标使用移动设备,实现对机器人的体感控制。
本环节流程图建立机器人坐标系获取移动设备陀螺仪数据,移动控制
知识点介绍
1.机器人坐标系
为了清楚地对机器人进行控制,我们需要为机器人建立一个坐标系。直角坐标系是机器人常采用的坐标系。
2.
对底盘进行速度解算是基于机器人坐标系的控制,需要进行四个麦轮速度解算。
基于机器人坐标系控制速度解算四个轮子各自的转速
同样我们也可以使用《闪避攻击》章节的“叠加法"来进行速度解算:
输入Y、X、Z值,底盘向指定方向运动。
其实我们将,上述功能进行了封装,可以直接使用下面的模块进行调用。
我们同样可以实现上一环节控制底盘向右前30度方向平移的效果。
3.陀螺仪
陀螺仪也叫角速度传感器,它测量的是偏转、倾斜时的转动角速度。机器人内也装有陀螺仪,用于获取机器人偏转、转动的物理量。
为什么叫做陀螺仪,因为最初捕捉姿态变化的传感器是利用陀螺轴向不变的原理设计的。
在平板设备上,仅用加速度计没办法测量或重构出完整的3D动作测不到转动的动作的,加速度传感器只能检测轴向的线性动作。但陀螺仪则可以对转动、偏转的动作做很好的测量。比如手机横屏的操作,通过陀螺仪捕捉手机横向姿态, 然后手机自动切换显示的方式。
移动设备返回的角度为绝对的角度,所以我们需要进行角度的初始化,即记录点击'运行”时刻的三个轴的角度,移动时实时根据初始角度修正角度数据,使移动设备的坐标系初始化变为0。
编程引导
角度信息前乘以的系数,是为了调节控制机器人运动的速度,增大数值可以使机器人运动更迅速。
实现效果改变移动设备姿态,控制机器人以无头模式运动。
4.基于大地坐标系的移动控制
本环节目标
完成机器人无头模式的编写。
本环节将进行校验,请注意命名规范和参数设置。
本环节流程图使用移动设备陀螺仪数据使用底盘航向轴角度将大地坐标系下的控制信息转换为机器人坐标系下的移动控制
知识点介绍
1.机器人坐标系与大地坐标系
我们都听过刻舟求剑的故事,丟剑人 的可笑之处就是没有分清船体坐标系与大地坐标系。当剑落入湖底后,应该以大地坐标系为参照进行定位与搜索 而不是在船上刻痕,以变化着的船体坐标系做标记。
我们平常所说的机器人向前移动、向右移动等,是基于机器人自身坐标系的运动。而我们根据地图与指南针信息,向南移动或者向北偏东30度方向移动,是基于大地坐标系的运动。大地坐标系:
如果我们将两个不同姿态的机器人放入大地地图中,我们的目标是从起点到达终点。对于A机器人来说应该是向Y轴正半轴移动(机器人向右移动);对于B机器人来说,却是朝向X轴正半轴移动(机器人向前移动)。但是在大地坐标下,机器人到达终点都是应该沿Y_grand正半轴移动。这里就需要根据机器人在大地坐标系下的方向,对机器人的控制进行一个坐标的变换。
2.坐标变换
那么如何将不同坐标系数据进行转换呢?以在绿色坐标系中的P点为例,它在绿色坐标系中的位置为(1,2)。但P点在红色坐标系内坐标为(2,1)
当夹角θ为任意值或者实时变化,我们只知道绿色坐标系下的点P的坐标值,如果想知道点P在红色坐标系下的坐标,我们需 要根据几何关系来获得它们之间的数学关系。
我们以移动设备建立大地坐标系,将坐标变换应用于机器人坐标系当我们改变移动设备俯仰时,机器人无论是什么姿态都可以实现向移动设备前方移动,这种控制模式叫做无头模式,常 应用于无人机控制。
3.无人机的无头模式
如果推动遥控器的向前运动,飞行器总是向它头的方向飞行,那么这个飞行器就是运行在有头模式下。如果推动遥控器的向前飞行,飞行 器即使在飞行的过程中改变了机头方向,它仍然向远离控制者的方向移动,那么这个飞行器运行在无头模式下。
操作引导
1.按下图拖动模块进行编程。
2.底盘航向轴姿态角是以上电时刻开始记录。我们以机器人上电时刻的位置建立大地坐标系。可以将机器人摆放好后进行重启,此时偏航角为0 ;或者手动转动机器人直至偏航角为0。
3.将移动设备平放在机器人后点击运行。
实现效果改变移动设备姿态,, 机器人无头模式进行运动。