# material_pushing_robot **Repository Path**: a_hr/material_pushing_robot ## Basic Information - **Project Name**: material_pushing_robot - **Description**: 推料机器人循迹功能包 #AGV #机器人导航 #ROS #超声波传感器 #磁导航 #工业自动化 #搬运机器人 #循迹算法 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: develop - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-15 - **Last Updated**: 2026-01-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 物料推送机器人 (Material Pushing Robot) 一个基于ROS(机器人操作系统)的物料推送机器人项目,支持多种控制模式:模拟量控制、磁循迹控制和超声波跟随控制。 ## 项目概述 本项目实现了一个完整的物料推送机器人控制系统,包含以下核心功能模块: - **模拟量电机控制**:通过串口通信控制模拟量电机 - **磁循迹系统**:使用MS16A磁传感器实现磁线跟随 - **超声波跟随**:使用DYP-A21超声波传感器实现距离跟随 - **Modbus电机控制**:支持RS485 Modbus协议的电机控制 ## 项目结构 ``` material_pushing_robot/ ├── analog_controlled_motor/ # 模拟量控制模块 │ ├── CMakeLists.txt │ ├── package.xml │ └── src/ │ └── hk_ao.cpp # 华控模拟量输出节点 ├── magnetic_controlled_motor/ # 磁循迹控制模块 │ ├── CMakeLists.txt │ ├── package.xml │ └── src/ │ ├── mag_sensor_reader.cpp # 磁传感器数据读取 │ ├── magnetic_follower.cpp # 磁循迹算法实现 │ └── motor_control.cpp # Modbus电机控制 └── ultrasonic_controlled_motor/ # 超声波控制模块 ├── CMakeLists.txt ├── package.xml └── src/ ├── dyp_a21_can.cpp # DYP-A21 CAN传感器读取 ├── motor_control.cpp # Modbus电机控制 └── ultrasonic_follower.cpp # 超声波跟随算法 ``` ## 核心功能 ### 1. 模拟量电机控制 (analog_controlled_motor) 通过串口控制模拟量电机,支持: - 串口自动扫描与连接 - Modbus CRC校验 - 多通道电压输出 - 消息超时保护 - 安全关机功能 **订阅话题**: - `~motor_speed` (std_msgs/Float32):电机速度指令,范围[0.0, 1.0] **参数**: - `~serial_port`:串口号,默认"/dev/ttyUSB0" - `~baud_rate`:波特率,默认9600 - `~device_address`:设备地址,默认1 - `~output_channel`:输出通道,默认1 - `~min_voltage`/`max_voltage`:电压范围,默认0.0-10.0V - `~min_speed`/`max_speed`:速度范围,默认0.0-1.0 - `~timeout_duration`:超时时间,默认1秒 ### 2. 磁循迹控制 (magnetic_controlled_motor) 使用磁传感器实现线路跟踪功能: - 磁传感器数据读取(MS16A) - 位置数据滤波处理 - PID控制算法 - 状态检测(检测/丢失) **节点**: - `mag_sensor_reader`:读取并发布磁传感器数据 - `magnetic_follower`:实现循迹控制算法 **订阅/发布**: - 订阅:`~mag_data` (std_msgs/UInt16) - 发布:`~motor_command` (std_msgs/String)、`~motor_speed` (std_msgs/Float32)、`~line_position` (std_msgs/Float32) ### 3. 超声波跟随 (ultrasonic_controlled_motor) 使用CAN接口超声波传感器实现跟随: - DYP-A21 CAN传感器数据读取 - 双边距离数据滤波 - 超声波跟随控制算法 - 障碍物检测与避障 **节点**: - `dyp_a21_can_reader`:读取CAN超声波传感器数据 - `ultrasonic_follower`:实现超声波跟随控制 **订阅/发布**: - 订阅:`~left_distance` / `~right_distance` (std_msgs/Float32) - 发布:`~motor_command` (std_msgs/String)、`~motor_speed` (std_msgs/Float32) ### 4. Modbus电机控制 通用的Modbus RTU电机控制模块: - 串口配置(波特率、数据位等) - Modbus协议封装 - 绝对位置控制 - 急停功能 - 命令超时检测 **服务**: - `~init`:初始化电机 - `~enable`:使能/失能电机 **订阅**: - `~command` (std_msgs/String):控制命令(forward/backward/stop等) ## 安装依赖 ```bash # 安装ROS(以Noetic为例) sudo apt-get install ros-noetic-desktop-full # 创建工作空间 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone https://gitee.com/a_hr/material_pushing_robot.git # 安装依赖 cd ~/catkin_ws rosdep install --from-paths src --ignore-src -r -y # 编译 catkin_make ``` ## 运行方式 ### 模拟量控制模式 ```bash # 启动模拟量控制节点 roslaunch analog_controlled_motor hk_ao.launch ``` ### 磁循迹模式 ```bash # 启动磁传感器读取节点 roslaunch magnetic_controlled_motor mag_sensor_reader.launch # 启动磁循迹控制节点 roslaunch magnetic_controlled_motor magnetic_follower.launch ``` ### 超声波跟随模式 ```bash # 启动CAN接口配置 sudo ip link set can0 up type can bitrate 500000 # 启动超声波传感器读取节点 roslaunch ultrasonic_controlled_motor dyp_a21_can.launch # 启动超声波跟随控制节点 roslaunch ultrasonic_controlled_motor ultrasonic_follower.launch ``` ## 配置参数 ### 通用参数 | 参数 | 类型 | 默认值 | 说明 | |------|------|--------|------| | serial_port | string | /dev/ttyUSB0 | 串口号 | | baud_rate | int | 9600/115200 | 波特率 | | device_address | int | 1 | 设备地址 | ### 磁循迹参数 | 参数 | 默认值 | 说明 | |------|--------|------| | target_center | 0 | 目标中心位置 | | dead_zone | 50 | 死区范围 | | kp | 0.5 | PID比例系数 | | base_speed | 0.5 | 基础速度 | | turn_speed | 0.3 | 转向速度 | | filter_size | 5 | 滤波窗口大小 | ### 超声波跟随参数 | 参数 | 默认值 | 说明 | |------|--------|------| | target_distance | 0.5 | 目标距离(米) | | min_distance | 0.1 | 最小安全距离 | | dead_zone | 0.05 | 死区范围 | | kp | 1.0 | PID比例系数 | | forward_speed | 0.3 | 前进速度 | ## 通信协议 ### Modbus RTU 电机控制采用标准的Modbus RTU协议: - 功能码:0x06(单寄存器写入)、0x10(多寄存器写入) - CRC16校验 - 默认从站地址:1 ### 串口配置 - 数据位:8 - 停止位:1 - 校验位:无 ## 许可证 本项目遵循开源协议,具体许可证信息请参阅项目根目录下的LICENSE文件。 ## 贡献指南 欢迎提交Issue和Pull Request来改进本项目。在提交代码前,请确保: 1. 代码风格与现有代码一致 2. 添加必要的注释 3. 测试通过 ## 总结 这是一个功能完整的ROS物料推送机器人项目,包含模拟量控制、磁循迹和超声波跟随三种控制模式。README.md已按照要求用中文编写,包含了项目概述、功能介绍、安装配置和运行方式等核心内容。