# ros_ws **Repository Path**: JackMoHeiHei/ros_ws ## Basic Information - **Project Name**: ros_ws - **Description**: niryo_ros2 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 1 - **Created**: 2025-09-29 - **Last Updated**: 2026-02-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # **机械臂部署与运行指南(Ubuntu 24.04 + ROS 2 Jazzy + MoveIt 2)** 本文档将指导你从零开始搭建运行机械臂控制系统所需的软件环境,包括 ROS 2 Jazzy、MoveIt 2、依赖库、串口规则配置、CAN 接口创建、工作空间构建、以及上位机启动方法等。 请在正式部署前**确保机械臂硬件已正确组装并调试完毕**。 ------ # 🛠 **部署前准备** 在开始软件安装前,请确认以下硬件通讯方式: - **舵机**:通过 **USB2TDXL / USB2DXL** 进行串口通讯 - **闭环电机**:通过 CAN 总线进行通讯(如使用 CanAble) 另外,请准备一台安装了 **Ubuntu 24.04** 的物理机(推荐不要使用虚拟机,如需使用需开启 USB 转发与实时模式)。 ------ # 🚀 **环境安装(ROS 2 + MoveIt 2 + 依赖)** ## 1. 安装 ROS 2 Jazzy 以下脚本将安装完整的 ROS 2 桌面版及 ROS 控制相关组件。 > 官方文档参考: > https://docs.ros.org/en/jazzy/Installation/Ubuntu-Install-Debs.html ### **更新系统** ``` sudo apt update sudo apt upgrade -y sudo reboot ``` ### **准备本地化与软件仓库** ``` sudo apt update && sudo apt install locales -y sudo locale-gen en_US en_US.UTF-8 sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 export LANG=en_US.UTF-8 sudo apt install software-properties-common -y sudo add-apt-repository universe sudo apt update && sudo apt install curl -y ``` ### **添加 ROS 2 软件源** ``` export ROS_APT_SOURCE_VERSION=$(curl -s https://api.github.com/repos/ros-infrastructure/ros-apt-source/releases/latest | grep -F "tag_name" | awk -F\" '{print $4}') curl -L -o /tmp/ros2-apt-source.deb \ "https://github.com/ros-infrastructure/ros-apt-source/releases/download/${ROS_APT_SOURCE_VERSION}/ros2-apt-source_${ROS_APT_SOURCE_VERSION}.$(. /etc/os-release && echo $VERSION_CODENAME)_all.deb" sudo dpkg -i /tmp/ros2-apt-source.deb sudo apt update ``` ### **安装 ROS 2 Jazzy Desktop** ``` sudo apt install ros-dev-tools sudo apt install ros-jazzy-desktop sudo apt install ros-jazzy-ros2-control ros-jazzy-ros2-controllers ``` ### **配置环境变量** 编辑 `.bashrc`: ``` gedit ~/.bashrc ``` 加入: ``` source /opt/ros/jazzy/setup.sh ``` 刷新: ``` source ~/.bashrc ``` ------ ## 2. 安装 MoveIt 2(Jazzy 版本) > 官方文档: > https://moveit.ai/install-moveit2/binary/ ``` sudo apt install ros-$ROS_DISTRO-rmw-cyclonedds-cpp sudo apt install ros-jazzy-moveit ``` ------ ## 3. 安装其他必要依赖 ``` sudo apt install ros-jazzy-dynamixel-sdk* sudo apt install can-utils ``` ------ # 🔧 **运行前系统配置** ## 1. 添加串口权限 使当前用户可访问串口设备: ``` sudo usermod -aG dialout $USER ``` 重新登录以生效。 ------ ## 2. 配置 UDEV 固定设备名 为确保系统每次重启后串口名称一致,需要为 USB 设备创建静态设备名。 将 **CH340G(舵机)** 和 **CanAble(闭环电机)** 插入设备,然后读取其 Vendor/Product ID: ``` udevadm info -a -n /dev/ttyACM4 | awk -F'"' ' /idVendor/ && !v { v = $2 } /idProduct/ && !p { p = $2 } END { print "idVendor=" v print "idProduct=" p } ' ``` ### **示例输出** ``` idVendor=0403 idProduct=6001 ``` ### **编辑 UDEV 规则** ``` sudo vim /etc/udev/rules.d/99-mydevice.rules ``` 写入: ``` # 舵机串口 – 固定设备名为 dxl SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", SYMLINK+="dxl", MODE="0666", GROUP="dialout" # 闭环电机 CAN 转串口 – 固定设备名为 emm SUBSYSTEM=="tty", ATTRS{idVendor}=="16d0", ATTRS{idProduct}=="117e", SYMLINK+="emm", MODE="0666", GROUP="dialout" ``` ### **重载规则** ``` sudo udevadm control --reload-rules sudo udevadm trigger ``` ------ ## 3. 将串口转换为 CAN 网络接口 将 `emm` 转换为 CAN 接口(重启系统后需要重新执行): ``` sudo slcand -o -c -s6 /dev/emm emm sudo ip link set emm up ``` ------ # 🧱 **构建 ROS 2 工作空间** 克隆仓库: ``` git clone https://gitee.com/JackMoHeiHei/ros_ws.git cd ros_ws ``` 编译: ``` colcon build ``` ### **正常输出示例** ``` Starting >>> niryo_description Starting >>> niryo_interfaces Starting >>> niryo_hardware Finished <<< niryo_description [0.17s] Starting >>> niryo_moveit_config ... Summary: 6 packages finished [1.20s] ``` ------ # 🤖 **启动 ROS + MoveIt 机械臂控制系统** 在运行前请确认机械臂周围空间安全,开机后会进行归位初始化动作。 ``` source install/setup.bash ``` ## **命令行模式(无 RViz)** ``` ros2 launch niryo_bringup niryo_launch_cli.xml ``` ## **带 RViz 可视化界面** ``` ros2 launch niryo_bringup niryo_launch.xml ``` ------ # 💻 **上位机启动(UI 控制端)** 上位机基于 Python + PyQt6 开发,需 Python 3.10 及以上。 ## 1. 安装依赖 ``` pip install pyqt6 ``` ## 2. 启动 UI ``` cd ros_ws/niryo_ui python main.py ``` ### 网络设置说明 - **如果在同一台电脑上运行**: 使用默认地址 `127.0.0.1:5000` - **若在局域网其他 PC 上运行**: 输入运行 ROS 主机的 IP 地址 并确保该主机防火墙放通对应端口(5000)。 ------ # 🎉 **完成部署** 至此,你已经完成了机械臂运行环境的全部配置,可以开始使用 MoveIt 与上位机进行运动规划与控制了。 Have fun & enjoy building robotics 🚀🤖!