机器人感知与规划笔记 (6) - 运动控制与编程

运动 (locomotion)

使用执行器(effectors)的两种基本方法:

  • 移动机器人 => 运动 (locaomotion)
  • 移动其他对象 => 操纵 (manipulation)

这将机器人技术分为两大类:1. 移动机器人(mobile robotics)。2. 机械手机器人(manipulator robotics)。

可以使用多种执行器(effectors and actuators)来移动机器人。
腿(legs),车轮(wheels),鳍状肢(flippers),螺旋桨(propellers)和喷气机(jets),手臂(arms)。

注:腿式运动 (legged locomotion) 对于机器人来说是一个较难解决的问题,尤其是与轮式运动 (wheeled locomotion) 相比。

机器人应该要是稳定的,有两种类型的稳定:静态(static)稳定和动态(dynamic)稳定。

一个静态稳定的机器人能够保持静止不摔倒。这并不容易做到,这要求机器人上有足够的支腿/轮子以提供足够的静态支撑点(static points of support)。

轮式 还是 腿式?

轮式比腿式更高效。(它们也确实存在于自然界中的某些细菌中)
但是,进化有利于横向对称,并且支腿更易于构建和维护。
如果你查看动物的种群数量,昆虫是种群最多的动物,并且具有许多不同的腿形和运动系统(locomotion system)。

腿式的好处:

  • 能更好地处理崎岖的地形(rough terrain)。
  • 使用孤立的立足点可以提供更多的支撑(support)和牵引力(traction)。
  • 减少能量损失。
  • 重量可能更少。
  • 腿部对地形的损害较小。
  • 潜在的更多可操作性(maneuverability)。

要解决的问题

腿式机器人具有许多执行器和自由度(degrees of freedom - DOF)
几何要求同时分析机器人的静态力学和运动学(kinematics)。

站立和行走时的稳定性

静态步态static gait (静态稳定步态 statically stable gait) 的基本假设是,腿的重量与身体的重量相比可以忽略不计。机器人的总重心 (center of gravity - COG) 不受腿部摆动的影响。基于此假设,设计常规的静态步态,以便将机器人的重心(COG)保持在支撑多边形 (support polygon) 内。该多边形由每个支撑腿的尖端位置(tip position)勾勒出轮廓。

使用更多的支脚将会使静态稳定性变得简单。
为了保持稳定,机器人的COG必须落在其支撑多边形的下方,此多边形基本上是所有支撑点之间在表面上的投影。
因此,在两足机器人中,多边形实际上是一条线。因此,重心无法稳定地与直线上的点对齐以保持机器人直立。
可以考虑一个三足机器人(three-legged robot):腿部放在三脚架(tripod organization)中,身体在上方。这种机器人产生稳定地支撑多边形,因此他是静态稳定的。

当静态稳定的机器人抬起一条腿并试图移动时,会发生什么?
它的重心是否保持在支撑的多边形内?这取决于几何形状。
对于某些几何形状的机器人,可以在走路时(不同数量的腿)始终保持静态稳定。这是非常安全的,但是也非常慢且能量效率低。
在这里插入图片描述
上图显示了四足步行机器人的脚提供的支撑模式 (support patterns)。

  • 身体和腿部移动以使重心(COG)的投影(projection)保持在脚定义的多边形内。
  • 每个顶点都是支撑脚(support foot)。
  • 黑点是COG的投影。

动态平衡 (Active/Dynamic Stability)

静态稳定性的替代方法是动态稳定性,它可以使机器人在移动时保持稳定。
如,单腿跳跃机器人是动态稳定的,他们能跳到某个目的地而不会摔倒。
但是它们无法停止并保持站立。(这是个反向摆平衡问题 inverse pendulum balancing problem)

反向摆平衡问题类似于在手掌上平衡扫帚或长杆,这是我们大多数人小时候尝试过的事情。当我们看到杆子要跌落到某一侧时,眼睛会将这些信息发送到大脑。大脑执行某些计算,然后指示你的手臂以一定的速度移动到某个位置以抵消杆子的运动,这有望使翻倒杆回到垂直方向。
在这里插入图片描述
动态稳定的行走模式 - 困难但快速
静态稳定的行走模式 - 容易但缓慢

