任意位置积木堆叠
(可选)校准摄像头
:::note 说明 该步骤仅在首次使用机械臂时执行,后续使用时可跳过此步骤。 :::
-
打开新的终端窗口,执行命令进入jupyter notebook。
jupyter notebook --allow-root 192.168.137.100--allow-root为当前开发者套件的IP,请根据实际IP修改。
首次进入时可能需要输入登录密码或token。
图1 登录界面

若首次登陆未设置密码,请根据实际回显中的token值登录。回显示例如下,token值为加粗部分。
[I 2023-05-09 08:02:59.683 ServerApp] nbclassic | extension was successfully loaded.[I 2023-05-09 08:02:59.685 ServerApp] Serving notebooks from local directory: /home/HwHiAiUser/samples/notebooks[I 2023-05-09 08:02:59.685 ServerApp] Jupyter Server 1.23.6 is running at:[I 2023-05-09 08:02:59.685 ServerApp] http://192.168.137.100:8888/lab?token=a046a76dc21f1504f271c16278ed62ed7fb014aaf38ee807[I 2023-05-09 08:02:59.685 ServerApp] or http://127.0.0.1:8888/lab?token=a046a76dc21f1504f271c16278ed62ed7fb014aaf38ee807[I 2023-05-09 08:02:59.685 ServerApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).[C 2023-05-09 08:02:59.701 ServerApp] -
在jupyter notebook中逐级进入目录“/root/ros2_robot_arm/ros2_ws/src/dofbot_garbage_yolov5/tools”,双击“相机校准.ipynb”进入代码界面。
-
在代码界面选择“Kernel”选择“Restart & Run All”运行代码。
图2 运行代码

:::note 说明 若运行后,下方无回显,请多尝试几次。 :::
成功运行后,画面如下所示。
图3 成功运行

-
开始校准摄像头。
-
单击“calibration_model”按钮,并调节“joint1”与“joint2”。请保证调试环境的光源充足,确保蓝色边框覆盖整个十字框,画面如下所示。
图4 调节画面

-
单击“calibration_ok”按钮,可视化界面进入方框内部,画面如下所示。
图5 调节成功

