MATLAB - 选择机械臂路径规划、轨迹规划方式

kuan_li_lyg 2024-06-15 10:05:02 阅读 60

系列文章目录


前言

本示例概述了机器人系统工具箱™中可用的轨迹类型。在机械手运动、规划和控制应用中,必须为机器人选择轨迹。本示例有三个主要部分。第一部分展示了机械手使用的轨迹类型,第二部分演示了生成轨迹的功能,最后一部分则展示了更多轨迹规划工具。


一、机械手的轨迹类型

在机械手中使用轨迹时,目标是在某些约束条件下提供可行的结果。例如,您通常希望轨迹具有平滑和连续的导数,如不需要瞬时速度或加速度的轨迹。轨迹还可能受位置、速度或加速度约束。在关节空间和任务空间中使用轨迹一般有两种方法。

1.1 关节空间轨迹

关节空间轨迹通常包含一组通过平滑运动连接的多个机器人配置的航点。本示例使用梯形速度曲线生成轨迹,每个关节逐渐加速到最大速度,并在接近下一个航点时减速。更多信息,请参阅梯形速度曲线轨迹。

为 Franka Emika Panda™ 机器人生成连接航点的梯形速度曲线轨迹。首先,定义轨迹的时间矢量并加载机器人模型。

tpts = 0:4;sampleRate = 20;tvec = tpts(1):1/sampleRate:tpts(end);numSamples = length(tvec);robot = loadrobot("frankaEmikaPanda",DataFormat="column");

定义关节空间轨迹。对于该轨迹,航点是模型的原点配置和两个随机配置。

rng defaultfrankaWaypoints = [robot.homeConfiguration robot.randomConfiguration robot.randomConfiguration];frankaTimepoints = linspace(tvec(1),tvec(end),3);[q,qd] = trapveltraj(frankaWaypoints,numSamples);

通过迭代生成的轨迹点 q,可视化机器人执行轨迹。

figureset(gcf,"Visible","on");rc = rateControl(sampleRate);for i = 1:numSamples show(robot,q(:,i),FastUpdate=true,PreservePlot=false); waitfor(rc);end

eacb8133da2a4fb1aa1d8d8422cbb4a2.png

要检查不同的关节位置和速度,请绘制所有维度与时间的对比图。使用 helperPlotJointSpaceTraj 辅助函数绘制关节空间轨迹及其航点。

helperPlotJointSpaceTraj("Joint-Space Trajectory and Waypoints", ... tvec,q,qd,frankaWaypoints,frankaTimepoints);

0527ebc0edce4be1b648def357a912d9.png

1.2 任务空间轨迹

任务空间轨迹包含代表三维空间中末端执行器运动的航点。生成最小抖动轨迹来连接自由空间中的航点。该轨迹轮廓的目的是创建一个平滑的轨迹,尽量减少生涩的运动。更多信息,请参阅 "最小抖动轨迹"。然后使用逆运动学生成弗兰卡-艾米卡熊猫机器人的关节配置。

首先,创建一组航点,然后使用 minjerkpolytraj 创建最小抖动轨迹。

frankaSpaceWaypoints = [0.5 0.25 0.25; 0.75 0 0.35; 0.5 -0.25 0.25; 0.5 0.25 0.25]';frankaTimepoints = linspace(tvec(1),tvec(end),4);[pos,vel] = minjerkpolytraj(frankaSpaceWaypoints,frankaTimepoints,numSamples);

使用 inverseKinematics(逆运动学)函数创建一个逆运动学求解器,并求解在轨迹上达到所需末端执行器位置的配置。

rng(0) % Seed the RNG so the inverse kinematics solution is consistentik = inverseKinematics(RigidBodyTree=robot);ik.SolverParameters.AllowRandomRestart = false;q &#



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。