四足机器人步态仿真(二)PyBullet 机械臂运动学仿真(以绘制圆形路径为例)

观前提醒:本章主要内容是通过PyBullet仿真kuka机械臂,并控制机械臂末端按照预定轨迹运动

一、什么是运动学?
运动学是物理学的一个分支,专注于物体的运动描述,包括位移、速度、加速度等,而不考虑这些运动是如何产生的(即不考虑力和质量)。运动学可以应用在很多领域,包括机械工程、机器人学、生物力学等。

在机器人学中,运动学特别指的是机器人各个部件之间的运动关系。机器人的运动学可以分为两个主要的部分:

  • 正运动学(Forward Kinematics, FK):这部分处理从给定的关节角度(机器人的配置)到确定机器人手臂末端执行器(例如工具、爪子等)的位置和方向的转换。在正运动学中,你知道每个关节的角度,你要计算的是末端执行器的确切位置。这通常是通过机器人的几何参数来实现的,比如关节的长度和它们之间的固定角度。
  • 逆运动学(Inverse Kinematics, IK):这部分处理的是相反的问题,即确定使机器人的末端执行器达到特定位置和方向所需的关节角度。逆运动学在机器人编程中尤其重要,因为通常我们知道机器人的工具需要在哪个位置执行任务,但我们需要计算出为了达到这个位置,各个关节应该如何移动。逆运动学可能有多个解(即不同的关节配置可以导致末端执行器在相同的位置),也可能没有解(当期望位置超出机器人的工作范围时)。

运动学解析一般需要考虑到机器人的物理结构,例如关节的类型(旋转关节或滑动关节)、关节的排列(串联或并联)以及每个关节的限制等。在复杂的系统中,运动学分析可能需要运用到数学和计算工具,如矩阵代数、三角学和数值方法。

二、如何在PyBullet中实现正逆运动学
正运动学

在PyBullet中,正运动学的计算通常是隐式进行的。当你设置了机器人关节的状态后,PyBullet会自动计算出机器人末端执行器的位置和方向。例如:

resetJointState(bodyUniqueId, jointIndex, targetValue, targetVelocity)

resetJointState函数用于直接设置机器人的某个关节到一个特定的状态。这个函数可以在不运行物理引擎的情况下,直接改变关节的位置和速度。通常,这个函数被用于初始化仿真环境,或者在进行非物理学的运动学研究时设置机器人的起始状态。这个函数不会考虑动力学约束,比如碰撞或者关节之间的相互影响。
在执行上述代码后,PyBullet会根据给定的关节角度desiredJointAngle计算出机器人的每一部分的位置,包括末端执行器。
参数解释:

  • bodyUniqueId:机器人或其他物体的唯一ID,这个ID是在创建或加载物体时由PyBullet返回的。
  • jointIndex:要设置状态的关节索引。
  • targetValue:关节目标位置(通常是角度,对于旋转关节;或者是直线位移,对于滑动关节)。
  • targetVelocity:关节目标速度(这是可选参数)。

逆运动学
逆运动学通常比正运动学复杂,因为它可能有多个解,或者在某些情况下没有解。在PyBullet中,可以使用calculateInverseKinematics函数来求解机器人的逆运动学。这个函数通过末端执行器的期望位置和方向(如果给定)来计算每个关节应该达到的角度。并且通常使用数值方法来寻找解,所以说它可以处理复杂的机器人模型,包括那些解析解难以找到或不存在的情况。

jointPoses = p.calculateInverseKinematics(robotId, endEffectorIndex, targetPosition, targetOrientation)
  • bodyUniqueId:机器人的唯一ID。
  • endEffectorIndex:末端执行器的链条索引,这个索引标识了机器人的哪个部分是末端执行器。
  • targetPosition:一个列表或元组,指定了末端执行器期望到达的目标位置的世界坐标(通常是[x, y, z])。
  • targetOrientation:一个列表或元组,指定了末端执行器期望到达的目标方向的四元数。这是可选参数,如果不提供,逆运动学解将不考虑末端执行器的方向。
  • …other parameters…:PyBullet 的逆运动学函数还允许设置其他参数,比如关节的上下限、解的逼近度等,可以用来进一步控制逆运动学求解的过程。

