目录
15.构建 panda_moveit_config 包并运行演示
0.前言
MoveIt 和 ROS 2
-
如果您尚未按照说明 先安装 MoveIt。
-
我们使用 moveit_resources_panda_description 包。如果您已完成 MoveIt 安装说明,则此包应已包含在您的工作区中。
1.开始
要启动 MoveIt 设置助手:
ros2 launch moveit_setup_assistant setup_assistant.launch.py
这将打开包含两个选项的开始屏幕:新建 MoveIt 配置包或编辑现有 MoveIt 配置包。
单击 Create New MoveIt Configuration Package 按钮以 调出以下屏幕:
点击 浏览 按钮并导航到文件 从以下路径中可用:panda.urdf
moveit_resources_panda_description package
~/ws_moveit2/src/moveit_resources/panda_description/urdf/panda.urdf
选择该文件,然后单击 Load Files(加载文件)。这 Setup Assistant 将加载文件(这可能需要几秒钟) 并向您显示此屏幕:
2.生成自冲突矩阵
默认的自碰撞矩阵生成器可以帮助缩短运动规划时间 通过对机器人上已知安全的链对禁用碰撞检查。 这是通过确定哪些链路对始终处于冲突状态、从不处于冲突状态来实现的。 在机器人的默认位置发生碰撞,或在运动链上彼此相邻。
您可以设置采样密度,这决定了检查多少个随机机器人位置以进行自碰撞。 尽管生成器默认检查 10,000 个随机位置,但使用采样密度的最大值为 以确保更准确的结果。碰撞检查是并行完成的,以减少总体 生成碰撞矩阵的处理时间。
要生成碰撞矩阵,请选择 MoveIt Setup Assistant 左侧的 Self-Collisions 窗格 并调整自碰撞采样密度。然后,单击 Generate Collision Matrix 按钮开始计算。 Setup Assistant 将花费几秒钟来计算自冲突矩阵,其中包括检查对 可以安全地从冲突检查中禁用的链接。
计算完成后,结果将显示在主表中。 该表显示了已识别为安全或不安全以禁用冲突检查的链接对。 可以安全禁用的链接标有复选标记。您可以根据需要手动调整复选标记,以 启用或禁用特定链路对的自冲突检查。
3.添加虚拟关节
虚拟关节主要用于将机器人连接到世界。 对于 Panda 手臂,它是一个固定的基础操纵器,定义一个固定的虚拟关节 是可选的。但是,我们将定义一个虚拟关节,将手臂的 连接到框架。这个虚拟关节表示手臂的底部 在世界坐标系中保持静止。fixed
panda_link0
world
-
单击 Virtual Joints 窗格选择器。单击 Add Virtual Joint。
-
将关节名称设置为 。
virtual_joint
-
将子链接设置为 ,将父框架名称设置为 。
panda_link0
world
-
Set the Joint Type as .
fixed
-
Click Save and you should see this screen:
4.添加规划组
MoveIt 中的规划组在语义上描述了机器人的不同部分, (如手臂或末端执行器)来促进运动规划。
可以将 Move 组配置为与机器人上的特定运动链相对应。 这是一组链接和关节,用于定义一系列转换 从机器人的底座到末端执行器。例如,可以将移动组定义为 表示机器人的手臂,它由移动手臂所需的所有链接和关节组成。
移动组也可以由机器人上对应的链接或关节集来表示。 例如,可以定义一个移动组来表示机器人的夹持器。 它将包括一起移动以实现夹持器打开或关闭运动所需的所有链节或关节。
-
单击 Planning Groups 窗格选择器。
-
单击 Add Group(添加组),您应该会看到以下屏幕:
添加臂组
-
我们首先将 Panda arm 添加为规划组
现在,单击 Add Joints 按钮。您将看到一个 左侧的关节列表。您需要选择所有 属于 ARM 的关节,并将其添加到右侧 边。关节按其存储顺序排列 内部树结构。这使得选择序列号变得容易 关节链。
单击 ,按住键盘上的 Shift 按钮,然后单击 。现在点击 > 按钮添加这些 joints (关节) 添加到右侧的 Selected Joints (选定关节) 列表中。virtual_joint
panda_joint8
单击 Save 以保存所选组。
添加末端效应器组
继续执行以下步骤。
-
单击 Add Group 按钮。
-
输入 Group Name 作为 。
hand
-
让 Kinematic Solver 保持其默认值,即 None。
-
让 Kin.搜索 Resolution 和 Kin。Search Timeout (搜索超时) 保持其默认值。
-
点击 Add Links 按钮。
-
选择 、 和 并添加它们 添加到右侧的 Selected Links 列表中。
panda_hand
panda_leftfinger
panda_rightfinger
-
单击 Save (保存)。
添加手臂组和手部组后,自定义组列表应如下所示。
5.添加机器人姿势
Setup Assistant 允许您将预定义的姿势添加到机器人的配置中。 这对于定义特定的 Initial 或 Ready Pose 非常有用。 稍后,可以使用 MoveIt API 命令机器人移动到这些姿势。
为手臂添加就绪姿势
-
单击 Robot Poses 窗格。
-
单击 Add Pose。选择姿势的名称。机器人将 在 Default Pose 中,所有关节都设置为零值。 四处移动各个关节,直到您满意为止,然后 Save the pose(保存姿势)。请注意姿势如何与特定 组。您可以为每个组保存单独的姿势。
-
选择 并使用以下关节值为其定义姿势。
panda_arm
ready
{0.0, -0.785, 0.0, -2.356, 0.0, 1.571, 0.785}
为抓手添加打开和关闭姿势
-
按照相同的步骤定义手臂的姿势,但选择组。
hand
-
为具有 joint 值 的组添加姿势。
open
hand
0.035
-
为具有 joint 值为 的组添加姿势。
close
hand
0.0
在上述步骤之后,应为 和 组定义以下一组机器人姿势。panda_arm
hand
6.标记末端执行器
现在我们已经将 Panda 的手牌添加为移动组,我们可以指定它 作为末端执行器。通过将组指定为末端效应器,MoveIt 可以对其执行某些特殊操作。 例如,末端执行器可用于在执行拾取和放置任务时将对象附加到手臂上。
-
单击 End Effectors 窗格。
-
单击 Add End Effector (添加末端执行器)。
-
选择作为夹持器的 End Effector Name。
hand
-
选择作为 End Effector 组。
hand
-
选择作为此末端执行器的父链接。
panda_link8
-
将 Parent Group (父组) 留空。
7.添加被动关节
Passive Joints 窗格旨在允许指定任何被动 机器人中可能存在的关节。这些是未启动的关节, 这意味着它们不能被直接控制。请务必指定 被动关节,以便规划者知道它们的存在并可以避免 为他们规划。如果规划者不知道被动关节,则 可能会尝试规划涉及移动被动关节的轨迹,这将 导致计划无效。Panda 机械臂没有任何被动关节,所以我们跳过这一步。
8.ros2_control URDF 修改
ros2_control URDF 修改窗格有助于修改机器人 URDF 以使用 ros2_control。
此修改为定义的移动组中的每个关节添加了命令和状态接口的标签。 标签定义可以发送以控制关节的命令类型。 标签定义可从关节读取的状态信息类型。command_interface
state_interface
默认情况下,MoveIt 设置助理代入位置命令界面 以及 Position 和 Velocity 状态接口,我们将继续进行此设置。
如有必要,为您的机器人关节选择所需的命令或状态接口,以及 然后单击 Add Interfaces 按钮。
9.ROS 2 控制器
ROS 2 Control 是一个用于实时控制机器人的框架, 旨在管理和简化新机器人硬件的集成。 有关更多详细信息,请查看ros2_control文档。
ROS 2 控制器窗格可用于自动生成模拟控制器以驱动机器人关节。
添加 arm 控制器
-
单击 ROS 2 Controllers 窗格选择器。
-
单击 Add Controller(添加控制器),您应该会看到以下屏幕:
-
我们首先添加 Panda arm 关节轨迹控制器。
-
输入 Controller Name (控制器名称)。
panda_arm_controller
-
选择 joint_trajectory_controller/JointTrajectoryController 作为控制器类型
-
接下来,我们需要选择控制器关节。可以单独添加关节,也可以按 Move 组添加关节。
-
现在,单击 Add Planning Group Joints。
-
从 Available Groups (可用组) 选项卡中选择组,并将其添加到 Selected Groups (选定组)。
panda_arm
-
单击 Save 以保存选定的控制器。
添加手控器
-
对手臂执行相同的步骤,但选择 position_controllers/GripperActionController
-
从 Available Groups 选项卡中选择 group 并将其添加到 Selected Groups 中。
hand
-
单击 Save 以保存选定的控制器。
选择手臂和手部控制器后,控制器列表应如下所示。
10.MoveIt 控制器
MoveIt 需要具有 执行计划的轨迹。此接口将生成的轨迹发送到机器人 ROS 2 控制器。FollowJointTrajectoryAction
MoveIt 控制器窗格可用于自动生成 MoveIt 控制器管理器要使用的控制器。 确保控制器名称与上一个 ROS 2 控制器步骤中配置的控制器名称匹配。 此步骤的用户界面与上一个类似。
添加 arm MoveIt 控制器
-
单击 MoveIt 控制器窗格选择器。
-
单击 Add Controller 以创建新的 arm 控制器。
-
输入 Controller Name (控制器名称)。
panda_arm_controller
-
选择 FollowJointTrajectory 控制器类型。
-
选择具有规划组的控制器关节。
panda_arm
-
保存控制器。
添加手部 MoveIt 控制器
-
单击 Add Controller 以创建新的控制器。
-
输入 Controller Name (控制器名称)。
hand_controller
-
选择 Gripper Command Controller Type。
-
选择具有规划组的控制器关节。
hand
-
保存控制器。
完成上述步骤后,手臂和手的 MoveIt 控制器列表应如下所示。
11.感知
Setup Assistant 中的 Perception 选项卡用于配置设置 用于机器人使用的 3D 传感器。这些设置保存在名为 sensors_3d.yaml 的 YAML 配置文件中。
如果不需要 sensors_3d.yaml,请选择 None 并继续下一步。
要生成point_cloud配置参数,请参阅以下示例:
有关这些参数的更多详细信息,请参阅 Perception Pipeline 教程。
12.启动文件
在 Launch Files (启动文件) 窗格中,您可以查看将生成的启动文件列表。 默认选项通常就足够了,但如果您对应用程序有特定要求, 您可以根据需要进行更改。单击每个文件可查看其功能摘要。
13.添加作者信息
Colcon 需要作者信息用于发布目的。
-
单击 Author Information 窗格。
-
输入您的姓名和电子邮件地址。
14.生成配置文件
最后一步 - 生成所有配置 开始使用 MoveIt 所需的文件。
-
单击 Configuration Files(配置文件)窗格。选择一个位置,然后 name (将生成的包含您的新 ROS 2 包) 一组配置文件。点击浏览,选择商品 位置(例如,您的 ROS 2 工作区的 src 目录),单击 Create Folder,调用它,然后单击 Open。所有生成的文件都将直接进入配置文件目录。
panda_moveit_config
-
单击 Generate Package 按钮。Setup Assistant 将 现在,将一组启动和配置文件生成到 目录中。所有生成的文件都将出现在 files to be generated 选项卡,您可以单击每个选项卡以获取 他们做什么的描述。有关生成的文件的更多信息, 请参阅文档中的 Configuration 部分。
现在,您已完成生成 MoveIt 所需的配置文件。
15.构建 panda_moveit_config 包并运行演示
要仅构建生成的包并运行演示,请执行以下步骤。panda_moveit_config
cd ~/ws_moveit2
colcon build --packages-select panda_moveit_config
source install/setup.bash
启动 MoveIt 演示,在 RViz 中以交互方式规划和执行机器人的运动。
ros2 launch panda_moveit_config demo.launch.py