【路径规划】基于六次多项式的多关节机器人避障路径规划

  最近迷上了机械臂避障轨迹规划,因为之前一直做的都是无障碍物轨迹规划,所以这次想试一下有障碍物的,把避障算法用在我的SimMechanics机械臂上,看看效果咋样。以下定义不区分路径规划和轨迹规划。

  by the way,本文实现的是全局静态避障,而非局部动态避障 : )

0. 任务目标

  实现六关节机器人任务空间避障轨迹规划。

1. 思路分析

  本人之前尝试过使用采样算法RRT来进行三维路径的避障和寻优,不过感觉步骤比较繁琐,而且很多文章都是到三次B样条曲线拟合完路径就结束了,最后也没说怎么保证末端执行器的速度、加速度平滑和各个关节运动的运动平滑。

  鉴于此,本人放弃基于笛卡尔空间的避障轨迹规划,改做基于关节空间的避障轨迹规划。此方法相比于前个方法来说更加简便且不存在上述问题。

  基于关节空间轨迹规划需要考虑的有:

  • 碰撞检测
  • 轨迹规划
  • 遗传优化

2. 碰撞检测

  多关节机器人碰撞检测和移动机器人不一样,其不仅需要考虑末端执行器的避障而且还需要考虑中间连杆的避障,这里采用包围盒的思想,将连杆视为圆柱体,将障碍物视为球体。

  进一步地,根据多关节机器人的运动特性,其碰撞检测可以转化为由障碍物圆心到三个部分连杆中心线的距离d1、d2、d3。当d小于安全距离时即认为发生碰撞。

3. 轨迹规划

  当确定关节始末角度、速度、加速度边界条件时,五次多项式关节空间轨迹规划只能确定出一条唯一的运动曲线,所以这里采用六次多项式来进行关节轨迹规划

θ t = c 0 + c 1 t + c 2 t 2 + c 3 t 3 + c 4 t 4 + c 5 t 5 + K t 6 \boldsymbol{\theta }_t=\boldsymbol{c}_0+\boldsymbol{c}_1t+\boldsymbol{c}_2t^2+\boldsymbol{c}_3t^3+\boldsymbol{c}_4t^4+\boldsymbol{c}_5t^5+\boldsymbol{K}t^6 θt=c0+c1t+c2t2+c3t3+c4t4+c5t5+Kt6其中, θ = θ 1 , θ 2 , θ 3 , θ 4 , θ 5 , θ 6 \boldsymbol{\theta }=\left \\theta _1, \\theta _2, \\theta _3, \\theta _4, \\theta _5, \\theta _6 \\right θ=θ1,θ2,θ3,θ4,θ5,θ6,代表机械臂的六个关节角, K \boldsymbol{K} K 为可调参数, K = K 1 , K 2 , K 3 , K 4 , K 5 , K 6 \boldsymbol{K}=\left K_1, K_2, K_3, K_4, K_5, K_6 \\right K=K1,K2,K3,K4,K5,K6,通过改变系数K即可改变关节运动轨迹。六次多项式依然能保证各关节角度、角速度、角加速度的连续平稳运动。

4. 遗传优化

  现在的问题在于,如何能找到比较合适的K值,使得正运动学后的机器人末端执行器和连杆运动能够绕过障碍物,比较不错的方法是采用遗传算法,通过迭代找到最优值。为了方便,这里就采用我之前用过的JADE差分算法来进行寻优。

  适应度函数的确定:遗传优化的目的是在机械臂全局避障的同时,减少不必要的运动,所以适应度函数分为三部分:碰撞检测结果 f c o f_{co} fco、六个关节的角度变化总和 f θ f_{\theta} fθ、末端执行器的运动轨迹长度 f L f_L fL。进而则有 f K = − f c o η 1 f θ + η 2 f L f_K=-\frac{f_{co}}{\eta 1f{\theta}+\eta _2f_L} fK=−η1fθ+η2fLfco  基于此,可在关节空间中规划出一条无碰撞,同时运动学、轨迹长度、关节转动角度一起协同优化的理想运动轨迹。

5. 仿真验证

  将多关节机器人初始位置设在零位q=[0,0,0,0,0,0]rad,此时末端执行器初始位置为T=[0.8201, 0.0391, 0.9483]m,将末端执行器终点位置设为X移动-0.1m,Y移动+0.4m,Z移动-0.4m ,即[0.7201, 0.4391, 0.5483]m,通过逆解即可求得末端终点位置对应的各关节角度。

  在机械臂的路径中设置球体障碍物,球体中心坐标设为[0.8, 0.2, 0.8]m,半径设为0.1m,六个关节的角速度、角加速度边界均设置为0。此外,设机械臂运行时间为5s,插值点个数为50,即每段插值点间的运行时间为0.1s。

仿真结果:

  可以看出,机械臂在运动过程中发生了很明显的避让现象,为了更明显的观察,绘制出末端执行器的三维运动轨迹,红色为实际运动轨迹,虚线为无障碍物时的理想运动轨迹。

  由于各个关节的运动曲线为六次多项式,所以关节角速度、角加速度满足平滑条件,进一步的,绘制出末端执行器在XYZ方向分量上的速度、加速度曲线,可以看出,机械臂末端执行器的速度、加速度曲线均为连续平滑曲线,满足平稳运动的条件。

JADE寻优迭代图,在经过12次迭代后,迭代出了K的较优值和较小的适应度值。

6. 总结

  基于以上结论,成功的实现了多关节机器人避障路径规划,虽然没有找到一条最优路径,但已经找到了一条较优路径,且同时具备安全、稳定、高效的作用,有了以上的各个关节角度曲线,后续设计轨迹跟踪控制器即可完成机械臂高精度的轨迹跟踪。

  本次实验圆满完成 : )

相关推荐
火山引擎开发者社区2 小时前
火山AgentPlan/CodingPlan同步上线GLM-5.2
人工智能
冬奇Lab3 小时前
Skill 系列(05):Skill 工作流串联——4 种模式实测,并发加速 1.5x
人工智能·开源
冬奇Lab3 小时前
每日一个开源项目(第141篇):hiring-agent - HackerRank 开源了他们的简历评分系统,你的简历能得几分?
人工智能·面试·开源
甲维斯3 小时前
又升级咯!坦克大战2026,科技与复古并存!
前端·人工智能·游戏开发
姗姗来迟了5 小时前
用React Hook封装AI对话状态
人工智能
Goodbye6 小时前
从 Token 到 Embedding:LLM 核心基础深度解析
javascript·人工智能
阿瑞IT6 小时前
AI Agent 在甘特计划变更场景中的动态响应工程实践
人工智能
用户938515635076 小时前
工具调用背后:LLM 如何突破“缸中大脑”,操控真实世界?
javascript·人工智能