环境搭建

安装ROS2环境

参考 ROS2 环境搭建

mycobot_ros2安装

参考 ultraArm P1 mycobot_ros2安装

执行下面命令安装 ultraArm P1 ROS2 代码:

$ cd ~/colcon_ws/src
# For the humble branch
$ git clone -b p1-humble https://github.com/elephantrobotics/mycobot_ros2.git
# For the foxy branch
$ git clone -b p1 https://github.com/elephantrobotics/mycobot_ros2.git
$ cd ~/colcon_ws
$ colcon build
$ source ~/colcon_ws/install/setup.bash
$ sudo echo 'source ~/colcon_ws/install/setup.bash' >> ~/.bashrc

控制机械臂

注意:pymycobot 驱动库的版本必须大于4.0.5, Moveit2仅支持 ROS2 Humble版本,请使用对应分支的代码运行

使用前准备

在使用案例功能之前,请先确认以下硬件和环境准备齐全:

  • 硬件设备

    • ultraArm P1 机械臂
    • 电源适配器
    • USB Type-C串口线
  • 软件与环境

    • PC虚拟机 ubuntu 20.04系统
    • 已安装 Python 3.6 及以上版本
    • 已安装 pymycobot 库(通过 pip install pymycobot 终端命令安装)
    • 确保 ultraArm P1 已正确接通电源、串口线,并且虚拟机系统能检测到串口号。

    • 验证:验证机械臂串口是否存在,终端输入:

      ls /dev/tty*
      

      如果输出的串口信息有 /dev/ttyACM* 或者 /dev/ttyUSB*,表示串口已被检测到。

    • 串口权限: 如果串口存在,需要赋予可执行权限:

      sudo chmod 777 /dev/ttyUSB*
      # 或者
      sudo chmod 777 /dev/ttyACM*
      

1 滑块控制

打开命令行并运行:

# 默认串口名为"/dev/ttyUSB0",波特率为1000000.
ros2 launch ultraarm_p1 slider_control.launch.py port:=/dev/ttyUSB0 baud:=1000000

它会打开 rviz2 和一个滑块组件,你会看到类似下面的内容:

然后,您可以在 rviz2 中通过拖动滑块来控制模型的移动。真实的 ultraArm 机器人也会随之移动。

请注意:由于在命令输入的同时机械臂会移动到模型目前的位置,在您使用命令之前请确保 rviz 中的模型没有出现穿模现象

不要在连接机械臂后做出快速拖动滑块的行为,防止机械臂损坏

2 模型跟随

除了上面的控制,我们也可以让模型跟随真实的机械臂运动。

打开一个命令行运行:

# 默认串口名为"/dev/ttyUSB0",波特率为1000000.
ros2 launch ultraarm_p1 follow_display.launch.py port:=/dev/ttyUSB0 baud:=1000000

运行成功后,需要按住机器末端LED按钮才能拖拽关节移动,终端输出信息类似如下:

