07-1-TurtleBot3机械手基本操作

小芽科技 2022-07-26 11:57:18
Categories: Tags:

本文档由北京小芽科技翻译,原文来自于ROBOTIS官方技术文档

7 机械手臂

注意

警告

Raspberry Pi 4Jetson Nano不支持Kinetic。请根据支持的Ubuntu版本选择其他ROS或ROS2发行版。

电子手册中的内容可能在没有事先通知的情况下被更新。因此,一些视频可能与电子手册中的内容有所不同。

TIP: 可以通过屏幕左上角的Ubuntu搜索图标找到终端应用程序。运行终端的快捷键是Ctrl-Alt-T

7.1 装配有OpenMANIPULATOR机械手臂的TurtleBot3

img

ROBOTIS的OpenMANIPULATOR-X是支持ROS的操纵器之一,其优点是通过使用DYNAMIXEL执行器与3D打印部件,能够以低成本轻松制造。

OpenMANIPULATOR-X的优点是与TurtleBot3 Waffle和Waffle Pi兼容。通过这种兼容性,可以弥补自由度的不足,并可以作为一个服务机器人具有TurtleBot3所具有的SLAM和导航能力,具有更大的完整性。TurtleBot3和OpenMANIPULATOR-X可以作为一个 “移动操纵器 “使用,可以做像以下视频那样的事情。

bad asset path... bad asset path...

电子手册中的内容可能会在没有事先通知的情况下进行更新。因此,一些视频可能与电子手册中的内容有所不同。

7.2 软件设置

注意: 在安装 open_manipulator_with_tb3 软件包之前,在远程计算机上安装 turtlebot3 open_manipulator 软件包。

  1. **[远程电脑]**使用以下命令下载并构建软件包,以便使用组装的OpenMANIPULATOR-X。
1
2
3
4
5
6
$ cd ~/catkin_ws/src/
$ git clone https://github.com/ROBOTIS-GIT/turtlebot3_manipulation.git
$ git clone https://github.com/ROBOTIS-GIT/turtlebot3_manipulation_simulations.git
$ git clone https://github.com/ROBOTIS-GIT/open_manipulator_dependencies.git
$ sudo apt install ros-kinetic-ros-control* && ros-kinetic-control* && ros-kinetic-moveit*
$ cd ~/catkin_ws && catkin_make

7.3 硬件装配

img

img

img

7.4 OpenCR 设置

注意。要使用OpenMANIPULATOR-X,你需要通过使用shell脚本Arduino IDE将固件上传至OpenCR。

  1. 强烈建议使用**Shell script**来上传固件,因为它使用了一个预先建立的二进制文件。
    1. **Arduino IDE**根据提供的源代码进行构建,并上传生成的二进制文件。
      OpenCR Arduino板管理器不支持基于ARM的处理器,如Raspberry Pi或Jetson Nano。

xxxxxxxxxx $ cd ${turtlebot3_gazebo_plugin}/build$ ./image_listener ${TB3_MODEL}bash

当OpenMANIPULATOR正确安装在TurtleBot3上后,OpenCR固件需要更新以控制连接的DYNAMIXEL。请遵循下面的固件更新说明。

  1. [TurtleBot3 SBC] 在Raspberry Pi(SBC)上下载OpenCR固件文件,用以下命令上传正确的固件。

    1
    2
    3
    4
    5
    6
    7
    $ export OPENCR_PORT=/dev/ttyACM0
    $ export OPENCR_MODEL=om_with_tb3
    $ rm -rf ./opencr_update.tar.bz2
    $ wget https://github.com/ROBOTIS-GIT/OpenCR-Binaries/raw/master/turtlebot3/ROS1/latest/opencr_update.tar.bz2
    $ tar -xvf opencr_update.tar.bz2
    $ cd ./opencr_update
    $ ./update.sh $OPENCR_PORT $OPENCR_MODEL.opencr
  2. 当固件完全上传后,你会在终端看到一个文本字符串:jump_to_fw

危险

请注意在机器人关节之间夹住你的身体!!

当固件成功上传后,OpenCR板将重新启动,OpenMANIPULATOR-X将移动到初始姿势
建议将OpenMANIPULATOR-X摆成如下图所示的类似姿势,以避免在初始姿势中出现任何物理损坏。

img

7.4.1 Arduino IDE