机器人运动期间在空中举起几条腿(即步态 gait)是可以被考虑的:

  • 六脚(hexapod)是最流行的选择,因为他们可以实现非常稳定的步行步态(stable walking gait),即三脚架步态(tripod gait)。
  • 如果相同的三条腿同时移动,则称为交替三脚架步态 (alternating tripod gait)。
  • 如果移动的腿部不断变化,则称为脉冲步态 (ripple gait)。

六脚机器人 (Hexapods)

矩形六脚机器人可以一次抬起三只腿向前移动,但仍保持静态稳定性。它使用了交替三脚架步态(alternating tripod gait),这是一种在生物种常见的使用六足或更多足走路的方式。
在这里插入图片描述

三脚架步态交替的特点:

  • 身体一侧的一条中腿(middle leg)和另一侧的两条不相邻的腿(non-adjacent legs)同时抬起并向前移动。
  • 其他三条腿保持在地面上,并保持机器人静态稳定。

在这里插入图片描述

算法步骤:

  1. 腿1,4,5号落地,腿2,3,6号抬起。
  2. 逆时针旋转7,9号躯干,顺时针旋转8号躯干。
  3. 腿1,4,5号抬起,腿2,3,6落地。
  4. 顺时针旋转7,9号躯干,逆时针旋转8号躯干。
  5. 回到步骤1。
    在这里插入图片描述

两足机器人 (Biped Robots)

设计方法 (Design Methodologies)

  • 生物力学控制 (Biomechanical control): 传统控制方法,稳键且多功能(versatile),"机器人"的步态,困难且昂贵。实施起来是会有不必要的复杂,低效且沉重的。
  • 基于步态综合的控制 (Control based on gait synthesis): 模拟步行的自然运动学。适合肌肉动作,需要简单控制,非常高效。

挑战

  • 动力学和运动学方面:复杂的实时控制架构。复杂性限制了轨迹跟踪 (trajectory tracking) 的轻松性。
  • 数学易处理性 (mathematical tractability)。
  • 优化难 (optimisation)。
  • 扩展性有限 (limit extendibility)。
  • 生物可行性有限 (limit biological plausibility)。

动力学(Biped dynamics)和控制策略(control strategies)

在这里插入图片描述
静态步行(static walking): 在静态步行中,两足机器人必须缓慢移动,以便忽略动力学。两足机器人的投影中心(PCOG)必须在支撑区域内。
动态步行(dynamic walking): 在动态步行中,运动速度很快,因此动态变化不可忽略。在动态步行中,我们应该注意零力矩点 zero moment point(ZMP)而非COG。动态步行的稳定性裕度(stability margin)很难量化。

零力矩点(ZMD): ZMD指定一个点,在该点上,脚与地面接触时动态反作用力不会在水平方向上产生任何力矩。水平惯性(inertia force)和重力之和等于零的点。ZMD是机器人稳定性的指标。如果在脚的影子中,稳定,如果不在,则不稳定。

在这里插入图片描述
CDM:指动态质量中心 center of dynamic mass.

控制方法:

  • 基于模型:被动步行者(Passive Walker),倒立摆(Inverse Pendulum)。
  • 基于二足动力学(Biped Dynamics): 动态稳定,全身合作(Whole Body Cooperative)。
  • 基于动力学的无模式软计算(Dynamics Modeless Softcomputing Based): 连接论 (Connectionist Theory - ANN),模糊逻辑 (Fuzzy Logic),遗传算法 (Genetic Algorithm).
  • 混合智能控制 (Hybrid Intelligent Control): ANFISRF, 学习和GA优化,轨迹规划 (Trajectory Planning)

轮式机器人 (Wheeled Robots)

车轮是运动效应器(locomotion effector)的选择一种。
轮式机器人(以及几乎所有轮式机械设备,例如汽车)通常都是静态稳定(statically stable)的。

车轮比脚更加高效。装有轮子并不意味着完整(holonomicity)。2轮或者4轮机器人通常不是完整的。一种流行且高效的设计是两个差速转向车轮(differentially-steerable wheels)和一个被动脚轮(passive caster)。
Note: 当可控制的自由度(degree of freedom - DOG) 数量等于机器人上的自由度的时候,移动机器人就是完整的。

差速转向 (differential steering):

  • 两个(或多个)轮子可以分别(单独)旋转/转向,因此是差速(differently)的。
  • 如果一个轮子可以朝着一个方向转向,而另一个轮子可以朝相反方向转向,则机器人可以在原地旋转。
  • 这对于跟踪任意轨迹 (following arbitrary trajectories) 和逃脱死角 (escaping dead ends) 非常有用。
  • 通常使用轨道(tracks)来代替轮子。(如坦克)