calculateInverseKinematics返回的jointAngles是一个列表,包含了所有关节达到目标位置所需的角度值。
可是逆运动学问题会有多个解,这种现象称为逆运动学的多解性(kinematic redundancy),那么calculateInverseKinematics会返回所有的解吗?
答案是:不会! calculateInverseKinematics函数只返回一个解,这个解是根据内部算法(通常是基于数值优化的方法)所决定的。

三、机械臂模型建立
pybullet预装了一些模型,其中就有一个机械臂模型:“kuka_iiwa/model.urdf”
我们可以使用pybullet_data.getDataPath() 来设置附加的搜索路径,这个路径指向 pybullet 预装的数据目录,目录里面包括了一些基本的URDF模型和环境。

 四、仿真程序编写

点击四足机器人步态仿真(二)PyBullet 机械臂运动学仿真(以绘制圆形路径为例) - 古月居可查看全文

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【c++设计模式17】行为模式2:命令模式(Command Pattern)

【c设计模式17】行为模式2:命令模式(Command Pattern) 一、定义二、适用场景三、过程四、命令模式类图五、C示例代码六、使用注意事项 原创作者:郑同学的笔记 原创地址:https://zhengjunxue.blog.csdn.net/article/det…

做外贸你以为客户会懂,但是你还是要讲出来!

很多人都认为,我们公司介绍里啥都有,公司规模有多大,认证有哪些,产品能做什么?我们写在那里,客户就应该懂。 其实,不是的。 客户真的关注不了那么多,可能看到了,也就是看…

运维工具 - SFTP 和 FTP 的区别?

SFTP 和 FTP 的区别有三点 连接方式 SFTP 是在客户端和服务器之间通过 SSH 协议建立的安全连接来传输文件,而 FTP 则是 TCP 端口 21 上的控制连接建立连接。 安全性 SFTP 使用加密传输认证信息来传输数据,因此 SFTP 相对于 FTP 更安全的。 效率 SF…

Windows Linux下查看静态库,动态库各种命令的总结

Windows环境下查看库文件 静态库(.lib) 使用lib.exe查看库内容 命令示例:lib /list C.lib使用dumpbin.exe查看库的详细信息 命令示例:dumpbin /headers C.lib动态链接库(.dll) 使用dumpbin.exe查看DLL的导出信息 命令示例:dumpbin /exports B.dll

Android Studio的Gradle面板里不显示task,build ,assemble 无法出aar包

按照以下方式把对应开关打开就可以正常进行build/assemble进行aar的生成了

多级菜单的实现一

总共分享三种实现多级菜单方式,前面两种是裸机式的,第三种是带有FreeRTOS。 1、首先处在第一级菜单:显示 同时按下一项按钮,flag会变化,光标会根据flag的值,在界面上不同位置显示出光标 按下确定&#xff…

Linux系统中qfile调用seek无法更新指定位置文件内容

