RoArm-M2-S 8. 使用指令控制机械臂
| ||||||||||||||||||||||
|
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。
在 RobotModel 选项卡内,找到 Description Topic,选择 /robot_description,就会出现 Links 的选项。
在 Links 选项中,找到 hand_tcp,展开后勾选 Show Trail,用于查看末端关节的运动轨迹。
接着在新终端中启动用于画圆的节点:
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 界面中机械臂画出的圆。