跟踪轨迹 (following trajectories)

在运动中,我们可以关注:- 到达特定位置。- 跟随特定的轨迹 (路径)。
遵循任意给定的轨迹比较困难,并且对于某些机器人来说这是不可能的。(取决于其自由度) 对于其他机器人,这是可能的但是速度不连续。(停止,转向然后再走)

由于可以使用规划来计算最佳 (因此任意) 的轨迹,以便机器人遵循该轨迹到达特定的目标位置。因此大量传统的机器人设计都关注跟随轨迹。

实践中的机器人可能不会只关注目标位置,而是会关注特定的轨迹 (specific trajectories)。但是轨迹规划是一个计算复杂的过程,意味着必须找到所有可能的轨迹(需要通过搜索)并进行评估。而使事情变得复杂的是,机器人不是一个点,而是拥有其几何 geometry(如转弯半径) 和 转向机制 steering mechanism (完整性质) 的。
这也被称为 运动规划。(Motion Planning)

运动规划 (Motion Planning)

需求 (Requirements)

  • 机器人的运动(kinematic)/动力学(dynamic)模型。
  • 车轮与地面之间相互作用(interaction)的模型。
  • 所需要动作的定义: 速度控制,位置控制。
  • 满足需求的控制法 (control law)。

轮式运动学 (Wheel Kinematic)

车轮沿着地面滚动。实心轮(solid wheel)在瞬时接触点(instantaneous contact point)接触地面。车轮转动时,瞬时接触点在车轮和地面上都会移动。为了实现完美滚动,接触点的速度等于车轮的圆周速度(perpheral velocity of wheel)。当发生打滑的时候,地面上的接触点速度与车轮上的接触点速度不同。

机器人的线速度(linear velocity)和角速度(angular velocity)通过控制轮子的角速度来控制。结果是运动的三种情况:纯平移(pure translation),纯旋转(pure rotation)以及平移和旋转的组合(combined translation and rotation)。

车轮旋转通过旋转编码器(rotary encoders)测量。
轮子旋转时,脉冲数 (number of pulses) 与轮子旋转的角度成正比。

当车轮速度相等且相反(left: t, right: -t)时,机器人将绕其中心旋转。
四轮机器人(像车子一样的机器人),不能绕轴旋转。
然而,机器人绕弧线的动作可以分解为旋转(rotation)和平移(translation)分量,他们可以由运动学公式建模。
为了模拟移动机器人的运动学,我们表示其相对于世界坐标系的位置 (x, y, θ)。
机器人框架(robot frame)位于两个里程轮(odometry wheels)之间。
传感器和车轮也由相对于机器人框架的坐标框架(co-ordinate frames)表示。
机器人旋转时,框架位于旋转中心。

相对于机器人框架的坐标表示:
在这里插入图片描述

移动机器人的可操纵性(Maneuverability)

轮式移动机器人有许多设计选择。
单体移动机器人的设计问题包括车轮类型的选择(wheel types),车轮的放置(placement of wheels)以及运动学参数(kinematic parameters)的确定。
应根据目标环境和任务以及机器人的初始和操作成本(initial and operational costs)来指定设计目标。
机器人的结构根据车轮数和常用设计的特征来进行分类。

Castor wheel(脚轮):指向运动方向的无动力飞轮。
Swedish Wheel (瑞典轮): 向前驱动,飞轮在侧向,允许它们同时旋转和平移。
Spherical Wheel (球形轮): 在x和y上供电,使它们可以在任何方向上驱动机器人。

Ackermann转向和自行车配置均具有相同的瞬时旋转中心 (Instantaneous Center of Rotation - ICR)
在这里插入图片描述
移动机器人的可操作性是以下方面的组合:

  1. 基于滑动约束(sliding constraints)的可用移动性。
  2. 加上转向带来的额外自由(additional freedom)。

三个轮子足以保证静态稳定性:其他轮子需要被同步(synchoronised),对于带有三个轮子的某些布置(arrangement)也是如此。

机动性程度(degree of maneuverability)

在这里插入图片描述
两个拥有一样的机动性程度的机器人并不一定相同。

