RoArm-M2-S 8. 使用指令控制机械臂

来自Waveshare Wiki
跳转至: 导航搜索
RoArm-M2-S
{{{name2}}}
{{{name3}}}
功能简介
特性 RoArm-M2-S 机械臂
' 无特性,不解释
' 无特性,不解释
' 无特性,不解释
' 无特性,不解释
接口 TTL总线舵机控制接口 I2C UART

8. 使用指令控制机械臂

在本章中,您将学习如何通过调用 ROS2 服务使用基于指令来控制机械臂。

保持 roarm_driver 机械臂驱动节点运行的终端窗口,打开一个新的终端,运行用于指令控制的 Launch 文件,本例程依赖 Moveit2 进行动作规划:

cd ~/roarm_ws_em0/
ros2 launch roarm_moveit_cmd command_control.launch.py

注意:执行该指令后,机械臂将会转动(小臂伸向正前方,与水平面平行),请勿在机械臂周围放置易碎品,远离儿童。

想让 Rviz2 中显示机械臂,可以参考 4.2 运行 Moveit2 拖拽交互例程里面的操作步骤。


8.1 获取当前点位置

开启第三个新的终端,进入机械臂 ROS2 的工作空间,启动用来获取当前位置的节点:

cd ~/roarm_ws_em0/
ros2 run roarm_moveit_cmd getposecmd

再开启第四个终端,进入机械臂 ROS2 的工作空间,调用用来获取当前位置的服务:

cd ~/roarm_ws_em0/
ros2 service call /get_pose_cmd roarm_moveit/srv/GetPoseCmd


8.2 控制机械臂末端运动到指定位置

开启一个新的终端,进入机械臂 ROS2 的工作空间,启动用于运动控制的节点(用于接收目标位置):

cd ~/roarm_ws_em0/
ros2 run roarm_moveit_cmd movepointcmd

再开启一个新的终端,进入机械臂 ROS2 的工作空间,调用用来控制机械臂末端点位置的服务:

cd ~/roarm_ws_em0/
ros2 service call /move_point_cmd roarm_moveit/srv/MovePointCmd {"x: 0.2, y: 0, z: 0"}

xyz 为机械臂目标位置的坐标,单位为 m。你可以通过调用这个服务来控制机械臂运动到目标位置。


8.3 控制机械臂抓夹到指定弧度位置

开启一个新的终端,进入机械臂 ROS2 的工作空间,启动抓夹关节运动控制节点(接收目标弧度位置):

cd ~/roarm_ws_em0/
ros2 run roarm_moveit_cmd setgrippercmd

再开启一个新的终端,进入机械臂 ROS2 的工作空间,将数据发布到话题并控制抓夹关节的弧度位置:

cd ~/roarm_ws_em0/
ros2 topic pub /gripper_cmd std_msgs/msg/Float32 "{data: 0.2}" -1

data:是抓夹关节目标点的坐标,以弧度为单位。

通过调用该服务,您可以控制机械臂抓夹移动到给的目标位置。

8.4 在固定高度上画圆

在 Rviz2 中,点击 Add,添加 RobotModel。

M2-S使用指令画圆.png


在 RobotModel 选项卡内,找到 Description Topic,选择 /robot_description,就会出现 Links 的选项。

M2-S使用指令画圆1.png

在 Links 选项中,找到 hand_tcp,展开后勾选 Show Trail,用于查看末端关节的运动轨迹。

M2-S使用指令画圆2-1.png

接着在新终端中启动用于画圆的节点:

cd ~/roarm_ws_em0/
ros2 run roarm_moveit_cmd movecirclecmd

调用这个服务,来让机械臂在指定位置画圆:

cd ~/roarm_ws_em0/
ros2 service call /move_circle_cmd roarm_moveit/srv/MoveCircleCmd {"x: 0.2,y: 0,z: 0,radius: 0.1"}

x、y和z参数指定圆的中心,radius指定圆的半径(以米为单位),通过调用该服务,就可以控制机械臂在所需位置画圆,同时也可以看见 Rviz 2 界面中机械臂画出的圆。

RoArm-M2-S ROS2 Humble + Moveit2 教程