请注意,OpenCR板卡管理器不支持基于ARM的SBC的Arduino IDE,如Raspberry Pi或NVidia Jetson
为了使用Arduino IDE上传OpenCR固件,请在你的电脑上按照以下说明操作。

 Click here to expand more details about the firmware upload using Arduino IDE

  1. If you are using Linux, please configure the USB port for OpenCR. For other OS(OSX or Windows), you can skip this step.
    $ wget https://raw.githubusercontent.com/ROBOTIS-GIT/OpenCR/master/99-opencr-cdc.rules
    $ sudo cp ./99-opencr-cdc.rules /etc/udev/rules.d/
    $ sudo udevadm control --reload-rules
    $ sudo udevadm trigger
    $ sudo apt install libncurses5-dev:i386
    
  2. Install Arduino IDE.
  3. After completing the installation, run Arduino IDE.

  4. Press Ctrl + , to open the Preferences menu

  5. Enter below address in the Additional Boards Manager URLs.
    https://raw.githubusercontent.com/ROBOTIS-GIT/OpenCR/master/arduino/opencr_release/package_opencr_index.json
    

  6. Open the TurtleBot3 with OpenMANIPULATOR firmware.
    • TurtleBot3 with OpenMANIPULATOR : File > Examples > turtlebot3 > turtlebot3_with_open_manipulator > turtlebot3_with_open_manipulator_core
  7. Connect OpenCR to the PC and Select OpenCR > OpenCR Board from Tools > Board menu.

  8. Select the OpenCR connected USB port from Tools > Port menu.

  9. Upload the TurtleBot3 firmware sketch with Ctrl + U or the upload icon.

  10. If firmware upload fails, try uploading with the recovery mode. Below sequence activates the recovery mode of OpenCR. Under the recovery mode, the STATUS led of OpenCR will blink periodically.
    • Hold down the PUSH SW2 button.
    • Press the Reset button.
    • Release the Reset button.
    • Release the PUSH SW2 button. 

7.5 启动

注意。请确保OpenCR端口在PC上被正确分配。参见turtlebot3_core. launch

7.5.1 运行 roscore

[远程PC] 在终端中运行以下指令启动ROS

1
$ roscore

7.5.2 定义 TurtleBot3 模型

[TurtleBot3 SBC] 如果TURTLEBOT3_MODEL没有在.bashrc文件中定义,则导出TurtleBot3模型(wafflewaffle_pi)。

1
$ export TURTLEBOT3_MODEL=waffle_pi

注意: TurtleBot3模型可能与TurtleBot3的硬件配置不同,如burgerwafflewaffle_pi

7.5.3 运行 Bringup

**[TurtleBot3 SBC]**运行TurtleBot3的Bringup节点,并使用以下命令启动roserial和LDS传感器。

1
$ roslaunch turtlebot3_bringup turtlebot3_robot.launch

7.6 模拟仿真

按照本节内容,使用Gazebo模拟TurtleBot3操纵。

7.6.1 Run Gazebo

**[远程电脑]**用以下命令将带有OpenMANIPULATOR-X的TurtleBot3加载到Gazebo世界。

1
$ roslaunch turtlebot3_manipulation_gazebo turtlebot3_manipulation_gazebo.launch

img

7.6.2 运行 move_group 节点

[远程电脑] 为了使用Moveit功能,启动move_group节点。如果你在Gazebo中按下**[▶]按钮开始模拟,使用以下命令。
启动成功后,
“你现在可以开始规划了!”**信息将被打印在终端上。

1
$ roslaunch turtlebot3_manipulation_moveit_config move_group.launch

7.6.3 运行 RViz

**[远程电脑]**通过读取配置Moveit环境数据的moveit.rviz文件,在RViz中使用Moveit功能。
你可以使用一个交互式标记来控制安装的机械手,并模拟目标位置的运动,这有助于通过提前模拟运动来防止可能的物理接触。

1
$ roslaunch turtlebot3_manipulation_moveit_config moveit_rviz.launch

img

7.6.4 运行 ROBOTIS GUI 控制器

1
$ roslaunch turtlebot3_manipulation_gui turtlebot3_manipulation_gui.launch

img

7.7 操作机械臂

按照给定的指示来操作您的机器人。

7.7.1 运行 roscore

[远程PC] 在ROS 1中运行 roscore

1
$ roscore

7.7.2 运行 Bringup

  1. **[TurtleBot3 SBC]**运行TurtleBot3的Bringup节点,并使用以下命令启动roserial和LDS传感器。
