机器人操纵, 1 部分: 运动学
机器人操纵, 1 部分: 运动学
Posted by Christoph Hahn, April 11, 2018
在这篇博文中,塞巴斯蒂安. 卡斯特罗将用 MATLAB 和仿真来讨论机器人操作。这部分将讨论运动学, 接下来的部分将讨论动力学.
– –
让我们从运动学和动力学的快速比较开始。
机器人机械手通常由几个关节组成。关节由旋转或 棱镜(线性) 自由度 (自由度) 组成 。因此, 可以控制关节位置, 将机器人的末端效应器放置在3D 空间中。
如果你知道机器人的几何形状和所有的关节位置, 你就可以计算出机器人上任何点的位置和方向。这称为正向运动学 (FK).
然而, 更频繁的机器人操纵问题恰恰相反。我们要计算所需的关节角度, 以便最终效应器达到一个特定的位置和方向。这被称为逆运动学 (IK), 更难解决。
根据您的机器人几何, IK 可以解析或数值计算。
您的终端执行器的3D 姿势可以指定6参数: 3 的位置和3的方向。从技术上讲, 如果你的机械手中有多达6非冗余关节, 你可以推导出一个解析解, 假设所需的位置是可到达的。
机器人设计者很聪明地确保他们的机械手具有高度的可控性自由度, 同时仍然确保分析 IK 解决方案是可能的。例如, 我一直在接受Udacity 机器人软件工程师 Nanodegree, 其中一个项目涉及库卡 KR210 6 自由度机械手的分析 IK。该机械手有一个球形手腕, 分离的位置和方向分析 IK 问题。你可以在 GitHub 上找到我的份书面记录.
那么, 为什么你会选择一个数值解决方案呢?下面是一些想法。
有多个解决方案的情况下, 这是相对容易处理的分析 IK。
左IK 正好有两个解决方案-"超过" 或 "下"。
权利IK 具有无限的解决方案, 因为基的任何旋转都是有效的。
复杂的操作案例, 可能是数值解决方案的候选对象。
(左) 7 自由度机械手可以将末端效应器定位为多个有效解。
权利机械手上两个坐标系之间的位置约束示例。
综上所述, 解析 IK 是快速、准确、可靠的。然而, 当你走向更困难的问题时, 数值解决方案往往更容易实现, 甚至是必要的。
现在, 你希望有一个基本的想法, 为什么机械手运动学是重要的, 什么样的现实世界的问题, 他们可以解决。在 MATLAB 和仿真中, 有两种内置的方法可以与机器人机械手模型一起使用。
刚性体树对象和 Simscape 多体模型都可以从头开始创建, 或者从统一的机器人描述格式 (URDF) 文件中导入。此外, Simscape 多体还可以从通用 CAD 软件中导入3D 模型。我的同事克里斯托弗. 汉娜在这上面写了一篇博文。
从2018a 版开始, 机器人系统工具箱包括一个机械手算法的仿真块库。这些块允许您对刚体树对象进行运动学和动态分析, 从而使上述两种表示在系统级仿真和控制设计应用中共同工作。在2部分中, 您将进一步了解这一点。
是的, 这些块生成 c/c++ 代码, 这样您就可以在 MATLAB 和仿真之外部署独立的算法。
机器人系统工具箱为机械手的逆运动学提供两个数值求解器:
下面是一些例子 MATLAB 代码和一个广义 IK 的动画模型的反思索耶, 它有一个7自由度的手臂。在这里, 我们设置了一个约束的最终效应器的位置, 同时强制执行, 最终效应指向一个单独的目标点附近的地面。
-
sawyer = importrobot(
'sawyer.urdf',
'MeshPath', ...
-
fullfile(fileparts(which(
'sawyer.urdf')),
'..',
'meshes',
'sawyer_pv'));
-
gik = robotics.GeneralizedInverseKinematics(
'RigidBodyTree',sawyer, ...
-
'ConstraintInputs',{
'position',
'aiming'});
-
-
% Target Position constraint
-
targetPos = [
0.5,
0.5,
0];
-
handPosTgt = robotics.PositionTarget(
'right_hand',
'TargetPosition',targetPos);
-
-
% Target Aiming constraint
-
targetPoint = [
1,
0,
-0.5];
-
handAimTgt = robotics.AimingConstraint(
'right_hand',
'TargetPoint',targetPoint);
-
-
% Solve Generalized IK
-
[
gikSoln,solnInfo] = gik(sawyer.homeConfiguration,handPosTgt,handAimTgt)
-
show(sawyer,gikSoln);
测试了 IK 解决方案后, MATLAB 和仿真软件允许您探索构建完整的机器人操作系统的下一步步骤, 例如:
我们在视频 "设计机器人机械手算法" 中进行了讨论, 其特点是4自由度ROBOTIS OpenManipulator 平台。您可以从MATLAB 中央文件交换下载示例文件.
结论
你们中的许多人可能正在为已经有内置联合扭矩控制器的现有机器人开发算法。从这个角度, 你可以假设机器人关节将充分跟踪你提供的任何有效的设定。
运动学单独可以是有用的设计运动规划算法, 以及执行分析完全基于机器人几何-例如, 工作空间分析或避碰。
在接下来的部分中, 我们将更多地讨论机械手动力学, 以及如何使用 MATLAB 和仿真技术来简化低级控制设计应用程序。
Robot Manipulation, Part 1: Kinematics
https://blogs.mathworks.com/racing-lounge/2018/04/11/robot-manipulation-part-1-kinematics/?dir=autoplay
Posted by Christoph Hahn, April 25, 2018
在这篇博文中,塞巴斯蒂安. 卡斯特罗将用 MATLAB 和仿真来讨论机器人操作。上一部分讨论了运动学(如果你没有阅读它, 我们建议你这样做), 而这一部分讨论动力学.
为了激发低电平机械手控制的重要性, 我想介绍几个工程原型。
当然, 在现实生活中没有什么是非常严格的分离。可能是机器人制造商将提供自己的控制器, 但也可以决定暴露控制参数, 选项, 甚至可能是一个直接接口的执行器扭矩。
为了重述前面的部分, 运动学将机器人机械手的关节位置映射为感兴趣的坐标系的位置和方向-通常是端部效应器。另一方面, 动力学将所需的关节力和扭矩映射到它们的位置、速度和加速度。
要从运动学转向动力学, 我们需要更多关于机械手力学的信息。具体地说, 我们需要以下惯性特性:
机器人机械手控制器可以包含以下组件。
在我们的视频 "控制机械手关节", 我们探索两个不同的联合控制器的例子, 以4自由度ROBOTIS OpenManipulator 平台为特色。您也可以从MATLAB 中央文件交换下载示例文件.
控制器示例 1: 逆运动学 + 联合空间控制器
首先,逆运动学 (IK)用于将参考端效应器位置转换为一组参考关节角。然后, 控制器完全在配置空间中 (即在联合位置上) 操作。
为了平滑运动, 我们通常需要一个闭合形式的轨迹, 如曲线方程。这是因为逆动力学需要位置、速度和加速度来计算所需的关节力/扭矩。因此, 有一个可微的参考轨迹, 使这容易得多。
理论上, 逆动力学应该足以控制机器人手臂。然而, 有关节力学 (刚度, 阻尼, 摩擦等), 测扰动, 传感器/执行器噪音, 甚至数字误差, 这可能会很容易影响到完全开环控制器的鲁棒性。因此, 总是推荐一个额外的反馈补偿器。
虽然前馈和反馈控制部分相对容易实现, 计算成本低廉, 但该控制器结构依赖于求解 IK。正如我们在前面部分讨论的,机器人系统工具箱的实现使用一个数值解决方案, 因此可以需要大量的计算。您可以通过提供良好的初始猜测 (通常是以前的度量) 来解决此问题, 限制最大迭代次数, 或者切换到分析 IK 解决方案。
第二个控制器执行任务空间中的控制, 即, 在末端效应器位置和方向上。此外, 它还避免了使用几何雅可比对逆运动学的需要。
几何雅可比是机器人配置q (关节角度/位置) 的功能, 这就是为什么它经常被称为J (q)。雅可比是一个映射从联合速度到世界速度的坐标框架的利益。然而, 有了一点数学, 你可以发现它也映射联合部队/扭矩的世界力量/扭矩。我发现这个博客帖子是一个有用的参考。
下面是这个示例控制器的仿真模型的截图。与上面的示意图不同, 该模型包含其他现实的工件, 如滤镜、速率限制器、饱和度和具有基本逻辑的解耦爪控制器。您可以从MATLAB 中央文件交换下载此模型.
一旦你有了你的机械手模型, 在 MATLAB 和仿真中有很多工具可以帮助你设计联合控制器。这些包括
ROBOTIS OpenManipulator 模型 "肩" 关节上的 PID 调谐器输出
传统的控制设计依赖于线性化, 或者找到一个关于特定操作点的非线性模型的线性近似--例如, 机械手的 "家" 或平衡位置。当机器人状态偏离该区域时, 设计大约线性区域的控制器会变得不那么有效, 并且可能不稳定。
非线性控制技术可以通过考虑系统的测量状态 (在我们的情况下, 联合或末端效应器位置) 来解决这个问题。前馈技术, 如逆动力学, 或计算几何雅可比的苍蝇, 可以确保控制器在模型中的非线性。另一个流行的技术是增益调度, 这既可以用于传统的控制器和MPC 控制器.
另一种选择是采用无模型技术, 例如:
Robot Manipulation, Part 2: Dynamics and Control
https://blogs.mathworks.com/racing-lounge/2018/04/25/robot-manipulation-part-2-dynamics-and-control/?dir=autoplay
现在你已经看到了机器人机械手设计的运动学和动力学的概述。我希望这是一个有用的介绍, 在这个领域的语言, 一些常用的技术在实践中, 和领域, MATLAB 和仿真可以帮助你设计和控制机器人。
我们希望, 当您探索不同的体系结构、集成监控逻辑、执行权衡研究等时, 仿真可以帮助您设计阶段。另外, 请记住, 仿真允许您从控制算法自动生成独立的 c/c++ 代码, 因此可以将它们部署到硬件或中间件 (如ROS ) 中。.
如果你想看到更多的关于机器人操作的材料, 或机器人的其他主题, 请随时给我们留下评论或电子邮件在[email protected] roboticsarena@mathworks. com。
参看网址:
https://blogs.mathworks.com/racing-lounge/2017/11/08/matlab-simulink-ros/
https://blogs.mathworks.com/racing-lounge/category/robotics/?s_tid=Blog_racing-lounge_Category
https://blogs.mathworks.com/racing-lounge/2018/04/25/robot-manipulation-part-2-dynamics-and-control/?dir=autoplay#