本项目是基于原多节蛇形机械臂项目(buaa_rescue_robot)简化而来的单节机械臂控制系统,使用ROS 2 Humble开发。系统主要控制单节臂的1、2、11、12号电机,并记录电机编码器和力传感器数据用于后续的深度学习训练。
- 安装说明
- 硬件设置
- 使用方法
- 数据记录功能
- 常见问题排查
- Ubuntu 22.04
- ROS 2 Humble
- C++14 或更高版本
# 克隆代码库
git clone <your-repository-url> one_segment
cd one_segment
# 安装依赖
rosdep install --from-paths src --ignore-src -r -y
# 构建项目
colcon build
# 加载环境变量
source install/setup.bash创建udev规则文件来映射USB设备到固定名称,避免设备重启后映射变化:
sudo nano /etc/udev/rules.d/99-usb-serial.rules添加以下内容(根据您的实际硬件配置调整):
KERNEL=="ttyUSB[0-9]*", MODE="0666"
# Set a fixed name for specific serial devices
# Robomaster 1
SUBSYSTEM=="tty", SUBSYSTEMS=="usb", KERNELS=="1-10.1", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE="0666", SYMLINK+="ttyRobomaster1"
SUBSYSTEM=="tty", SUBSYSTEMS=="usb", KERNELS=="1-10.2", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", MODE="0666", SYMLINK+="ttyPullPushSensors1"
重新加载udev规则:
sudo udevadm control --reload-rules
sudo udevadm trigger使用启动脚本运行完整系统(包括所有串口节点、控制器和GUI):
./start_robot.bash或直接使用ROS 2 launch命令:
# 进入项目目录
cd ~/one_segment
# 加载环境变量
source /opt/ros/humble/setup.bash
source install/setup.bash
# 启动完整系统
ros2 launch one_segment_msgs control_by_keyboard.launch.py如需使用键盘控制机械臂,请参考GUI界面上的按键说明。
系统包含数据记录节点,可记录机械臂运动过程中的传感器数据:
# 开始记录
ros2 service call /data_recorder/toggle_recording std_srvs/srv/SetBool "{data: true}"
# 停止记录
ros2 service call /data_recorder/toggle_recording std_srvs/srv/SetBool "{data: false}"数据默认保存在 ~/one_segment_data 目录下,格式为CSV,包含时间戳、电机位置、速度和力传感器数据。
如遇到串口连接问题,请检查:
- 串口设备是否存在:
ls -l /dev/tty* - 用户是否有串口访问权限:
sudo usermod -a -G dialout $USER(需重新登录) - udev规则是否正确加载:
sudo udevadm trigger
如系统启动失败,请检查:
- 工作空间是否已构建:
colcon build - 环境变量是否正确设置:
source install/setup.bash - 串口设备是否连接:
ls -l /dev/ttyRobomaster1 /dev/ttyPullPushSensors1
更多详细信息和功能说明,请参考项目修改日志和项目结构文档。