-
-
返回开发者套件终端,按下键盘“Ctrl”+“C”键,停止jupyter notebook程序。
父主题: 快速体验
任意位置积木分拣
-
重新开启2个终端窗口,分别进入对应目录执行命令。
-
1号终端。
cd /home/HwHiAiUser/E2ESamples/src/E2E-Sample/ros2_robot_armsource setenv.shros2 run dofbot_moveit dofbot_server -
2号终端。
cd /home/HwHiAiUser/E2ESamples/src/E2E-Sample/ros2_robot_armsource setenv.shros2 run dofbot_garbage_yolov5 block_cls
:::note 说明 任意位置抓取时,需要使用带有标定板框一面的地图,并将摄像头对准标定板框。 :::
-
-
查看机械臂分拣结果。
父主题: 快速体验
任意位置积木堆叠
- 重新开启2个终端窗口,分别进入对应目录执行命令。
-
1号终端。
cd /home/HwHiAiUser/E2ESamples/src/E2E-Sample/ros2_robot_armsource setenv.shros2 run dofbot_moveit dofbot_server -
2号终端。
cd /home/HwHiAiUser/E2ESamples/src/E2E-Sample/ros2_robot_armsource setenv.shros2 run robot_arm_color_stacking color_stacking
-
- 查看机械臂分拣结果。
父主题: 快速体验
代码文件介绍
机械臂代码文件目录如下所示:
RobotArm 源码仓
├── dofbot_color_stacking 色块堆叠功能包
│ ├── CMakeLists.txt
│ ├── package.xml
│ └── scripts 代码以及配置文件
│ ├── color_stacking.txt
│ ├── config 配置文件
│ │ ├── dp.bin 透视变换矩阵
│ │ ├── offset.txt 硬件误差配置
│ │ └── XYT_config.txt 相机标定配置
│ ├── det_utils.py ACL推理功能文件
│ ├── dofbot_config.py 机械臂描述文件
│ ├── main.py 主函数入口
│ ├── model 模型文件
│ │ ├── coco_names.txt
│ │ └── yolov5s_bs1.om
│ ├── npu_utils.py ACL推理功能文件
│ ├── stacking_grap.py 色块堆叠抓取功能文件
│ └── stacking_target.py 色块堆叠目标定位文件
├── dofbot_garbage_yolov5 色块分拣功能包
│ ├── dofbot_garbage_yolov5
│ │ ├── a200dk_camera_capture_picture.ipynb
│ │ ├── config 配置文件
│ │ │ ├── dp.bin 透视变换矩阵
│ │ │ ├── offset.txt 硬件误差配置
│ │ │ └── XYT_config.txt 相机标定配置
│ │ ├── det_utils.py ACL推理功能文件
│ │ ├── dofbot_config.py 机械臂描述文件
│ │ ├── garbage_grap_bak.py
│ │ ├── garbage_grap.py 垃圾分拣抓取脚本
│ │ ├── garbage_identify.py 垃圾分拣识别脚本
│ │ ├── __init__.py
│ │ ├── main.py 主函数入口
│ │ ├── model 模型文件
│ │ │ ├── coco_names.txt
│ │ │ └── yolov5s_bs1.om
│ │ ├── npu_utils.py ACL推理功能文件
│ │ ├── __pycache__
│ │ │ ├── det_utils.cpython-310.pyc
│ │ │ ├── dofbot_config.cpython-310.pyc
│ │ │ ├── garbage_grap.cpython-310.pyc
│ │ │ ├── garbage_identify.cpython-310.pyc
│ │ │ ├── npu_utils.cpython-310.pyc
│ │ │ └── single_garbage_identify.cpython-310.pyc
│ │ ├── single_garbage_identify.py
│ │ └── 相机校准.ipynb 相机校准脚本
│ ├── package.xml
│ ├── resource
│ │ └── dofbot_garbage_yolov5_tiny1
│ ├── setup.cfg
│ ├── setup.py
│ └── test
│ ├── test_copyright.py
│ ├── test_flake8.py
│ └── test_pep257.py
├── dofbot_info 机械臂接口功能包
│ ├── CMakeLists.txt
│ ├── package.xml
│ └── srv 服务信息文件
│ └── Kinemarics.srv
├── dofbot_moveit 机械臂描述功能包
│ ├── CMakeLists.txt
│ ├── include
│ │ └── dofbot_moveit
│ │ └── dofbot_kinemarics.h 机械臂运动学头文件
│ ├── launch 工程启动文件
│ │ └── dofbot_moveit.launch.py
│ ├── lib 坐标求解库文件
│ │ └── libdofbot_kinemarics.so
│ ├── meshes 三维结构文件
│ │ ├── base_link.STL
│ │ ├── link1.STL
│ │ ├── link2.STL
│ │ ├── link3.STL
│ │ ├── link4.STL
│ │ └── link5.STL
│ ├── package.xml
│ ├── rviz RVIZ可视化文件
│ │ ├── dofbot.rviz
│ │ └── urdf.rviz
│ ├── src
│ │ └── dofbot_server.cpp 机械臂运动学服务器
│ └── urdf
│ └── dofbot.urdf 机械臂结构描述文件
├── imgs
│ ├── 10.jpg
│ ....
│ └── 9.PNG
└── README.md
父主题: 代码实现
请求与响应配置文件
dofbot_info功能包包含了需要编译的消息文件。“dofbot_info/srv/Kinemarics.srv”文件中,横线上方表示客户端发送请求的消息格式,下方表示服务器回复响应的消息格式。
客户端发送的请求包括以下内容。
- 机械臂基坐标系下的目标坐标(tar_x, tar_y, tar_z)
- 目标姿态角(roll, pitch, yaw)
- 机械臂目前的六个关节信息(cur_joint1, cur_joint2, cur_joint3, cur_joint4, cur_joint5, cur_joint6)
- 用户请求的模式(kin_name)。
除用户请求的模式为字符串类型外,其他消息都应为浮点型。用户请求的模式分为正运动学解(fk)以及逆运动学解(ik)。
- 当模式为正运动学解时,只需填入机械臂目前的六个关节信息。
- 当模式为逆运动学解时,则无需填入机械臂目前的六个关节信息。
服务端响应的消息全为浮点型。
- 当模式为正运动学解时,服务器会响应相对于机械臂基坐标系的到达坐标(x, y, z)和到达姿态角(roll, pitch, yaw)。
- 当模式为逆运动学解时,服务器会响应机械臂的六个关节目标(joint1, joint2, joint3, joint4, joint5, joint6)。
float64 tar_x
float64 tar_y
float64 tar_z
float64 roll
float64 pitch
float64 yaw
float64 cur_joint1
float64 cur_joint2
float64 cur_joint3
float64 cur_joint4
float64 cur_joint5
float64 cur_joint6
string kin_name
---
float64 joint1
float64 joint2
float64 joint3
float64 joint4
float64 joint5
float64 joint6
float64 x
float64 y
float64 z
float64 roll
float64 pitch
float64 yaw
父主题: 代码实现
在线提单