于佳,刘凯
仿人机器人模仿人类的双腿行走方式,不同于轮式或者履带式,双足行走模式本质上是不稳定的,因此一直是仿人机器人研究的主要内容之一。实际上若要使机器人行走时保持稳定,不发生摔倒,主控制器必须得到机器人行走时的即时状态信息,以便于为了维持身体稳定做出必要的运动调整,这就需要各种传感器获得相应的传感信息。参考文献[1]利用传感器在线测得机器人的全身重心(Center of Gravity,COG),计算它的一阶和二阶微分(分别对应速度与加速度),使它们满足由机器人自身参数所决定的限定范围,就可以实现机器人的稳定行走[1]。另外机器人各个关节的实际转角与脚底压力中心(Center of Pressure,COP)也是非常重要的,有了这些参数,就可以分析机器人行走时实际的关节角度与脚底受力状态,以便于步态规划调试,最终实现稳定行走。
明确了需要测量的参数,就要用传感器系统来获得相应的数据,传统的机器人传感器系统一般采用直连的方式,直接将各个传感器接到主控制器上,主控制器也负责完成传感器信号处理的任务,例如日本本田公司的P2机器人采用的是集中式的控制结构,控制器放在机器人的背部,直接与全身的各个传感器、执行器相连接,总共用了650根导线,这样多的导线会使机器人的故障率大大提高,同时由于各种传感器数据也都交给主控制器处理,也加重了主控制器的负担。而其下一代P3机器人采用的是分布式控制结构,控制器分散在全身的各个部分中,再采用类似内部局域网的方式连接,连线的数量减少到30根,提高了机器人的可靠性[2]。
本文提出的基于CAN总线的仿人机器人传感器系统,该系统独立于主控制器,作为一个单独的系统处理传感数据,减少了主控制器的负担;且该系统与主控制器通讯采用的是CAN总线,CAN总线实时性强,可靠性高,并且只需要两根线,大大减少了机器人内部的连线数量,使得机器人的可靠性得到很大提高;传感器方面,该系统利用片式压力传感器得到双脚压力数据并计算压力中心,利用倾角传感器得到的各个关节的倾角并计算全身重心,同时,倾角传感器测得的各个关节相对于地面的倾角,可通过矩阵变换得到各个关节相对的角度,传感器控制器DSP将这些数据打包,再通过CAN总线将这些数据传给机器人的总控制器,便于机器人实现稳定行走[3]。
从整个机器人的整体结构来讲,传感器系统所起的作用是读取机器人实时的状态信息,再将传感数据进行分析处理,然后将得到的信息发给主控制器,主控制器根据这些信息将原给定的步态规划数据进行修正[4],从而使得机器人按照计划准确且稳定行走,其流程如图1所示:
图1 机器人控制结构图
基于CAN总线的机器人传感器系统是一个单独的系统,各个传感器通过传感器接口板与该系统主控制芯片DSP相连,DSP将获得的数据进行处理,然后通过CAN总线以数据包的形式发送给上位机。在硬件结构上,该系统主要由传感器、传感器接口板和主控制板MCU 3部分组成,如图2所示:
图2 基于CAN总线的传感器系统
1.2.1 主体结构
由于需要测得机器人脚底压力信息与全身COG信息,可根据机器人的结构与DSP的系统资源,设计出相应的传感器系统,如图3所示[5],从功能结构分,其主要有3个部分(由虚线分割):DSP与压力传感器通讯、DSP与倾角传感器通讯与DSP与主控制器的通讯。其中第一部分是利用压力传感器测得相应的压力数据,经过传感器处理板处理后变为DSP可以接受的电压信号,送于DSP处理;第二部分是倾角传感器测得各个关节的倾角,然后通过SCI、SPI通讯协议的变换送于DSP处理;第三部分是DSP将处理好的数据脚底COP、全身COG等数据通过CAN总线协议发送给主控制器,便于主控制器根据这些数据进行步态规划。
图3 基于CAN总线的传感器系统实际设计图
1.2.2 压力传感器部分
压力传感器用于测量机器人脚底板所受的压力状况。如图4所示,在每个脚底板安装有4块压力传感器,分别用于测量脚底板的各个部位受到的力,根据他们的分布状况以及所受到的压力值,可算出每只脚的压力中心(具体步骤见本文1.3节),最后发送到主控制器。
图4 脚底压力传感器分布
1.2.3 倾角传感器部分
倾角传感器主要测量机器人各个关节的倾角,然后反馈给主控制器,主控制器用这些数据来计算出各个关节的空间位置、速度等信息,再根据机器人的物理参数可以得到机器人的COG点(具体计算步骤见本文2.3节)。此处传感器采用的是双轴倾角传感器,传输协议为RS232,在为其设计的接口转换板上有RS232转TTL电路、TTL 5V转TTL 3V以及一路SPI扩展4路SCI电路。这样一块DSP可以通过SCIA、SCIB和SPI口控制6个倾角传感器,左右腿各三个,安装位置如图5所示。
图5 倾角传感器安装结构图
1.3.1 脚底COP计算
脚底4路传感器在机器人上具体的安装图如图4所示,由几何知识可知左右脚的总压力分别为:
以机器人腿部与脚底的接触中心为原点(如图2中黑点O),则机器人左脚的压力中心为
其中a代表传感器(正方形)的边长,l1,l2,w1,w2如图2所示(l1>l2),右脚计算方法相同。
1.3.2 机器人COG计算
根据参照文[1]中所述的两关节COG计算方法,将其扩展为3关节,并加入上身的等效关节L3以及等效质量m3。如图6所示,令qi表示第i个关节与垂直方向的夹角,由于倾角传感器是带有方向性的,所以在这里规定机器人某一关节与地面垂直线逆时针方向为正值,顺时针方向为负值;令θi表示第i-1个关节的延长线与第i个关节的夹角,令
则有
其中θ 可作为各个关节电机运行时所转角度的参考值,修正由电机编码器计算关节角度值,构成闭环关节控制系统。
令mi表示各个关节的重量,ri表示各个关节自上到下等效质心的位置(r3是自下而上) ,由此可计算出机器人相对于坐标中心o的质心位置如下:
当两只脚换位时计算方法相同,只需替换相应的参数,当行走时处于双脚支撑期时,机器人的COG一般位于两支撑脚之间,这里不再考虑。
图6 机器人各关节等效图
由于倾角传感器和脚底压力传感器的检测以及计算,都是在一块DSP中完成的,并且它们的CAN数据传输格式类似,所以可统一设定DSP发送CAN数据的邮箱号,通过CAN的初始化以及自定义设定,当CAN缓冲区中有数据时,DSP便把这些数据发送到主控制器的CAN卡中。当主控制器接收到这些数据位时,便可以根据相应的通讯协议将数据解码并使用。下面根据两种传感器所实现功能的不同分别进行测试,以说明传感器系统测量和通讯部分均能正常工作。
将机器人放置于某一稳定状态,接通DSP和脚底转换电路的电源,打开Linux主控制器,待程序初始化完毕之后,DSP将通过CAN总线不断发给主控制器数据,这里为了显示的详细清楚,将连接到DSP仿真器中的数据细节读取如图7:
图7 脚底压力传感器数据
从其中的数据可以较清楚的看到DSP检测以及计算的结果:Left_foot_sensor和Right_foot_sensor分别表示左、右边两边压力传感器测得的数据,而Left_foot和Rigth_foot分别表示左右两脚的总压力和压力中心。
同样接通DSP以及倾角传感器转换电路的电源,开启Linux主控制器程序,使能倾角传感器数据发送,接收到一次的数据如表1:
表1 倾角传感器数据
数据中提供了各个关节相对于地面的倾角以及计算所得的机器人COG,这些数据为主控制器控制系统实现机器人的稳定行走提供了必要条件。
本文针对传统机器人传感器系统连线多、复杂程度高的缺点,提出了基于CAN总线的仿人机器人传感器系统,并根据实际情况提出了传感器系统的软硬件实现及测试:其中脚底压力测量部分,可根据压力传感器的压阻关系,测量并计算双脚的总压力和压力中心;倾角测量部分,可根据倾角传感器的数据计算机器人腿部各个关节的垂直倾角,也可以将这些角度与机器人的物理参数相联系,求得机器人全身COG;由DSP控制的传感器系统,还能将处理的数据通过CAN总线发送到机器人控制的主控制器,为机器人实现闭环关节运动控制以及动态稳定行走提供了必要的数据;并且系统通讯所使用CAN总线,使得机器人内部的连线减少,大大提高了机器人工作的可靠性,降低了内部连线的复杂度。
[1]Fumiaki Takemori, Akira Kitamura and Daisuke Kushida.Constraint of Center of Gravity in a Biped Walking Robot[C].Intelligent Robots and systems.2004:1960-1961.
[2]申飞,吴仲城,钱敏.基于CAN总线的机器人脚力传感器的设计及其应用[J].南京:传感技术学报.2004:39-41.
[3]Jung-Hoon Kim, Jung-Yup Kim, Jun-Ho Oh. Adjustment of Home Posture of Biped Humanoid Robot Using Sensory Feedback Control[J],Springer Netherlands:Journal of Intelligent and Robotic Systems.2008:424-426.
[4]刘熹,肖南峰.基于ZMP和实时检测的机器人步行研究[J].广西南宁:装备制造技术.2007:25.
[5]陈健,雷旭升,苏剑波.基于智能体的仿人机器人分层控制系统[J].北京:高技术通讯.2007:586-590.