RoArm-M3 使用指令控制机械臂
|
| ||||||||||||||||||||||
| ||||||||||||||||||||||
6. 使用指令控制机械臂
在本章中,您将学习如何通过调用 ROS2 服务使用基于指令来控制机械臂。
保持 roarm_driver 机械臂驱动节点运行的终端窗口,打开一个新的终端并进入容器,运行用于指令控制的 Launch 文件,本例程依赖 Moveit2 进行动作规划:
cd /home/ws/roarm_ws/ ros2 launch roarm_moveit_cmd command_control.launch.py
注意:执行该指令后,机械臂将会转动(小臂伸向正前方,与水平面平行),请勿在机械臂周围放置易碎品,远离儿童。
想让 Rviz2 中显示机械臂,可以参考 4.2 运行 Moveit2 拖拽交互例程里面的操作步骤。
6.1 获取当前点位置
再开启第三个终端进入容器,再进入机械臂 ROS2 的工作空间,调用用来获取当前位置的服务:
cd /home/ws/roarm_ws/ ros2 service call /get_pose_cmd roarm_msgs/srv/GetPoseCmd
6.2 控制机械臂末端运动到指定位置
开启一个新的终端进入容器后,再进入机械臂 ROS2 的工作空间,调用用来控制机械臂末端点位置的服务:
cd /home/ws/roarm_ws/
ros2 service call /move_joint_cmd roarm_msgs/srv/MoveJointCmd "{x: 0.3, y: 0, z: 0.1, roll: 0.2, pitch: 0.2, yaw: 0}"
xyz 为机械臂目标位置的坐标,单位为 m。Roll、Pitch 和 Yaw 是末端执行器的旋转角度,单位为弧度。你可以通过调用这个服务来控制机械臂运动到目标位置。
6.3 控制机械臂末端到线轨迹的指定位置(滚动和俯仰保持不变)
开启一个新的终端进入容器后,再进入机械臂 ROS2 的工作空间,调用该服务,使机械臂在线轨迹处移动到指定姿势:
cd /home/ws/roarm_ws/
ros2 service call /move_line_cmd roarm_msgs/srv/MoveLineCmd "{x: 0.2, y: 0.2, z: 0.1}"
x、y 和 z 是目标点的坐标,以米为单位。
6.4 控制机械臂抓夹到指定弧度位置
开启一个新的终端进入容器后,再进入机械臂 ROS2 的工作空间,将数据发布到话题并控制抓夹关节的弧度位置:
cd /home/ws/roarm_ws/
ros2 topic pub /gripper_cmd std_msgs/msg/Float32 "{data: 0.5}" -1
data:是抓夹关节目标点的坐标,以弧度为单位,抓夹的范围是 0.0~1.5。
通过调用该服务,您可以控制机械臂抓夹移动到给的目标位置。
6.5 在固定高度上画圆
在 Rviz2 中,点击 Add,添加 RobotModel。
在 RobotModel 选项卡内,找到 Description Topic,选择 /robot_description,就会出现 Links 的选项。
在 Links 选项中,找到 hand_tcp,展开后勾选 Show Trail,用于查看末端关节的运动轨迹。
调用这个服务,来让机械臂在圆弧轨迹处移动到指定的位置:
cd /home/ws/roarm_ws/
ros2 service call /move_circle_cmd roarm_msgs/srv/MoveCircleCmd "{x0: 0.2, y0: 0.1, z0: 0.2, x1: 0.2, y1: 0.2, z1: 0.2 }"
x0、y0 和 z0 是中心点的坐标, x1、y1 和 z1 是目标点的坐标,单位为米,通过调用该服务,就可以控制机械臂在圆弧轨迹处移动到指定的位置,同时也可以看见 Rviz 2 界面中机械臂画出的圆。
