如何使用游戏手柄遥控机械臂

本指南将向您介绍如何使用游戏手柄来移动熊猫手臂。

先决条件

确保您的工作区已安装所需的软件包,并且您有一个受 ROS2 joy 支持的游戏手柄。可以通过启动“joy”节点,然后运行“ros2 topic echo /joy”来测试,以确保“joy”检测到您的游戏手柄。

要求

  • Ubuntu 22.04

  • ROS 2 Humble

  • MoveIt 2

  • MoveIt 2 教程

  • ROS2 joy

步骤

  1. 构建 MoveIt 2 工作区

首先,“cd” 到 moveit2 工作区的根目录。(如果您遵循了 入门 教程,则该目录为 ~/ws_moveit/)。

然后,运行 colcon build

  1. 插入游戏手柄。

  2. 获取安装脚本并运行 moveit_servo 示例文件。

运行 source install/setup.bash,然后运行 ​​``ros2 launch moveit_servo servo_example.launch.py​​``

  1. 移动手臂,使用下图作为指南。

drawio 文档可以在`此处 <https://drive.google.com/file/d/1Hr3ZLvkYo0y0fA3Qb1Nk_y7wag4UO8Al/view?usp=sharing>`__ 中看到。

解释

本节介绍启动文件和将游戏手柄输入转换为运动命令的节点。

启动文件

启动此示例的文件是 ws_moveit2/src/moveit2/moveit_ros/moveit_servo/launch/servo_example.launch.py​​

此启动文件启动熊猫臂规划所需的一切,还启动``joy``节点和``JoyToServoPub``节点(如下所述)。

主要感兴趣的是启动 joy 和``JoyToServoPub``节点的代码部分。 它们都是作为 ComposableNodes 创建的。有关 ComposableNodes 的更多信息,请参见 此处此处

ComposableNode(
    package="moveit_servo",
    plugin="moveit_servo::JoyToServoPub",
    name="controller_to_servo_node",
),
ComposableNode(
    package="joy",
    plugin="joy::Joy",
    name="joy_node",
)

JoyToServoPub

将游戏手柄输入转换为运动命令的节点是 ws_moveit2/src/moveit2/moveit_ros/moveit_servo/src/teleop_demo/joystick_servo_example.cpp

此节点订阅 joy 节点(发布提供游戏手柄状态的消息)。它发布 TwistStamped 消息、JointJog 消息和 PlanningScene 消息。

PlanningScene 消息仅在首次构建 JoyToServoPub 时发布一次。它只是在规划场景中添加了一些障碍物。

JointJogTwistStamped 消息之间的区别在于,逆运动学解算器移动关节以实现由 TwistStamped 消息定义的末端执行器运动,而 JointJog 消息直接移动各个关节。

当消息发布到 joy 主题时,将调用 joyCB 函数,并将游戏手柄上的按钮按下转换为手臂的命令。如果输入同时发布 JointJogTwistStamped 消息,则仅发布 JointJog 消息。