如何使用游戏手柄遥控机械臂
本指南将向您介绍如何使用游戏手柄来移动熊猫手臂。
先决条件
确保您的工作区已安装所需的软件包,并且您有一个受 ROS2 joy 支持的游戏手柄。可以通过启动“joy”节点,然后运行“ros2 topic echo /joy”来测试,以确保“joy”检测到您的游戏手柄。
要求
Ubuntu 22.04
ROS 2 Humble
MoveIt 2
MoveIt 2 教程
步骤
构建 MoveIt 2 工作区
首先,“cd” 到 moveit2 工作区的根目录。(如果您遵循了 入门 教程,则该目录为 ~/ws_moveit/
)。
然后,运行 colcon build
。
插入游戏手柄。
获取安装脚本并运行
moveit_servo
示例文件。
运行 source install/setup.bash
,然后运行 ``ros2 launch moveit_servo servo_example.launch.py``
移动手臂,使用下图作为指南。
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``节点的代码部分。
它们都是作为 ComposableNode
s 创建的。有关 ComposableNode
s 的更多信息,请参见 此处 和 此处。
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 时发布一次。它只是在规划场景中添加了一些障碍物。
JointJog
和 TwistStamped
消息之间的区别在于,逆运动学解算器移动关节以实现由 TwistStamped
消息定义的末端执行器运动,而 JointJog
消息直接移动各个关节。
当消息发布到 joy
主题时,将调用 joyCB
函数,并将游戏手柄上的按钮按下转换为手臂的命令。如果输入同时发布 JointJog
和 TwistStamped
消息,则仅发布 JointJog
消息。