一、问题描述 最近在移植qt程序到银河麒麟系统中,发现在Windows下调用seek接口更新二进制文件功能在麒麟系统中总是无法实现更新,调用的QFile接口也并未报错。 原代码实现方式如下: if (!m_writeFile->open(QIODevice::WriteOnly | QIODe…

开源工具专题-04 Atlassian Crowd部署备份及迁移

开源工具专题-04 Atlassian Crowd部署备份及迁移 注: 本教程由羞涩梦整理同步发布,本人技术分享站点:blog.hukanfa.com转发本文请备注原文链接,本文内容整理日期:2024-05-29csdn 博客名称:五维空间-影子&…

使用libgpiod库中的事件方式监测多个输入事件

Linux下要同时检测多个GPIO输入的方法有很多,这里我使用libgpiod库中的API实现多个GPIO输入检测,可以达到类似STM32利用外部中断实现输入事件检测的效果,示例代码如下所示: /* 示例使用的libgpiod库版本为V1.2.1 */ //示例功能是…

2022.9.26DAY678

课程学习:《数据处理技术》讲了“数据查询”的语法格式,语法格式也算是简单,就是没能跟之前的内容联系起来,之前的内容没有及时回顾。 高等数学:“ 函数的概念”,讲了函数的概念,反函数&#…

make_ext4fs:not found

报错信息: 解决: sudo apt-get install android-tools-fsutils sudo apt-get install android-sdk-libsparse-utils sudo apt-get install android-sdk-ext4-utils

跟TED演讲学英文:Let your garden grow wild by Rebecca McMackin

Let your garden grow wild Link: https://www.ted.com/talks/rebecca_mcmackin_let_your_garden_grow_wild Speaker: Rebecca McMackin Date: October 2023 文章目录 Let your garden grow wildIntroductionVocabularySummaryTranscriptAfterword Introduction Many garden…

怎么等比例缩小图片尺寸?这四种方法肯定可以帮到你!

怎么等比例缩小图片尺寸?在当今日常生活中,图片文件是我们不可或缺的一部分,它们以各种形式出现,从社交媒体上的照片到工作文档中的插图,然而,随之而来的问题是,有时这些图片文件的尺寸过大&…

Threejs墙体挖洞做门或窗

在使用Threejs代码构建的展厅中&#xff0c;需要在一面墙中间挖个洞作为门或窗户&#xff0c;效果如下&#xff1a; 引入ThreeBSP.js <script src"plugins/three/ThreeBSP.js"></script> 创建 // 1 定义墙面var cubeGeometry new THREE.BoxGeometry(1…

使用 LiteGraph.js 构建可视化工作流图

本文由ScriptEcho平台提供技术支持 项目地址&#xff1a;传送门 使用 LiteGraph.js 构建可视化工作流图 应用场景介绍 LiteGraph.js 是一个轻量级的开源 JavaScript 库&#xff0c;用于构建可视化工作流图。它广泛应用于游戏开发、数据可视化、交互式叙事等领域。 代码基本…

2024会声会影激活码免费注册码大揭秘!

在当今数字化时代&#xff0c;视频编辑已经成为了许多人日常生活和工作中不可或缺的一部分。无论是制作短视频、Vlog还是专业影视剪辑&#xff0c;一款优秀的视频编辑软件都能让我们事半功倍。而市面上众多的视频编辑软件中&#xff0c;会声会影无疑是备受瞩目的一款。本文将为…

【全开源】知识库文档系统(ThinkPHP+FastAdmin)

&#x1f4da;知识库文档系统&#xff1a;解锁知识的无限可能 一款基于ThinkPHPFastAdmin开发的知识库文档系统&#xff0c;可用于企业工作流程的文档管理&#xff0c;结构化记录沉淀高价值信息&#xff0c;形成完整的知识体系&#xff0c;能够轻松提升知识的流转和传播效率&a…

收银系统源码-千呼新零售2.0【合作案例】

千呼新零售2.0系统是零售行业连锁店一体化收银系统&#xff0c;包括线下收银线上商城连锁店管理ERP管理商品管理供应商管理会员营销等功能为一体&#xff0c;线上线下数据全部打通。 适用于商超、便利店、水果、生鲜、母婴、服装、零食、百货等连锁店使用。 详细介绍请查看下…

英伟达唯一指定液冷散热供应商维谛技术的股价还有巨大的上涨空间

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 在“全球AI风向标”英伟达带来的超额回报影响下&#xff0c;以及华尔街持续看好英伟达后续走势的带动下&#xff0c;美股已经掀起了一场AI“淘金热”。猛兽财经将在本文中详细介绍一下我们之前就非常看好的一家在全球AI产业…

vue的elementUI的el-tree的选择

有一棵树型的数据,需要实现:在外部加一个 全选和不全选的按钮,去全部勾选树结构里面每一项的选框。 当点击勾选全选的时候,树的每一项都勾选; 当取消全选的时候,树的每一项都不勾选; 当选树的其中一项时,全选按钮是半选状态; 实现效果如下: <template><…