Skip to main content

(可选)校准摄像头

获取代码

:::note 说明 每开启一个新的远程窗口,都需配置环境变量。 :::

  1. 远程登录开发者套件。

    1. 将PC和路由器接入路由器网络,并登录路由器管理后台查看开发者套件的IP地址(方法请参见[通过路由器联网](https://www.hiascend.com/document/detail/zh/Atlas200IDKA2DeveloperKit/23.0.RC2/Hardware Interfaces/hiug/hiug_0011.html))。
    2. 使用root用户(密码:Mind@123)在PC端的MobaXterm远程连接工具登录开发者套件。
  2. 远程登录开发者套件,进入“/usr/local”目录运行脚本拉取代码。

    cd /usr/local
  3. 运行脚本拉取代码。

    bash E2E_samples_download_tool.sh -d download_destination_path -s source_repository -b branch target_path

    参数说明:

    • -d:指定代码的下载路径。
    • -s:指定开源仓库的clone url。
    • -b:指定开源仓库分支名称及待下载的项目目录。
    • -f:强制更新下载路径中的目录。当样例目录已删除,但重新下载时提示“Already up to date”时可使用此参数。

    命令示例:

    bash E2E_samples_download_tool.sh -d /home/HwHiAiUser/E2ESamples -s https://gitee.com/HUAWEI-ASCEND/ascend-devkit.git -b master src/E2E-Sample/ros2_robot_arm

    回显如下:

    Download E2E samples successfully!

    执行完成后,会在“/home/HwHiAiUser/E2Esamples”目录下生成“src/E2E-Sample/ros2_robot_arm/”目录。

  4. 进入机械臂目录。

    cd /home/HwHiAiUser/E2ESamples/src/E2E-Sample/ros2_robot_arm

父主题: 快速体验

准备环境

  1. 修改“~/.bashrc”文件。

    1. 执行命令打开文件。

      vi ~/.bashrc

      在文件末尾新增以下内容。

      conda deactivate

      执行**:wq**保存。

      :::note 说明 不使用机械臂时,请将此段代码注释。 :::

    2. 执行命令生效环境变量。

      source ~/.bashrc
  2. 下载配置文件与模型文件,

    [配置文件](https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/Atlas 200I DK A2/DevKit/samples/23.0.RC1/e2e-samples/Arm/robot_arm_dependency.zip):将解压后的所有文件上传至“/home/HwHiAiUser/E2ESamples/src/E2E-Sample/ros2_robot_arm”目录中。

  3. 安装依赖。

    1. 安装ROS,请依次执行以下命令。

      apt install -y software-properties-common
      curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
      echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
      apt update
      apt install -y libegl-mesa0 ros-humble-desktop python3-colcon-common-extensions pip
    2. 安装ais_bench,请以此执行以下命令。

      pip3 install -v 'git+https://gitee.com/ascend/tools.git#egg=aclruntime&subdirectory=ais-bench_workload/tool/ais_bench/backend'
      pip3 install -v 'git+https://gitee.com/ascend/tools.git#egg=ais_bench&subdirectory=ais-bench_workload/tool/ais_bench'
    3. 安装其他依赖。

      pip3 install -r requirements.txt
      dpkg -i libconsole-bridge0.4_0.4.4+dfsg-1build1_arm64.deb
      dpkg -i liburdfdom-world_1.0.0-2ubuntu0.1_arm64.deb
  4. 添加环境变量。

    1. 执行命令打开文件。

      vi ~/.bashrc

      在文件末尾新增以下内容。

      LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib:/usr/lib/aarch64-linux-gpu:/usr/local/lib

      执行**:wq**保存。

    2. 执行命令生效环境变量。

      source ~/.bashrc
    3. 替换库文件。

      cp ./libdofbot_kinemarics.so /usr/lib
  5. 安装orocos_kd。

    1. 创建编译目录。

      cd orocos_kdl && mkdir build && cd build
    2. 执行命令进行编译。

      cmake ..
      make -j4
    3. 执行命令安装依赖。

      make install
  6. 安装机械臂驱动。

    cd ../.. && cd 0.py_install
    python3 setup.py install
    cd ..
  7. 编译工作空间。

    1. 配置环境变量

      source setenv.sh
    2. 执行命令编译。

      cd ros2_ws && colcon build

父主题: 快速体验

(可选)校准摄像头

:::note 说明 该步骤仅在首次使用机械臂时执行,后续使用时可跳过此步骤。 :::

  1. 打开新的终端窗口,执行命令进入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]
  2. 在jupyter notebook中逐级进入目录“/root/ros2_robot_arm/ros2_ws/src/dofbot_garbage_yolov5/tools”,双击“相机校准.ipynb”进入代码界面。

  3. 在代码界面选择“Kernel”选择“Restart & Run All”运行代码。

    图2 运行代码

    :::note 说明 若运行后,下方无回显,请多尝试几次。 :::

    成功运行后,画面如下所示。

    图3 成功运行

  4. 开始校准摄像头。

    1. 单击“calibration_model”按钮,并调节“joint1”与“joint2”。请保证调试环境的光源充足,确保蓝色边框覆盖整个十字框,画面如下所示。

      图4 调节画面

    2. 单击“calibration_ok”按钮,可视化界面进入方框内部,画面如下所示。

      图5 调节成功

  5. 返回开发者套件终端,按下键盘“Ctrl”+“C”键,停止jupyter notebook程序。

父主题: 快速体验

任意位置积木分拣

  1. 重新开启2个终端窗口,分别进入对应目录执行命令。

    • 1号终端。

      cd /home/HwHiAiUser/E2ESamples/src/E2E-Sample/ros2_robot_arm
      source setenv.sh
      ros2 run dofbot_moveit dofbot_server
    • 2号终端。

      cd /home/HwHiAiUser/E2ESamples/src/E2E-Sample/ros2_robot_arm
      source setenv.sh
      ros2 run dofbot_garbage_yolov5 block_cls

    :::note 说明 任意位置抓取时,需要使用带有标定板框一面的地图,并将摄像头对准标定板框。 :::

  2. 查看机械臂分拣结果。

父主题: 快速体验

任意位置积木堆叠

  1. 重新开启2个终端窗口,分别进入对应目录执行命令。
    • 1号终端。

      cd /home/HwHiAiUser/E2ESamples/src/E2E-Sample/ros2_robot_arm
      source setenv.sh
      ros2 run dofbot_moveit dofbot_server
    • 2号终端。

      cd /home/HwHiAiUser/E2ESamples/src/E2E-Sample/ros2_robot_arm
      source setenv.sh
      ros2 run robot_arm_color_stacking color_stacking
  2. 查看机械臂分拣结果。

父主题: 快速体验

代码文件介绍

机械臂代码文件目录如下所示:

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

父主题: 代码实现

在线提单