[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [robot_state_publisher-1]: process started with pid [5769]
[INFO] [follow_display-2]: process started with pid [5771]
[INFO] [rviz2-3]: process started with pid [5773]
[robot_state_publisher-1] [INFO] [1782897634.730833624] [robot_state_publisher]: got segment CENTER_V_2_Link
[robot_state_publisher-1] [INFO] [1782897634.730996652] [robot_state_publisher]: got segment FIX2_Link
[robot_state_publisher-1] [INFO] [1782897634.731014841] [robot_state_publisher]: got segment J1_Link
[robot_state_publisher-1] [INFO] [1782897634.731027969] [robot_state_publisher]: got segment J2_2_Link
[robot_state_publisher-1] [INFO] [1782897634.731038692] [robot_state_publisher]: got segment J2_Link
[robot_state_publisher-1] [INFO] [1782897634.731049064] [robot_state_publisher]: got segment J3_4_Link
[robot_state_publisher-1] [INFO] [1782897634.731060058] [robot_state_publisher]: got segment J3_5_Link
[robot_state_publisher-1] [INFO] [1782897634.731070711] [robot_state_publisher]: got segment J3_Link
[robot_state_publisher-1] [INFO] [1782897634.731081424] [robot_state_publisher]: got segment J4_Link
[robot_state_publisher-1] [INFO] [1782897634.731092447] [robot_state_publisher]: got segment base_link
[robot_state_publisher-1] [INFO] [1782897634.731103350] [robot_state_publisher]: got segment center_Link
[robot_state_publisher-1] [INFO] [1782897634.731115737] [robot_state_publisher]: got segment center_v_1_Link
[robot_state_publisher-1] [INFO] [1782897634.731128053] [robot_state_publisher]: got segment fix1_Link
[robot_state_publisher-1] [INFO] [1782897634.731140169] [robot_state_publisher]: got segment world
[rviz2-3] Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome. Use QT_QPA_PLATFORM=wayland to run on Wayland anyway.
[rviz2-3] [INFO] [1782897635.323342993] [rviz2]: Stereo is NOT SUPPORTED
[rviz2-3] [INFO] [1782897635.323611102] [rviz2]: OpenGl version: 4.5 (GLSL 4.5)
[rviz2-3] [INFO] [1782897635.452264701] [rviz2]: Stereo is NOT SUPPORTED
[follow_display-2] [INFO] [1782897635.555144511] [follow_display]: port:/dev/ttyUSB0, baud:1000000
[follow_display-2] [INFO] [1782897636.166900478] [follow_display]: Please press the LED button at the end of the machine to drag the joint.
[follow_display-2] 请按下机器末端LED按钮进行关节拖拽运动
[follow_display-2] 
[follow_display-2] [INFO] [1782897636.173036211] [follow_display]: Publishing ...

它将打开 rviz 以显示模型跟随效果 。此时拖动真实机械臂关节,仿真模型将会跟随真实机械臂运动。

3 GUI 控制

在前者的基础上,本软件包还提供了一个简单的图形用户界面控制接口。这种方法意味着真正的机械臂是相互连接的,请连接到 ultraArm。

打开命令行:

# 默认串口名为"/dev/ttyUSB0",波特率为1000000.
ros2 launch ultraarm_p1 simple_gui.launch.py port:=/dev/ttyUSB0 baud:=1000000

运行成功后,终端信息类似输出如下:

[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [robot_state_publisher-1]: process started with pid [5633]
[INFO] [listen_real_service-2]: process started with pid [5635]
[INFO] [simple_gui-3]: process started with pid [5637]
[INFO] [rviz2-4]: process started with pid [5639]
[rviz2-4] Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome. Use QT_QPA_PLATFORM=wayland to run on Wayland anyway.
[robot_state_publisher-1] [INFO] [1782897458.761098704] [robot_state_publisher]: got segment CENTER_V_2_Link
[robot_state_publisher-1] [INFO] [1782897458.761844782] [robot_state_publisher]: got segment FIX2_Link
[robot_state_publisher-1] [INFO] [1782897458.761873800] [robot_state_publisher]: got segment J1_Link
[robot_state_publisher-1] [INFO] [1782897458.761889356] [robot_state_publisher]: got segment J2_2_Link
[robot_state_publisher-1] [INFO] [1782897458.761901756] [robot_state_publisher]: got segment J2_Link
[robot_state_publisher-1] [INFO] [1782897458.761913435] [robot_state_publisher]: got segment J3_4_Link
[robot_state_publisher-1] [INFO] [1782897458.761925475] [robot_state_publisher]: got segment J3_5_Link
[robot_state_publisher-1] [INFO] [1782897458.761937345] [robot_state_publisher]: got segment J3_Link
[robot_state_publisher-1] [INFO] [1782897458.761949345] [robot_state_publisher]: got segment J4_Link
[robot_state_publisher-1] [INFO] [1782897458.761961334] [robot_state_publisher]: got segment base_link
[robot_state_publisher-1] [INFO] [1782897458.761973074] [robot_state_publisher]: got segment center_Link
[robot_state_publisher-1] [INFO] [1782897458.761985133] [robot_state_publisher]: got segment center_v_1_Link
[robot_state_publisher-1] [INFO] [1782897458.761997133] [robot_state_publisher]: got segment fix1_Link
[robot_state_publisher-1] [INFO] [1782897458.762008001] [robot_state_publisher]: got segment world
[rviz2-4] [INFO] [1782897459.530810285] [rviz2]: Stereo is NOT SUPPORTED
[rviz2-4] [INFO] [1782897459.532338171] [rviz2]: OpenGl version: 4.5 (GLSL 4.5)
[rviz2-4] [INFO] [1782897459.735081745] [rviz2]: Stereo is NOT SUPPORTED
[listen_real_service-2] [INFO] [1782897459.748433553] [listen_real_service]: port:/dev/ttyUSB0, baud:1000000

然后在GUI界面输入相关角度和坐标信息,点击对应按钮,即可实现真实机器与仿真模型的跟随运动

4 键盘控制

在 ultraarm_p1 包中添加了键盘控制功能,并在 rviz2 中实时同步。 该功能依赖于 python Api,因此请确保与真正的机械臂连接。

打开命令行并运行:

# 默认串口名为"/dev/ttyUSB0",波特率为1000000.
ros2 launch ultraarm_p1 teleop_keyboard.launch.py port:=/dev/ttyUSB0 baud:=1000000

运行效果如下:

命令行中将会输出 ultraArm 类似信息,如下:

[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [robot_state_publisher-1]: process started with pid [5710]
[INFO] [listen_real_service-2]: process started with pid [5712]
[INFO] [rviz2-3]: process started with pid [5714]
[rviz2-3] Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome. Use QT_QPA_PLATFORM=wayland to run on Wayland anyway.
[robot_state_publisher-1] [INFO] [1782897547.311604561] [robot_state_publisher]: got segment CENTER_V_2_Link
[robot_state_publisher-1] [INFO] [1782897547.312407796] [robot_state_publisher]: got segment FIX2_Link
[robot_state_publisher-1] [INFO] [1782897547.312438681] [robot_state_publisher]: got segment J1_Link
[robot_state_publisher-1] [INFO] [1782897547.312453678] [robot_state_publisher]: got segment J2_2_Link
[robot_state_publisher-1] [INFO] [1782897547.312463870] [robot_state_publisher]: got segment J2_Link
[robot_state_publisher-1] [INFO] [1782897547.312473252] [robot_state_publisher]: got segment J3_4_Link
[robot_state_publisher-1] [INFO] [1782897547.312482782] [robot_state_publisher]: got segment J3_5_Link
[robot_state_publisher-1] [INFO] [1782897547.312492056] [robot_state_publisher]: got segment J3_Link
[robot_state_publisher-1] [INFO] [1782897547.312501694] [robot_state_publisher]: got segment J4_Link
[robot_state_publisher-1] [INFO] [1782897547.312510997] [robot_state_publisher]: got segment base_link
[robot_state_publisher-1] [INFO] [1782897547.312522356] [robot_state_publisher]: got segment center_Link
[robot_state_publisher-1] [INFO] [1782897547.312534625] [robot_state_publisher]: got segment center_v_1_Link
[robot_state_publisher-1] [INFO] [1782897547.312546815] [robot_state_publisher]: got segment fix1_Link
[robot_state_publisher-1] [INFO] [1782897547.312558520] [robot_state_publisher]: got segment world
[rviz2-3] [INFO] [1782897547.796778052] [rviz2]: Stereo is NOT SUPPORTED
[rviz2-3] [INFO] [1782897547.797056751] [rviz2]: OpenGl version: 4.5 (GLSL 4.5)
[rviz2-3] [INFO] [1782897547.940383311] [rviz2]: Stereo is NOT SUPPORTED
[listen_real_service-2] [INFO] [1782897548.081108792] [listen_real_service]: port:/dev/ttyUSB0, baud:1000000

接下来,打开另一个 命令行:

ros2 run ultraarm_p1 teleop_keyboard

您将在终端看到以下输出:

ultraArm P1 Teleop Keyboard Controller
---------------------------
Movimg options(control coordinations [x,y,z,rx]):
              w(x+)

    a(y+)     s(x-)     d(y-)

    z(z-) x(z+)

    u(rx+)      j(rx-) 

+/- : Increase/decrease movement step size

Other:
    1 - Go to init pose
    2 - Go to home pose
    3 - Resave home pose
    q - Quit

currently:speed: 50    change percent: 5

在该终端中,您可以通过命令行中的按键控制机械臂的状态并移动机械臂。

注意:先输入2机械臂回到起始点之后,再进行其他坐标控制操作,终端会有如下提示:

[WARN] [1758001794.385321]: Coordinate control disabled. Please press '2' first.
[INFO] [1758001804.552778]: Home pose reached. Coordinate control enabled.
[INFO] [1758001817.069637]: Home pose reached. Coordinate control enabled.
[WARN] [1758001836.301070]: Returned to zero. Press '2' to enable coordinate control.
[WARN] [1758001848.830702]: Coordinate control disabled. Please press '2' first.
[INFO] [1758001863.383565]: Home pose reached. Coordinate control enabled.
[WARN] [1758001933.596504]: Returned to zero. Press '2' to enable coordinate control.
[WARN] [1758001942.051899]: Coordinate control disabled. Please press '2' first.

5 moveit2 使用

注意: Moveit2仅支持 ROS2 Humble版本,请使用对应分支的代码运行。

mycobot_ros2 整合了 ultraArm P1 MoveIt2 部分。

打开命令行并运行:

ros2 launch ultraarm_p1_moveit2 demo.launch.py

运行效果如下:

终端将输出如下信息,代表成功启动moveit:

[move_group-2] You can start planning now!
[move_group-2] 
[rviz2-3] [INFO] [1782897327.917527882] [move_group_interface]: Ready to take commands for planning group arm_group.
[rviz2-3] [INFO] [1782897328.400809896] [interactive_marker_display_100034309556640]: Service response received for initialization

基本路径规划操作如下:

如果想让真正的机械臂同步执行计划,则需要打开另一个命令行并运行:

# 默认串口名为"/dev/ttyUSB0",波特率为1000000.
ros2 launch ultraarm_p1_moveit2_control sync_plan.launch.py port:=/dev/ttyUSB0 baud:=1000000

修改运动速度

为了防止关节在实际机械臂运动过程中晃动,需要降低关节的运动速度。

  • 修改机械臂 Python API 的速度参数,启动程序时增加速度参数,默认25。
ros2 launch ultraarm_p1_moveit2_control sync_plan.launch.py port:=/dev/ttyUSB0 baud:=1000000 speed:=25
  • 在 Moveit RViz 界面中,修改速度和加速度的缩放比例。在这里,将其改为 0.1,然后保存当前配置。ultraarm_p1_moveit2_control 功能包默认配置 0.5。


results matching ""

    No results matching ""