自研机器人协调控制系统(3)——遥控篇
前言背景
系统
部分协调动作介绍
站定摇摆
固定身体摆臂
身体跟随摆臂
身体配合双手自动移动
长颈龙模式自动转向
部分遥控按键表

这是视频链接: 自研机器人协调控制系统(3)——遥控篇.
前言背景
前两次视频虽然展示了这套“协调控制系统”具备的各种基本协调能力,但没有远程控制,只能使用测试用的指令队列,始终无法展示抽象指令的完整效果。

因此我决定专门做一下遥控功能,只是最近工作压力确实很大,而且加班也多,耽搁了比较长的时间。我尽可能地争取了一些业余时间,学习遥控手柄的使用方法,并编程实现完整的遥控规则。最近,终于将这个协调系统的大部分功能,整合到了手柄控制下。

本次视频,重点展示这套协调系统在各种模式下,处理随机遥控指令的效果,其中大部分模式和功能,都已经在之前的两个版本中,一一展示和解说。有兴趣的朋友,可以在CSDN和bilibili上搜索用户名“生命浩瀚”找到之前的版本资料。

系统
由于精力实在有限,我始终没有去尝试通过切换编程语言进行加速,所以所有功能依然完全python实现,为配合线程同步,指令每秒更新3次,所以为了不影响观看效果,我对视频进行了2倍的基础加速,部分复杂动作阶段,以及调整阶段,则采用4倍加速。

由于手柄的控制信号维度比较少,很多3维空间的自由度,只能每次选择其中两维来表现,包括3维移动自由度、3维旋转自由度、以及观察点3维坐标自由度等。而相对的,我也配合手柄特点,新增了一些新的协调运动能力。

由于最近陀螺仪在调试中,经常异常报错(没动任何代码又突然好了),我这个硬件小白对这类问题修复毫无头绪,所以录制过程只好关闭陀螺仪功能,确保稳定性。为此我也设计了根据当前角度重置方向的功能,好在整个录制过程,还没有累计出严重的方向偏差,因此也没有启用过重置指令。

视频录制过程中,有几次出现协调性不够理想的情况,我分析认为主要原因是:(1)遥控方式断断续续发送指令引起的协调计算偶尔出现累计错误;(2)加上很多协调动作,都是我超出硬件允许范围设计的。因此经常超出我设定的舵机角度保护范围,导致指令没有很好地协调执行,具体过界原因,我也在后面的介绍中,分别分析了一些可能性。这些问题十分细碎,我预估优化需要很大的时间成本,一个人实在精力有限,因此暂时不考虑优化,直接将这些缺点也展示出来,供大家评鉴。

部分协调动作介绍
站定摇摆

这个动作,展示了左摇杆的两种控制方式“偏航角+俯仰角”和“滚转角+俯仰角”,两种控制方式,分别对应了上一版中“扭腰舞”和“螺旋舞”的方向自由度,通过按键RB进行切换。
配合身体的平移摇摆,可以在站定情况下,做出比较复杂的摇摆动作。

固定身体摆臂

站定情况下,进入身体坐标系控手模式(按LB键),左右摇杆,分别对应机器人的左右手(当前模式下为两个侧肢),以身体坐标系控制双手,通过RB、RT配合可以分别在x-y、y-z、x-z平面上,进行随机运动。

身体跟随摆臂

站定情况下,进入环境坐标系控手模式(按LT键),左右摇杆依然对应机器人的左右手,在环境坐标系控制双手,可以触发身体跟随效果,像动物一样,协调平移或扭转身体,使双手活动范围更大。

身体配合双手自动移动


行走模式下,进入环境系控手模式,则双手运动不仅会触发身体平移、扭转,还会触发行走换位,使双手在高度允许的几乎整个3维空间内可达。
视频中机器人换位行走时,出现腿部来回犹豫摆动的现象,说明系统协调性依然有些不足。我分析认为:由于手柄控制信号有时会在某个范围起伏,恰好引起落脚点的大范围切换。

长颈龙模式自动转向

长颈龙模式引入自动变向功能。上一版中已经提到了“尾部”(左手表示)摆动的平衡意义,以及“头部”(右手表示)的鸡头效应。但上一版的“头部”坐标是提前预设的,这一次,也同样升级为自动生成。主动旋转时,“头部”始终朝着正前方(右手的前方是身体右边)。自动转向时,“头部”会提前朝向运动方向,就像动物,经常做的那样,看上去更加自然。
4足的自动转向,存在过度摇晃的问题,我分析认为:是最大旋转速度太大引起,但这个速度是4足原地旋转时的最佳速度,需要区分运动与静止的转速上限才能彻底解决,但这会涉及一定的底层修改,近期实在没有时间和精力,所以只能走的慢一点,先勉强展示一下。

部分遥控按键表
这是我设计的部分遥控功能表,视频中可以看到部分对应按键,仅供大家参考。

注:目前暂不公开