1.2.2 在线更新规划
只要所考虑的内容在整个执行期间仍然有效,规划就有效。如果障碍物挡住了移动路径或目标物体随机器人沿规划的路径移动,机器人将需要重新计算路径。新路径可能比前一条路径短或长。如果使用传统技术(例如样条分解),则需要计算新的分解。但如果必须快速适应变化,可能没有足够的时间执行此分解。
当机器人的路径规划由随时间变化的显式函数来计算时,也会出现问题。假设机器人的路径是由每个时间步长的一组期望位置和速度来定义的。如果由于外部干扰而修改了路径长度和路线,则再继续使用前一个时间T可能会导致超过机器人的速度极限,如图1.2所示。因此需要重新计算路径和沿路径的速度分布。
图1.2 当机器人受到干扰而偏离其规划轨迹时,必须计算新路径。若路径是通过一组明确的时间点来描述的,到达目标的时间T也必须与路径一起重新计算,以防机器人超过其速度极限。当路径为线性时(图a),计算新时间T′是即时的。当路径为非线性时(图b),同时确定新路径和新时间存在困难,因为这取决于多种因素,并且在优化过程中可能需要考虑新的约束
计算机器人的路径时,还必须确保该路径在运动学上是可行的。也就是说,必须验证存在N个机器人关节的一系列连续关节结构,才能使末端执行器遵循所需的笛卡儿路径。还应确保关节移动的速度是可行的。可以通过约束,∀t=0,…,T和来确保速度,其中q∈ℝD是机器人的关节,J(q)是机器人运动学函数的雅可比矩阵,是速度的上限。这也可以通过二次规划(Quadratic Programming,QP)来解决[136]。
从能量的角度来看,这种优化仍然可能无法获得最佳路径。为了将能效纳入优化的标准,必须估计运动所需要的作用力。估计和最小化工作量的第一种近似方法是要求机器人在关节空间中选择最短路径,而不是在笛卡儿空间中选择最短路径。注意,在笛卡儿空间或关节空间中遵循最短路径可能会导致产生相同或不同的路径,这取决于我们是否有冗余机械臂(参阅练习1.1和练习1.2)。为了估计机器人产生的真实作用力,必须计算整个路径中每个关节产生的扭矩。因此,为了减轻工作量,应该尽量寻找需要最小扭矩的轨迹。
假设控制一个四关节机器人(如图1.3所示),该机器人受重力作用。移动机器人底座关节可能比仅移动第二个关节更费力,因为第一个关节支撑整个机械臂。在移动过程中最小化产生的总扭矩可能会导致远端关节移位的运动(如图1.3b所示)。
练习1.1 给定一个两关节机械臂,编写由正向运动学x=cos(q1(0))+cos(q2(0))给出的从初始姿势x移动到期望位置x*的优化程序,计算:
1.最小化到达目标所需的时间。
2.笛卡儿空间中最直的路径。
3.关节空间中最直的路径。
图1.3 通过不同的方法移动四关节机械臂,都会导致产生笛卡儿空间中的直线路径。当优化最小作用力(即扭矩最小)时,图b中展示的移动第二个关节的解决方案可能优于图a中展示的移动第一个关节的解决方案,因为第二个关节承载的重量低于第一个关节
编程练习1.1 本练习的目的是让读者熟悉机械臂运动的基本优化方法。请打开练习1.1的ch1_ex1.m[1]。代码生成一个带有四关节机械臂的图形。编辑代码以执行以下操作:
1.计算基于三阶多项式的闭式时变轨迹发生器。
2.编写练习1.1中的优化问题,使该机械臂在三维空间中移动,因此具有三维吸引子。假设关节是连续的。在空间中的不同位置初始化末端执行器,并比较三种优化的轨迹方案。当练习1.1的第2问和第3问答案相同时,你能得出程序代码吗?
将路径规划转为优化问题时出现的一个情况是,必须为每个新的初始配置解决优化问题。虽然问题有时可能是凸的(例如在二次规划的情况下),但通常情况并非如此,比如在考虑约束(例如与机器人关节的自碰撞)时。为了找到一个可行的最优解,可能需要用新的初始条件多次运行处理器。优化还意味着明显的时间依赖,见式(1.1)。这种时间依赖对于优化和控制都是一个问题。时间窗口太短可能无法找到兼顾机器人速度和扭矩约束的可行方案。时间窗口过大又可能会不必要地减慢移动速度(参阅编程练习1.2)。
编程练习1.2 本编程练习的目的是确定如何在干扰下使用编程练习1.1中的优化技术重新计算路径。首先加载编程练习1.1中创建的代码。
1.在先前的编程练习中选择一个位置并初始化末端执行器,然后生成沿练习1.1的第3问的路径。
2.通过突然将机器人的一个关节移位10°,在路径中间产生一个扰动。
3.重新进行优化,利用原来抵达目标的剩余时间来生成新路径。
当沿途发生干扰时,控制一定数量的步骤也会造成问题。想象一下,一个机器人由于意料之外但瞬间发生的故障而停在路径上。如果控制器继续运行,计时器将在故障期间继续计时。一旦机械故障消失,控制系统预计的机器人所在位置与真实位置不同,导致生成错误的电机指令。为了避免这种情况,可以重置时钟系统,但这需要一个单独的附加控制回路来跟踪实时和预定的时间。当干扰将机器人引至另一条路径上时,问题将更加复杂。例如,如果一个人无意中撞到了机器人,这可能会使机器人偏离轨迹,使它来到一个新的位置x′。从这个新位置生成新路径,可能需要重新开始优化。这种时间的重新缩放或重新优化会减缓机器人的反应速度。如果我们不考虑时间,使控制回路完全依赖于状态,这些问题将不存在。然而,这是有代价的——必须保证系统稳定在所需的目标上,我们将在下一节中继续讨论。
本书中,我们采用了一种使轨迹由闭环形式的数学表达式给出的方法,因此无须在系统运行时进行优化。此外,轨迹通过状态相关系统生成,以避免在遇到干扰时重新启动计时。