作者简介:祁若龙(1983-),男,副研究员,博士研究生.研究方向:机器人自主控制.E-mail:qiruolong@sia.cn
仿人头颈部机器人是仿人机器人的一部分,负责对视觉目标进行动态跟踪。为了能够精确跟踪目标,在系统运动学建模过程中,将机器人视场中心的视线作为一个具有伸缩自由度的连杆加入头颈部结构的运动学模型。通过双目视觉系统计算得到的目标点位置在数学模型上成为连杆机构运动的目标位置。为了使具有冗余自由度的头颈部机器人的运动更符合人类的动作行为,对用于消除运动学奇异点的阻尼最小二乘逆解算法进行了改进。改进后的修正算法不仅能够使机器人在运动过程中避开奇异点,而且能够实现算法上的关节限位,保证机器人运动的关节舒适度,使其更符合人类的行为习惯。仿真实验表明:这种算法在很大程度上提高了机器人运动的可靠性和稳定性。
Humanoid head and neck robot, which is part of humanoid robot, is responsible for dynamic visual target tracking. In order to be able to accurately track the target, the centre of the robot's sight field serves as stretch link in the kinematics model of the humanoid head and neck robot. The target position calculated by the binocular camera system is translated to the aim point, where the link mechanism moves to in the mathematic model. Damped least squares inverse kinematics method, which is used to eliminated the joint singularity, is modified to make the redundant humanoid head and neck robot moves like human being. The modified algorithm not only makes the robot to avoid the singularity in the movement, but also guarantees joint limit avoidance, comfortable joint movement and produces natural-looking postures. Simulation and experiment results show that the modified algorithm is more robust and stable.
目前世界各国将仿人机器人的研究作为机器人领域的重点方向之一[1]。仿人机器人的头颈部视觉跟踪系统需要具有偏摆和俯仰两个自由度以便对移动物体进行动态跟踪[2]。但出于结构相似性和前向视觉的灵活性需要, 仿人机器人的头颈部一般采用冗余自由度的设计。这也给仿人机器人头颈部的运动控制带来了挑战:①如何建立相机测得的被跟踪物体空间位置和头部运动之间的联系。传统的视觉跟踪系统多采用类似云台的两关节轴心相交的万向节构型, 其视觉空间是一个完整的球体, 可以通过球面投影的方式计算两个运动关节的偏角[3]。但这种方法并不适用于关节轴不正交的冗余自由度头颈部机器人的运动控制。②由于机器人具有冗余自由度, 理论上可以有无穷多个姿态观测一个固定点, 如何能够以最接近人类自然行为的姿态“ 优雅” 地运动是尚待解决的问题。③在冗余自由度机构运动的时候, 如何能够通过各自由度之间的相互补充协调, 使各自由度在运动中尽量避开关节极限位置。通常一般系统中采用软限位的方法进行限位, 在系统算法计算得到的关节角大于极限位置的情况下只给定极限位置的控制信号, 这种方法带来的后果是末端产生不可预知的轨迹偏差, 导致视觉跟踪和控制失败[4]。④需要在算法内部同时保证避开关节奇异点, 以避免机构产生突然的大幅度异常运动。
Zhang等[5]在研究中赋予了人形机器人头部俯仰、偏摆2个自由度, 建立了面部的虚拟平面, 推导视觉目标和两个关节角关系的二次方程, 并采用神经网络算法进行求解。Bie等[6]针对两自由度关节轴正交的机器人头部, 建立球面上的目标点和关节转角关系, 并直接采用视觉目标空间位置和关节PID闭环控制机制进行视觉伺服控制。Hirth等[7]将机器人头部的动作进行归类, 采用人工智能的方法定义机器人的行为习惯。Omr
本文将机器人视觉跟踪问题通过“ 虚拟连杆” 的建立转化为冗余自由度机器人的运动控制问题。对阻尼最小二乘法进行改进, 引入关节限定系数和关节权重因子, 能够同时满足避开运动学奇异点、远离限位和尽可能在预先定义的舒适关节角度附近工作的需要, 且计算量较小, 能够满足100 Hz近似人类应激频率的高频伺服控制需要。
由中国科学院沈阳自动化研究所研制的仿人头颈部机器人如图1所示。
机器人两只眼睛的中间位置是相机的基坐标系, 机器人本体具有3个转动轴。从几何角度分析, 机器人三个转动自由度能够确定一条与相机基坐标系z轴重合的射线, 但是由于机械结构上三个转动轴的轴心不相交于一点, 因此这些射线并不是从同一个原点向外散射的, 是互相相交的, 理论上通过仿人机器人头部视觉范围内的某一点可以有无数条这样的射线, 也就是说机器人观察某一点时可以有无数个姿态。这与人转动脖颈可从不同角度观察空间某一点的特性是一致的。当人的视线没有改变的情况下, 视线上的一个点(可以想象成乒乓球)向人沿视线方向靠近, 人不需要移动视线, 只调节眼睛的焦距就能够一直观察物体。视觉相机的焦距是一个范围, 因此, 从精确观测物体的角度, 建立从相机基坐标系原点到被测物体之间的虚拟连杆, 能够表达空间一点位置和机器人各轴角度之间的关系。仿人头颈部机器人的连杆和坐标系如图2所示, DH参数如表1所示。
选择仿人头颈部机器人的关节1中心作为空间笛卡尔坐标系的原点和机器人的坐标系的原点。当前周期机器人各关节轴位置φ =(θ 1, θ 2, θ 3, d), 对应的视线虚拟连杆末端空间位置为Pcur=(xcur, ycur, zcur)T, 本周期视觉相机测得的目标点位置为Paim=(xaim, yaim, zaim)T, 则
式中:J为雅克比矩阵, 是机器人视觉虚拟连杆末端在空间笛卡尔坐标系下运动速度相对于关节速度的比值。
通过式(2)计算得到的关节位置增量Δ φ 为本周期得到的控制量, 发送给关节驱动器执行。但由于式(2)直接求雅克比矩阵的广义逆, 在机构奇异点的位置雅克比矩阵是矩阵的秩不为零的病态矩阵, 得到的关节角度增量是错误的。
为避开奇异点, Nakamura[11]和Wampler[12]分别建议在运动学逆解求取时采用阻尼最小二乘技术, 求取满足式(3)的角度增量最小解。
式中:λ ∈ R为阻尼系数, 能够满足式(3)获得最小值的Δ θ 为:
2.2.1 舒适限位系数
对于具有n个自由度的机器人, 阻尼系数λ 是一个n阶对角阵。
式中:λ i对应于对第i个关节的控制, λ i的值越大, 对应的关节“ 阻抗” 越高, 灵活度越差。当机器人关节接近极限位置时, 希望关节的阻抗增大, 在关节越舒适的位置, 希望关节阻抗越小。随着机器人运动关节位置值的变化, λ 的值实时改变, 在使机器人关节远离限位的同时尽可能接近关节舒适位置, 因此称λ 为“ 舒适限位系数” 矩阵。采用分段函数定义舒适限位系数:
式中:μ , P∈ R+, μ 为关节阻抗参数, P为关节灵活度参数, P为偶数, 它们是可根据实验和仿真情况调节的常量; θ icomf为设定的关节最舒适位置, 对于机械臂的某一个末端位置, 算法在计算过程中会使各关节的角度自动趋近于θ icomf。
设关节i角度极限位置值为θ imax=10° , θ imin=-70° , 关节在0° 处最为舒适。关节运动范围内μ =1, P=2、4、8、16时阻抗曲线如图3所示。在机械臂等研究中, 当不需要刻意强调关节舒适位置时, 可以令:
此时, 式(6)不需要分段, 退化为:
实际应用中P值主要影响关节接近限位时的阻抗, μ 值影响关节灵活度, 在冗余自由度机械臂的控制中, 在多个关节以不同的方式相互配合运动都能够实现同样的等效末端运动时, μ 值小的关节相对于μ 值较大的关节更容易产生运动。
2.2.2 关节权重
式(6)在θ i=θ icomf时, λ i=0, 如果此时恰巧机器人关节在奇异点附近, 依然能产生病态解。因此, 在式(6)中增加关节权重系数:
λ i=
式中:0< ω i< 1, 关节权重一方面能够同μ 值一起对关节运动灵活度产生作用, 另一方面ω i的存在能够消除结构奇异点的影响, 保证雅克比矩阵的满秩。实际中建议ω i在[0.01, 0.1]中取值。
本文所述方法在Matlab和VC平台下进行了仿真验证。Matlab仿真在本项目中用于算法有效性的对比验证和参数选择, VC平台用于工程实际应用。仿人头部机器人的关节参数如表2所示。
为了验证算法的合理性, 移动各轴位置, 使机器人各轴处于(30° , -35° , 103° , 180 mm)处, 此时机器人末端空间位置为(266.9, -186.3, 42.9)(单位为mm), 作为运动的起始点。移动机器人使机器人各轴位于(-8° , 35° , 82° , 20 mm)处, 此时机器人末端空间位置为(29.4, 83.36, 250.7)(单位为mm), 作为运动的目的点。这样进行设置的目的是, 一方面确定机器人末端沿起始点和目的点的直线路径上不存在不可达空间, 另一方面在目的点附近, 关节1和关节3两个运动量较小的关节都在极限位置附近, 从而考验算法稳定性。
广义逆方法的机器人连杆运动示意图如图4所示, 本文算法的仿真连杆示意图如图5所示。两种算法以同样的末端起始点、终止点和相同的50 s运行时间运动, 过程中关节位置对比如图6所示。普通广义逆的方法由于各关节的逆解计算过程缺乏约束, 关节1达到75° , 极大地超过了关节1的正向极限位置15° , 关节3达到37° , 也超过了60° 的关节负限位值。通过本文所述的改进阻尼最小二乘法, 机器人各运动轴位置没有超过限位, 颈部(图4、图5中绿色部分)倾角一直较小, 保持在设置的舒适角度附近, 这会使机器人头部动作看起来更符合人的行为习惯。
为了测试本文提出的用于表征视线变焦的伸缩连杆性能, 任意选取两个关节角度相同的观测姿态(-5° , -20° , 110° , 300 mm)和(-5° , -20° , 110° , 20 mm)作为机器人观测末端点的起始和终止位置。也就是说, 机器人最理想的观测行为是在末端平移的过程中关节角保持不变, 只有伸缩连杆发生长度变化。根据本文所述方法, 机器人的观测过程如图7所示。
机器人到达末端点各关节值约为(-1° , -16° , 116° , 34.5 mm), 三个转动关节分别只移动了4° 、5° 和4° , 而伸缩连杆移动了266.5 mm。机器人在头部姿势只有很小变化量的情况下, 跟踪了在视线方向上变化量很大的物体。由此可知, 本文提出的虚拟连杆在视觉跟踪应用方面的有效性。
VC平台下头颈部机器人更加逼真, 不仅能够更直观地观察仿真状态, 而且可以应用于对机器人的实际控制。基于C++语言的机器人仿真平台构建方法可以参考文献[13]。仿真平台如图8所示。
在仿真平台下, 任意定义一条空间样条曲线, 作为机器人的视觉目标轨迹。对比广义逆算法和本文所述改进阻尼最小二乘法的运动过程, 可以直观地感受不同算法对头颈部机器人跟踪姿态的影响。VC仿真对比如图9所示, 图9(a)(c)(e)(g)为改进阻尼最小二乘法的机器人跟踪过程采样, 图9(b)(d)(f)(h)为广义逆法的跟踪过程采样。
通过仿真对比可见, 图9(b)(d)(f)(h)在没有改进阻尼最小二乘约束的情况下, 仿人头颈部机器人的运动是一种能够使机器人末端处于目标位置的肆意关节角度。从VC仿真平台上可以清楚地看到, 机器人的面具与自己的颈部发生了干涉, 并且机器人的头部姿势处于一种不同于人类行为的姿态, 这在机器人的实际应用中是不可以接受的。而图9(a)(c)(e)(g)由于改进阻尼最小二乘法的应用, 机器人能够在保证跟踪目标位置的前提下, 尽量使运动幅度最小、关节角在人类头部直立的角度附近运动, 从而实现了对人类头部视觉跟踪运动的仿生。
通过改进阻尼最小二乘法, 在冗余自由度机器人逆解过程中添加了关节运动的约束。通过这种方法机器人不仅能够实现对关节的限位和避开奇异点, 而且可以通过设置舒适关节角度使机器人的运动能够尽可能地保持在舒适关节角度附近, 从而实现了对人类行为习惯的仿生。还需要说明的有如下两点:
(1)在一般具有冗余自由度的工业机器人的控制中, 由于并不关注机器人的关节行为, 这种方法的优势可能并不突出。但在仿人手臂的仿生运动研究中可以和本文一样通过设置关节舒适度函数, 使机器人的手臂运动与人类运动习惯近似。或者太空、水下等能量资源比较珍贵的环境下, 可以通过本文的方法设置关节权重, 降低机械臂根部承受较大扭矩关节的灵活度, 以节省能量和减小较大、较重连杆关节运动幅度, 降低运动风险。
(2)冗余自由度的广义逆方法的本质在数学上是一种梯度下降法, N个关节角在N维空间中有无数条路径使机器人从一个末端位姿到达另一个末端位姿。广义逆的方法选择了梯度下降最快的方式, 具有单步总关节角度变化量最小的优势, 但在具有伸缩自由度连杆的情况下, 与连杆长度变化相比, 旋转关节可以通过较小角度的旋转使末端产生较大的运动, 从而比移动关节更具优势, 因此广义逆方法在计算中, 移动关节一般灵活度不高。广义逆算法总在用关节旋转产生的末端位移替代连杆伸缩产生的末端位移。因此本文方法可以应用在具有移动连杆的冗余自由度机器人中, 使移动连杆有效参与运动。
仿真实验表明本文所述方法简单实用, 能够稳定、可靠地应用于工程实践。
The authors have declared that no competing interests exist.
[1] |
|
[2] |
|
[3] |
|
[4] |
|
[5] |
|
[6] |
|
[7] |
|
[8] |
|
[9] |
|
[10] |
|
[11] |
|
[12] |
|
[13] |
|