# robotone **Repository Path**: xjshiMax/robotone ## Basic Information - **Project Name**: robotone - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-11 - **Last Updated**: 2025-11-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # RobotOne - ROS2 IMU传感器驱动项目 ## 项目简介 RobotOne是一个基于ROS2的IMU传感器驱动项目,旨在为机器人系统提供稳定可靠的惯性测量单元(IMU)数据接口。本项目遵循现代C++开发规范,使用ROS2 Humble版本,实现了完整的传感器数据采集、处理和发布功能。 ## 项目架构 ### 目录结构 ``` robotone/ ├── README.md # 项目说明文档 ├── .cursorrules # 开发规则和规范 ├── test_sensor.sh # 基础传感器测试脚本 ├── test_comprehensive.sh # 综合测试脚本 ├── src/ # 源代码目录 │ └── robotone/ # ROS2包目录 │ ├── CMakeLists.txt # CMake构建配置 │ ├── package.xml # ROS2包配置文件 │ ├── launch/ # Launch文件目录 │ │ └── sensor.launch.py # 传感器节点启动文件 │ └── src/ # C++源代码 │ └── main.cpp # 主程序文件 ├── build/ # 编译构建目录 ├── install/ # 编译安装目录 └── log/ # 编译日志目录 ``` ### 核心组件 1. **SensorNode类** - 传感器节点主类 - 继承自`rclcpp::Node` - 实现传感器数据发布功能 - 支持定时器回调机制 2. **数据发布机制** - 发布主题:`/sensor_data` - 消息类型:`std_msgs::msg::String` - 发布频率:1Hz(可配置) ## 技术特性 ### 开发规范 - **C++标准**: C++17/20,使用现代C++特性 - **ROS2版本**: Humble/Iron版本兼容 - **构建系统**: CMake + colcon - **代码质量**: 遵循Google C++ Style Guide ### 核心功能 - ✅ 传感器节点自动启动和初始化 - ✅ 定时数据发布机制 - ✅ ROS2标准日志记录 - ✅ 优雅的节点生命周期管理 - ✅ 可配置的发布频率 - ✅ 参数配置管理 - ✅ Launch文件支持 - ✅ 现代C++17特性和错误处理 - ✅ 原子操作和线程安全 ### 待实现功能 - 🔄 IMU硬件接口驱动 - 🔄 串口通信协议实现 - 🔄 数据解析和校验机制 - 🔄 坐标系变换和单位转换 - 🔄 数据滤波和校准功能 - 🔄 单元测试覆盖 - 🔄 性能监控和优化 ## 环境要求 ### 系统要求 - **操作系统**: Ubuntu 22.04 LTS (推荐) - **ROS2版本**: Humble Hawksbill - **编译器**: GCC 9.4+ 或 Clang 12+ - **CMake**: 3.8+ ### 依赖包 ```xml rclcpp std_msgs sensor_msgs geometry_msgs ``` ## 安装和编译 ### 1. 环境准备 ```bash # 安装ROS2 Humble (如果未安装) sudo apt update sudo apt install ros-humble-desktop # 设置环境变量 echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc source ~/.bashrc ``` ### 2. 编译项目 ```bash # 进入项目根目录 cd /home/pc/xjshi/ros/robotone # 编译项目 colcon build # 设置环境 source install/setup.bash ``` ### 3. 验证安装 ```bash # 检查包是否正确安装 ros2 pkg list | grep robotone # 查看可执行文件 ros2 run robotone --help ``` ## 使用方法 ### 启动传感器节点 ```bash # 方法1: 直接运行 ros2 run robotone sensor_node # 方法2: 使用launch文件(推荐) ros2 launch robotone sensor.launch.py # 方法3: 使用launch文件并自定义参数 ros2 launch robotone sensor.launch.py publish_rate:=10.0 queue_size:=20 frame_id:=base_link # 方法4: 使用测试脚本 chmod +x test_sensor.sh ./test_sensor.sh ``` ### 监听传感器数据 ```bash # 监听sensor_data主题 ros2 topic echo /sensor_data # 查看主题信息 ros2 topic info /sensor_data # 查看节点列表 ros2 node list ``` ### 调试和监控 ```bash # 查看节点日志 ros2 node info /sensor_node # 监控系统资源 htop # 查看ROS2日志 ros2 log level /sensor_node debug ``` ## 配置参数 ### 当前配置 - **节点名称**: `sensor_node` - **发布主题**: `/sensor_data` - **发布频率**: 1Hz - **消息队列大小**: 10 ### 未来可配置参数 ```yaml # 传感器配置 sensor: device_path: "/dev/ttyUSB0" # 串口设备路径 baud_rate: 115200 # 波特率 publish_rate: 100 # 发布频率(Hz) frame_id: "imu_link" # 坐标系ID # 数据处理配置 processing: enable_filter: true # 启用数据滤波 filter_type: "kalman" # 滤波算法类型 enable_calibration: true # 启用校准 calibration_file: "calib.yaml" # 校准文件路径 ``` ## 开发指南 ### 代码规范 1. **命名规范**: 使用驼峰命名法,类名首字母大写 2. **注释规范**: 所有函数必须包含详细注释 3. **错误处理**: 实现完整的异常处理机制 4. **内存管理**: 使用智能指针,遵循RAII原则 ### 扩展开发 1. **添加新的传感器类型**: 继承基类并实现接口 2. **实现数据滤波**: 添加滤波算法模块 3. **支持多种通信协议**: 实现协议抽象层 4. **添加Web界面**: 使用ROS2 Web工具 ### 测试策略 ```bash # 基础功能测试 chmod +x test_sensor.sh ./test_sensor.sh # 综合测试(推荐) chmod +x test_comprehensive.sh ./test_comprehensive.sh # 单元测试(待实现) colcon test --packages-select robotone # 集成测试(待实现) ros2 launch robotone test.launch.py # 性能测试(待实现) ros2 run robotone performance_test ``` ## 故障排除 ### 常见问题 1. **节点无法启动** ```bash # 检查ROS2环境 echo $ROS_DISTRO # 重新编译 colcon build --packages-select robotone ``` 2. **数据发布异常** ```bash # 检查主题状态 ros2 topic hz /sensor_data # 查看节点日志 ros2 log level /sensor_node info ``` 3. **编译错误** ```bash # 清理编译缓存 rm -rf build/ install/ log/ colcon build ``` ### 调试工具 - **rqt**: ROS2图形化调试工具 - **ros2 bag**: 数据记录和回放 - **valgrind**: 内存泄漏检测 - **gdb**: 调试器 ## 贡献指南 ### 开发流程 1. Fork项目到个人仓库 2. 创建功能分支: `git checkout -b feature/new-feature` 3. 提交代码: `git commit -m "Add new feature"` 4. 推送分支: `git push origin feature/new-feature` 5. 创建Pull Request ### 代码审查 - 所有代码必须通过静态分析 - 单元测试覆盖率 > 80% - 遵循项目编码规范 - 添加适当的文档注释 ## 许可证 本项目采用MIT许可证,详见LICENSE文件。 ## 联系方式 - **维护者**: AI进化论-花生 - **邮箱**: you@example.com - **项目地址**: https://github.com/your-username/robotone ## 更新日志 ### v0.0.0 (当前版本) - ✅ 基础传感器节点框架 - ✅ ROS2标准消息发布 - ✅ 定时器回调机制 - ✅ 基础测试脚本 - ✅ 现代C++17特性和错误处理 - ✅ 参数配置系统 - ✅ Launch文件支持 - ✅ 原子操作和线程安全 - ✅ 详细的代码注释和文档 ### 计划功能 - 🔄 IMU硬件驱动实现 - 🔄 数据滤波和校准 - 🔄 单元测试覆盖 - 🔄 性能监控和优化 - 🔄 数据记录和回放功能 - 🔄 Web界面支持 --- **注意**: 本项目正在积极开发中,欢迎贡献代码和建议!