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

2024-04-10 09:28

本文主要是介绍【路径规划】基于六次多项式的多关节机器人避障路径规划,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  最近迷上了机械臂避障轨迹规划,因为之前一直做的都是无障碍物轨迹规划,所以这次想试一下有障碍物的,把避障算法用在我的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. 总结

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

这篇关于【路径规划】基于六次多项式的多关节机器人避障路径规划的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/890676

相关文章

Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)

《Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)》:本文主要介绍Python基于火山引擎豆包大模型搭建QQ机器人详细的相关资料,包括开通模型、配置APIKEY鉴权和SD... 目录豆包大模型概述开通模型付费安装 SDK 环境配置 API KEY 鉴权Ark 模型接口Prompt

python获取当前文件和目录路径的方法详解

《python获取当前文件和目录路径的方法详解》:本文主要介绍Python中获取当前文件路径和目录的方法,包括使用__file__关键字、os.path.abspath、os.path.realp... 目录1、获取当前文件路径2、获取当前文件所在目录3、os.path.abspath和os.path.re

hdu2544(单源最短路径)

模板题: //题意:求1到n的最短路径,模板题#include<iostream>#include<algorithm>#include<cstring>#include<stack>#include<queue>#include<set>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#i

动态规划---打家劫舍

题目: 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。 思路: 动态规划五部曲: 1.确定dp数组及含义 dp数组是一维数组,dp[i]代表

poj 1734 (floyd求最小环并打印路径)

题意: 求图中的一个最小环,并打印路径。 解析: ans 保存最小环长度。 一直wa,最后终于找到原因,inf开太大爆掉了。。。 虽然0x3f3f3f3f用memset好用,但是还是有局限性。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#incl

软考系统规划与管理师考试证书含金量高吗?

2024年软考系统规划与管理师考试报名时间节点: 报名时间:2024年上半年软考将于3月中旬陆续开始报名 考试时间:上半年5月25日到28日,下半年11月9日到12日 分数线:所有科目成绩均须达到45分以上(包括45分)方可通过考试 成绩查询:可在“中国计算机技术职业资格网”上查询软考成绩 出成绩时间:预计在11月左右 证书领取时间:一般在考试成绩公布后3~4个月,各地领取时间有所不同

poj 2976 分数规划二分贪心(部分对总体的贡献度) poj 3111

poj 2976: 题意: 在n场考试中,每场考试共有b题,答对的题目有a题。 允许去掉k场考试,求能达到的最高正确率是多少。 解析: 假设已知准确率为x,则每场考试对于准确率的贡献值为: a - b * x,将贡献值大的排序排在前面舍弃掉后k个。 然后二分x就行了。 代码: #include <iostream>#include <cstdio>#incl

代码随想录冲冲冲 Day39 动态规划Part7

198. 打家劫舍 dp数组的意义是在第i位的时候偷的最大钱数是多少 如果nums的size为0 总价值当然就是0 如果nums的size为1 总价值是nums[0] 遍历顺序就是从小到大遍历 之后是递推公式 对于dp[i]的最大价值来说有两种可能 1.偷第i个 那么最大价值就是dp[i-2]+nums[i] 2.不偷第i个 那么价值就是dp[i-1] 之后取这两个的最大值就是d

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划 非线性规划1. 模型原理1.1 非线性规划的标准型1.2 非线性规划求解的Matlab函数 2. 典型例题3. matlab代码求解3.1 例1 一个简单示例3.2 例2 选址问题1. 第一问 线性规划2. 第二问 非线性规划 非线性规划 非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。2

【408DS算法题】039进阶-判断图中路径是否存在

Index 题目分析实现总结 题目 对于给定的图G,设计函数实现判断G中是否含有从start结点到stop结点的路径。 分析实现 对于图的路径的存在性判断,有两种做法:(本文的实现均基于邻接矩阵存储方式的图) 1.图的BFS BFS的思路相对比较直观——从起始结点出发进行层次遍历,遍历过程中遇到结点i就表示存在路径start->i,故只需判断每个结点i是否就是stop