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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/529693.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

RAG文本加载和分块调研

文本加载和分块 一、文本加载 文本加载是RAG文本增强检索重要环节。文件有不同类型(excel、word、ppt、pdf、png、html、eps、gif、mp4、zip等),衍生出了很多第三方库。使用python处理文件是各种python开发岗位都需要的操作。主要涉及到的标准…

PostgreSQL入门到实战-第四弹

PostgreSQL入门到实战 PostgreSQL查询语句(一)官网地址PostgreSQL概述查询语句概述查询语句实操更新计划 PostgreSQL查询语句(一) 官网地址 声明: 由于操作系统, 版本更新等原因, 文章所列内容不一定100%复现, 还要以官方信息为准 https://www.postgresql.org/PostgreSQL概述…

reids-AOF(Append Only File)持久化使用方法

一,什么是AOF(Append Only File) 将我们所有的命令都记录下来,history,恢复的时候就把这个文件全部再执行一遍 以日志的形式来记录每个写的操作,将Redis执行过的所有指令记录下来(读操作不记录&…

利用Java代码调用Lua脚本改造分布式锁

4.8 利用Java代码调用Lua脚本改造分布式锁 lua脚本本身并不需要大家花费太多时间去研究,只需要知道如何调用,大致是什么意思即可,所以在笔记中并不会详细的去解释这些lua表达式的含义。 我们的RedisTemplate中,可以利用execute方…

V神演讲展望Web3发展并认为可引入人工智能

前言 2024 香港 Web3 嘉年华期间,以太坊联合创始人 Vitalik Buterin 发表主旨演讲《Reaching the Limits of Protocol Design》。以下是演讲内容: 区块链与ZK-SNARKS 我们用来构建协议的技术类型在过去 10 年里发生了很大变化。那么,当 2…

[react优化] 避免组件或数据多次渲染/计算

代码如下 点击视图x➕1,导致视图更新, 视图更细导致a也重新大量计算!!这很浪费时间 function App() {const [x, setX] useState(3)const y x 2console.log(重新渲染, x, y);console.time(timer)let a 0for (let index 0; index < 1000000000; index) {a}console.timeE…

CodeMirror使用: 编写一个在线编辑HTML、JS、CSS文件,网页的模板页面-初实现

前言&#xff1a;前几天编写一个UI模板控制的功能&#xff0c;根据上传的前端模板更换跳转入口主题页面&#xff1b;在编写的时候&#xff0c;突发奇想能不能在列表页面进行在线编辑刚刚上传的模板zip压缩包里的页面...于是经过学习研究有了这篇文章&#xff1b;当日记本一样记…

主机有被植入挖矿病毒篡改系统库文件

查看主机有被植入挖矿病毒篡改系统库文件的行为 排查方法 挖矿病毒被植入主机后&#xff0c;利用主机的运算力进行挖矿&#xff0c;主要体现在CPU使用率高达90%以上&#xff0c;有大量对外进行网络连接的日志记录。 Linux主机中挖矿病毒后的现象如下图所示&#xff1a; &…

在Linux中使用dpkg -i离线安装下载的deb软件包

“dpkg -i” 是 Debian 系统中用于安装 .deb 格式软件包的命令。它是 Debian Package Management System&#xff08;DPMS&#xff09;的一部分&#xff0c;允许用户通过命令行界面来管理软件包。 使用该命令时&#xff0c;需要提供要安装的软件包的路径作为参数。例如&#…

Walmart.com DSV XML对接需求

此前的文章Walmart.com DSV EDI对接需求中&#xff0c;为大家介绍了如果选择传输EDI文件需要做的准备与需求。本文将为大家介绍Walmart.com 与DSV&#xff08;Drop Ship Vender&#xff09;之间传输XML文件的需求。与EDI相比&#xff0c;XML文件的处理难度相对低一些。无论企业…

2007-2022年上市公司企业绿色创新效率数据

2007-2022年上市公司企业绿色创新效率数据&#xff08;仅结果&#xff09; 1、时间&#xff1a;2007-2022年 2、指标&#xff1a;stkcd、year、绿色科技研发效率、绿色成果转化效率 3、来源&#xff1a;上市公司年报、上市公司社会责任报告、上市公司网站信息 4、计算方法&…

自动化测试大总结

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

[NKCTF2024]-PWN:leak解析(中国剩余定理泄露libc地址,汇编覆盖返回地址)

查看保护 查看ida 先放exp 完整exp&#xff1a; from pwn import* from sympy.ntheory.modular import crt context(log_leveldebug,archamd64)while True:pprocess(./leak)ps[101,103,107,109,113,127]p.sendafter(bsecret\n,bytes(ps))cs[0]*6for i in range(6):cs[i]u32(p…

想要品牌传播有效,先清楚这三个本质问题

在互联网时代&#xff0c;企业想要提高市场竞争力就需要做好品牌传播。然而有许多企业在做品牌传播时都会踩坑&#xff0c;原因是因为忽视了这三点&#xff0c;接下来就让媒介盒子和大家分享&#xff1a; 一、 文案本质是“购买理由” 在文案技巧中经常会出现一些词&#xff…

【SVN】clean up报错:Cleanup failed to process the following paths 解决方法

报错来源&#xff1a;代码更新有一个文件既不能接受自己的也不能接受别人的&#xff0c;只能取消&#xff0c;再提交提醒clean up&#xff0c;随后报标题错误。 解决方法&#xff1a;参考https://www.cnblogs.com/pinpin/p/11395438.html 1.下载sqlite3 网址&#xff1a;SQL…

请求转发和请求重定向的区别

请求转发(Forward)和请求重定向(Redirect)虽然都是 HTTP 服务器&#xff0c;处理客户端请求时进行(页面)跳转的实现方式&#xff0c;但是二者有以下 5 点不同: 1. 定义不同。 2. 跳转方不同。 3. 数据共享不同。 4.最终 URL 地址不同。 5.代码实现不同。 具体内容如下&…

实践笔记-linux内核版本升级(centos7)

linux内核版本升级 1.查看当前内核版本信息2.采用yum方式进行版本升级2.1导入仓库源2.2选择 ML 或 LT 版本安装2.3设置内核启动 3.删除旧版本内核 1.查看当前内核版本信息 #查看操作系统版本 cat /etc/redhat-release #查看系统内核 uname -r2.采用yum方式进行版本升级 2.1导…

微信公众号视频下载

这几天想在微信公众号中下载几个视频&#xff0c;但没有视频中没有下载图标&#xff0c;试了据说可以下载视频的网站也不行。折腾了我几天&#xff0c;一直不得其法&#xff0c;没想到最后想要放弃时&#xff0c;被我找到了下载方法&#xff0c;很简单&#xff0c;在这里分享给…

基于SpringBoot+Vue的在线学习平台(源码+文档+部署+讲解)

一.系统概述 在Internet高速发展的今天&#xff0c;我们生活的各个领域都涉及到计算机的应用&#xff0c;其中包括学习平台的网络应用&#xff0c;在外国学习平台已经是很普遍的方式&#xff0c;不过国内的管理平台可能还处于起步阶段。学习平台具有学习信息管理功能的选择。学…

华为USG6000v

1、安全区域 一个及或多个接口的集合 默认的安全区域 Trust --- 优先级85&#xff0c;一般连接内网 Untrust --- 优先级5&#xff0c; 一般连接外网 Dmz --- 优先级50&#xff0c;一般连接服务器、 Local --- 优先级100&#xff0c;防火墙接口所在区的区域 2…