机器人操作,第1部分:运动学
在这篇博文中,塞巴斯蒂安·卡斯特罗将讨论用MATLAB和Simulink进行机器人操作。金宝app本部分将讨论运动学 ,下一个部分将讨论动力学.
- - - - - - - - - - - -
机器人操纵器速成班
让我们从运动学和动力学的快速比较开始。
- 运动学是不考虑力的运动分析。在这里,我们只需要几何性质,如机械手的长度和自由度。
- 动力学是对由力引起的运动的分析。除了几何,我们现在还需要质量和惯性等参数来计算物体的加速度。
机器人操纵器通常由几个关节.关节由转动(旋转)或棱镜(线性)自由度(景深)。因此,可以控制关节位置,将机器人的末端执行器放置在三维空间中。
如果你知道机器人的几何形状和所有关节的位置,你就可以计算出机器人上任何一点的位置和方向。这被称为正运动学(颗).
然而,更频繁的机器人操作问题却恰恰相反。我们想要计算关节角度需要这样的末端执行器达到一个特定的位置和方向。这被称为逆运动学(反向),比较难解决。
求解逆运动学
根据你的机器人几何形状,IK可以解析或数值解决。
- 分析解决方案金宝搏官方网站这意味着你可以推导出,一个封闭形式的,关节位置的表达式给定期望的末端执行器位置。这是有益的,因为你离线完成所有的工作,解决IK会很快。与工程中的一切一样:如果您有系统的精确模型,您应该充分利用它!
- 数字解决方案金宝搏官方网站它们通常比分析解决方案更慢,更不可预测,但它们可以解决比分析解决方案更难的问题(我们将在下面展开)。金宝搏官方网站然而,这些解以初始条件、优化算金宝搏官方网站法选择甚至随机机会的形式引入了不确定性。所以,你可能得不到你想要的答案。
末端执行器的3D姿态可以由6个参数指定:3个用于位置,3个用于方向。从技术上讲,如果在你的机械臂中有多达6个非冗余关节,假设期望的位置是可达的,你可以推导出一个解析解。
机器人设计师已经聪明地确保他们的操纵器有高自由度的可控性,同时仍然确保分析IK解决方案是可能的。金宝搏官方网站例如,我一直在Udacity机器人软件工程师纳米学位,其中一个项目涉及a的IK分析库卡KR2106自由度机械手。该机械手有一个球形手腕,解耦的位置和姿态分析IK问题。你可以在GitHub上找到我的文章.
那么,为什么要选择一个数值解呢?这里有一些想法。
- 你的机械手有冗余自由度(通常是7个或更多)
- 你不会想要推导数学,并拥有计算资源来得到一个数值解
- 你的目标位置是无效的,但你仍然想要尽可能接近它
- 有多个,甚至无限个解析解金宝搏官方网站
- 你想要引入多个复杂的约束
有多个解决方案的情况下,这是相对容易处理的分析IK。金宝搏官方网站
(左图)IK有两种解决方案——“超过”或“低于”。金宝搏官方网站
(右)IK有无限的解,因为任何基座旋转都是有效的金宝搏官方网站。
复杂的操作情况,可能是数值解的候选人。
(左)7自由度机械手可以用多个有效解对末端执行器进行定位。金宝搏官方网站
(右)机械手两个坐标系间的位置约束示例。
综上所述,分析求解IK是快速、准确、可靠的。然而,当你转向更困难的问题时,数值解通常更容易实现,甚至是必要的。金宝搏官方网站
在MATLAB和Simulink中表示机器人金宝app
现在,希望你们已经对机械手运动学的重要性有了基本的了解,以及它们能解决什么样的现实问题。在MATLAB和Simulink中有两种内置的方法可以处理机器人机械手模型。金宝app
MATLAB
- 怎样去:创建一个刚体树状物体
- 当使用:求解正、逆运动学和动力学,提取力学性质(雅可比矩阵、质量矩阵、重力力矩等)
金宝app
- 怎样去:创建一个Simscape多体模型
- 当使用:系统级动态仿真,与驱动器物理模型的集成,接触力学等。
刚体树对象和Simscape多体模型都可以从头创建或导入URDF (Unified Robot Description Format)文件.此外,Simscape Multibody还可以从常用的CAD软件中导入3D模型。我的同事Christoph Hahn写了博客在这。
从发布2018a开始,机器人系统工具箱包括一个Simulink的机械手算法块库金宝app.这些模块允许您在Simulink中对刚体树对象执行运动学和动力学分析,这使得上述两种表示在系统级仿真和控制设计应用程序中协同工作。金宝app您将在第2部分学习更多相关内容。
是的,这些块生成C/ c++代码,所以你可以在MATLAB和Simulink之外部署独立的算法。金宝app
MATLAB和Simulink中的逆运动学金宝app
机器人系统工具箱提供了两个机械手逆运动学数值求解器:
下面是一个模型上的广义IK的MATLAB代码示例和动画考虑索耶它有一个7自由度的手臂。这里,我们在末端执行器位置上设置一个约束,同时强制末端执行器指向靠近地面的一个单独的目标点。
索耶= importrobot(索耶。urdf”、“MeshPath”,……(“sawyer.urdf fullfile (fileparts ( ')),'..',' 网格”、“sawyer_pv '));gik =机器人。GeneralizedInverseKinematics(“RigidBodyTree”,索耶,…ConstraintInputs,{“位置”,“目标”});%目标位置约束targetPos = [0.5, 0.5, 0];handPosTgt = robotics.PositionTarget(‘right_hand’,‘TargetPosition targetPos);% Target瞄准约束targetPoint = [1,0, -0.5];handAimTgt = robotics.AimingConstraint(“right_hand”、“靶点”,“靶点);% Solve Generalized IK [gikSoln,solnInfo] = gik(sawyer. homeconfiguration,handPosTgt,handAimTgt) show(sawyer,gikSoln);
你还能想到其他什么约束条件来让运动更流畅?
逆运动学在更大的图片
一旦你测试了你的IK解决方案,MATLAB和Simulink允许你探索下一步走向建立一个完整的机金宝app器人操作系统,如:
- 将IK与机器人动力学仿真相结合
- 添加其他算法,如管理逻辑、感知和路径规划
- 自动生成独立的C/ c++代码从你的算法和部署到硬件或中间件,如ROS
我们在“设计机器人操作器算法”的视频中讨论了这一点,该视频的特点是4-DOFROBOTIS OpenManipulator平台.您可以从MATLAB中央文件交换.
(视频)MATLAB和Simu金宝applink Robotics Arena:设计机器人操作器算法
结论
你们中的许多人可能正在为已经有内置关节力矩控制器的现有机器人开发算法。从这个角度来看,您可以假设机器人关节将充分跟踪您提供的任何有效设置点。
运动学本身可以用于设计运动规划算法,以及执行基于机器人几何结构的分析-例如,工作空间分析或避碰。
在下一个部分,我们将更多地讨论机械手动力学,以及这如何促进使用MATLAB和Simulink的低层控制设计应用程序。金宝app
欢迎留言或给我们发电子邮件roboticsarena@mathworks.com.我希望你喜欢阅读!
——塞巴斯蒂安
评论
要留下评论,请点击在这里登录到您的MathWorks帐户或创建一个新帐户。