本文档由北京小芽科技翻译,原文来自于ROBOTIS官方技术文档。
7 机械手臂
注意。
- 本说明在
Ubuntu 16.04
和ROS Kinetic Kame
上测试。 - 如果你想了解更多关于OpenMANIPULATOR-X的具体信息,请参考OpenMANIPULATOR-X电子手册。
警告
Raspberry Pi 4
和Jetson Nano
不支持Kinetic。请根据支持的Ubuntu版本选择其他ROS或ROS2发行版。
电子手册中的内容可能在没有事先通知的情况下被更新。因此,一些视频可能与电子手册中的内容有所不同。
TIP: 可以通过屏幕左上角的Ubuntu搜索图标找到终端应用程序。运行终端的快捷键是Ctrl
-Alt
-T
。
7.1 装配有OpenMANIPULATOR机械手臂的TurtleBot3
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
软件包。
- **[远程电脑]**使用以下命令下载并构建软件包,以便使用组装的OpenMANIPULATOR-X。
1 | $ cd ~/catkin_ws/src/ |
7.3 硬件装配
- CAD files (TurtleBot3 Waffle Pi + OpenMANIPULATOR)
- 首先,拆下激光雷达传感器,并将其移到TurtleBot3的前面(红圈代表螺栓的位置)。
- 第二,在TurtleBot3上安装OpenMANIPULATOR(黄圈代表螺栓的位置)。
7.4 OpenCR 设置
注意。要使用OpenMANIPULATOR-X,你需要通过使用shell脚本或Arduino IDE将固件上传至OpenCR。
- 强烈建议使用**Shell script**来上传固件,因为它使用了一个预先建立的二进制文件。
- **Arduino IDE**根据提供的源代码进行构建,并上传生成的二进制文件。
OpenCR Arduino板管理器不支持基于ARM的处理器,如Raspberry Pi或Jetson Nano。
- **Arduino IDE**根据提供的源代码进行构建,并上传生成的二进制文件。
xxxxxxxxxx $ cd ${turtlebot3_gazebo_plugin}/build$ ./image_listener ${TB3_MODEL}bash
当OpenMANIPULATOR正确安装在TurtleBot3上后,OpenCR固件需要更新以控制连接的DYNAMIXEL。请遵循下面的固件更新说明。
[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当固件完全上传后,你会在终端看到一个文本字符串:jump_to_fw
危险
请注意在机器人关节之间夹住你的身体!!
当固件成功上传后,OpenCR板将重新启动,OpenMANIPULATOR-X将移动到初始姿势。
建议将OpenMANIPULATOR-X摆成如下图所示的类似姿势,以避免在初始姿势中出现任何物理损坏。
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
![](https://emanual.robotis.com/assets/images/icon_unfold.png)
- 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
- Install Arduino IDE.
After completing the installation, run Arduino IDE.
Press
Ctrl
+,
to open the Preferences menu- Enter below address in the
Additional Boards Manager URLs
.https://raw.githubusercontent.com/ROBOTIS-GIT/OpenCR/master/arduino/opencr_release/package_opencr_index.json
- Open the TurtleBot3 with OpenMANIPULATOR firmware.
- TurtleBot3 with OpenMANIPULATOR : File > Examples > turtlebot3 > turtlebot3_with_open_manipulator > turtlebot3_with_open_manipulator_core
Connect OpenCR to the PC and Select OpenCR > OpenCR Board from Tools > Board menu.
Select the OpenCR connected USB port from Tools > Port menu.
Upload the TurtleBot3 firmware sketch with
Ctrl
+U
or the upload icon.- 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.
- Hold down the
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模型(waffle
或waffle_pi
)。
1 | $ export TURTLEBOT3_MODEL=waffle_pi |
注意: TurtleBot3模型可能与TurtleBot3的硬件配置不同,如burger
或waffle
或waffle_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 |
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 |
7.6.4 运行 ROBOTIS GUI 控制器
- [远程PC]你也可以使用ROBOTIS GUI来控制Gazebo中的OpenMANIPULATOR-X。该GUI支持任务空间和联合空间控制。使用你喜欢的任何控制方法。
任务空间控制
。根据OpenMANIPULATOR-X的末端执行器的有效抓取位置(在抓取器之间用红色小方块表示)进行控制。关节空间控制
。基于每个关节角度的控制。
1 | $ roslaunch turtlebot3_manipulation_gui turtlebot3_manipulation_gui.launch |
7.7 操作机械臂
按照给定的指示来操作您的机器人。
7.7.1 运行 roscore
[远程PC] 在ROS 1中运行 roscore
1 | $ roscore |
7.7.2 运行 Bringup
- **[TurtleBot3 SBC]**运行TurtleBot3的Bringup节点,并使用以下命令启动roserial和LDS传感器。
1 | $ roslaunch turtlebot3_bringup turtlebot3_robot.launch |
- **[远程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更新未知地图
;
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_group和bringup节点,是控制OpenMANIPULATOR的参数,使用这些节点并不重要。
7.8.3 [Run SLAM 节点
**[远程PC]**运行SLAM节点,用TurtleBot3更新未知地图。这个节点利用gmapping包。
1 | $ roslaunch turtlebot3_manipulation_slam slam.launch |
7.8.4 运行 turtlebot3_teleop_key 节点
- [远程 PC] 更新TurtleBot3将使用turtlebot3_teleop_key节点导航的地图。
1 | $ roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch |
- **[远程 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 |
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 |