1
$ roslaunch turtlebot3_bringup turtlebot3_robot.launch
  1. **[远程PC]**在TurtleBot3上运行OpenMANIPULATOR的Bringup节点
1
$ roslaunch turtlebot3_manipulation_bringup turtlebot3_manipulation_bringup.launch

7.7.3 运行 move_group 节点

1
$ roslaunch turtlebot3_manipulation_moveit_config move_group.launch

7.7.4 运行 RViz

**[远程PC]**运行Rviz以使数据可视化,并使用互动标记。

1
$ roslaunch turtlebot3_manipulation_moveit_config moveit_rviz.launch

[7.7.5 运行 ROBOTIS GUI 控制器

[远程PC] OpenMANIPULATOR可以用ROBOTIS GUI控制器而不是RVIz工具来控制。

1
$ roslaunch turtlebot3_manipulation_gui turtlebot3_manipulation_gui.launch

7.8 SLAM

使用SLAM功能,用TurtleBot3和OpenMANIPULATOR更新未知地图

img;

7.8.1 运行 roscore

[远程PC] 在 ROS 1 中运行roscore 。

1
$ roscore

7.8.2 运行 Bringup

**[TurtleBot3 SBC]**运行TurtleBot3的Bringup节点,并使用以下命令启动roserial和LDS传感器。

1
$ roslaunch turtlebot3_bringup turtlebot3_robot.launch

注意:由于TurtleBot3上的OpenMANIPULATOR对于SLAM来说不是必需的,move_groupbringup节点,是控制OpenMANIPULATOR的参数,使用这些节点并不重要。

7.8.3 [Run SLAM 节点

**[远程PC]**运行SLAM节点,用TurtleBot3更新未知地图。这个节点利用gmapping包。

1
$ roslaunch turtlebot3_manipulation_slam slam.launch

7.8.4 运行 turtlebot3_teleop_key 节点

  1. [远程 PC] 更新TurtleBot3将使用turtlebot3_teleop_key节点导航的地图。
1
$ roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
  1. **[远程 PC]**一旦地图完全更新,运行map_saver节点来保存更新的地图。
1
$ rosrun map_server map_saver -f ~/map

7.9 Navigation

使用配备有OpenMANIPULATOR的TurtleBot3发送到地图中的所需位置。

7.9.1 运行 roscore

[远程 PC] 在 ROS 1 中运行roscore 。

1
$ roscore

7.9.2 运行 Bringup

**[TurtleBot3 SBC]**运行TurtleBot3的Bringup节点,并使用以下命令启动roserial和LDS传感器。

1
$ roslaunch turtlebot3_bringup turtlebot3_robot.launch

7.9.3 运行 Navigation 节点

**[远程PC]**用以下命令运行导航节点,它将调用统一机器人描述格式(urdf)和RViz的配置数据来设置GUI环境、导航参数和更新地图。

1
$ roslaunch turtlebot3_manipulation_navigation navigation.launch

img

7.9.4 如何用导航控制OpenMANIPULATOR

当TurtleBot3接近目标位置时,当导航节点运行时,你可以运行这个节点来控制TurtleBot3上的OpenMANIPULATOR。但是,当TurtleBot3处于运动状态时,OpenMANIPULATOR的运动将受到外部影响而不稳定,如重心或振动;因此,建议在TurtleBot3不行驶时使用该操纵器。

7.9.4.1 为OpenMANIPULATOR运行 Bringup 节点

[远程电脑]运行turtlebot3_manipulation_bringup节点,就像使用单个OpenMANIPULATOR一样。这个节点包含臂控制器抓取器控制器

1
$ roslaunch turtlebot3_manipulation_bringup turtlebot3_manipulation_bringup.launch

7.9.4.2 运行 move_group 节点

move_group节点支持两个界面来控制OpenMANIPULATOR;Moveit!ROBOTIS GUI。根据你的偏好选择其中之一。在本节中,只介绍GUI控制器。

1
$ roslaunch turtlebot3_manipulation_moveit_config move_group.launch

注意。更多细节请参考MoveIt!

7.9.5 运行 GUI Controller 控制器

使用这个界面,你可以控制TurtleBot3上的OpenMANIPULATOR **[远程PC]**。

1
$ roslaunch turtlebot3_manipulation_gui turtlebot3_manipulation_gui.launch