在这里插入图片描述
对于任何机动性程度为2的机器人,其ICR始终被约束在位于半径R的线上。
对于任何机动性程度为3的机器人,ICR不受控制,可以将其设置为平面上的任意点。

同步驱动机器人 (Synchronous-Drive Robot)

可以使用居中(centred)或者偏离中心(off-centred)的可定向车轮来构建同步驱动机器人。
每个车轮的转向和驱动运动通过链条(chain)或皮带机械(belts)耦合在一起,并且运动同步进行,因此车轮方向始终相同。
因此,通过将车轮方向转向所需的速度方向,可以实现全向运动(motion in any direction),即沿任何方向的运动。但是机器人机箱(robot chassis)的方向无法更改。
同步驱动机器人的最大优势在于,仅使用两个执行器(actuators)就可以实现全向运动(omnidirectional movement)。
在这里插入图片描述
同步驱动机器人的机动性程度(robots maneuverability)为2。

DOF 和 DDOF

机动性 δM 等于车辆的自由度 (degree of freedom, DOF)。这通常等于机器人上的伺服器(servos)数量。
这不应该与车辆在环境中的自由度混淆。
这通常被称为可微自由度 (Differentiable degree of freedom, DDOF), 它等同于机器人的独立可达到的速度。
如:自行车 δ M = δ m + δ s = 1 + 1, DDOF = 1; DOF = 2
Omni Drive:δ M = δ m + δ s = 3 + 0, DDOF = 3; DOF = 3

DOF 自由度:机器人实现各种姿势的能力。(possible space (x,y,theta) a robot can reach)
DDOF 可微自由度:机器人实现各种路径的能力。(possible velocity a robot can reach)
在这里插入图片描述

完整机器人 (Holonomic Robots)

  • 完整的运动学约束(holonomic kinematic constraint)只能表示为位置变量的显式函数(explicit function of position variables)。
  • 非完整约束(non-holonomic constraint)要求不同的关系,例如位置变量的导数(derivative of a position variable)。
  • 固定和转向的标准车轮施加非完整的约束。

运动控制 (Motion Control)

目标:跟随轨迹。位置 和/或 速度曲线(velocity profiles)作为时间的函数。
运动控制并不简单:移动机器人不是完整的(non-holonomic)系统。
大多数控制器(controllers)没有考虑系统动力学 (dynamics of the system):需要用于动力学系统的机器人操作系统软件开发平台。

编程式机器人

挑战

  1. 世界是异步的(asynchronous)。
  2. 机器人必须管理相当大的复杂性(complexity)。
  3. 机器人硬件需要抽象(abstraction)。

顺序编程(Sequential Programming)的问题和解决

问题:

  • 如果您前进时出现障碍物会怎样?
  • 旋转时编码器数据会怎样?
  • 如果其他模块想要相同的数据怎么办?

解决方案:回调(Callback)
每当有数据可用于处理时调用的函数,异步回调随时可以发生。

例子:
当下列情况发生时,运行相关的回调函数:

  1. 从相机里读取到图像时。
  2. 里程表传感器报告了新数据时。
    在这里插入图片描述

代码复杂性(complexity)的问题和解决方案

单独流程(seperate processes):相机,里程表,激光扫描仪,地图构建等的都可以分开:它们将通过界面来进行交互。
接口(interfaces):软件过程 (ROS中的“节点”)就ROS中共享的"主题"(topic)进行交流。
发布(publish)/订阅(subscribe): 让每个模块仅接收其请求的数据(消息)。
在这里插入图片描述

依赖硬件代码(Hardware dependent code)的问题和解决方案

解决方案: 抽象化硬件 (abstracting hardware)
在这里插入图片描述

机器人操作系统 (ROS)

这是什么?:开源,在Linux(尤其是Ubuntu)上运行。正在进行在windows上实施。
特点

  • 基于代理(agent based - nodes)
  • 消息传递 (message passing)
  • 发布(publish)和订阅(subscribe)
  • 通过远程调用(remote invocation)的服务。

底层设备抽象:游戏杠(Joystick),全球定位系统 (GPS),相机 (Camera),控制器 (Controllers),激光扫描仪(Laser Scanner)。

应用程序构建块(Application Building Block): 坐标系转换 (coordinate system transforms),可视化工具,调试工具,稳键的导航堆栈 robust navigation stack (带有闭环的SLAM),路径规划,对象识别。

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值