这是一个机器人实验项目集合,包含多个实验模块,使用统一的模拟环境进行开发和测试。
-
exp1_firmware/- 固件实验- 蜂鸣器控制
- PWM舵机控制
- 电机控制
- 串行通信
-
exp2_lidar/- 激光雷达实验- SLAM (gmapping)
- 路径规划与导航
- 障碍物规避
-
exp3_depth_camera/- 深度相机实验- 深度图处理
- 颜色检测与跟踪
- 视觉伺服
-
xiaoxueqi_color_picker/- 颜色识别与抓取实验- 基于深度相机的颜色识别
- 机器人自动抓取任务
-
mock/- 统一模拟环境- ROS (rospy) 模拟
- 传感器消息模拟
- 硬件接口模拟
-
data/- 数据处理工具- 数据集导入 (TUM RGB-D)
- 合成数据生成
- 数据回放
-
visualization/- 可视化工具- 地图绘制
- 实验结果统计
- 主题监控
-
tests/- 测试套件 -
tools/- 端到端工具
- Python 3.6+
- 所需依赖包(见 requirements.txt)
pip install -r requirements.txt大多数实验脚本会自动使用模拟环境,无需完整ROS安装:
# 固件实验演示
python3 experiments/exp1_firmware/scripts/run_buzzer_demo.py
# 激光雷达SLAM演示
python3 experiments/exp2_lidar/scripts/run_gmapping_demo.py
# 深度相机演示
python3 experiments/exp3_depth_camera/scripts/run_depth_camera_demo.py
# 颜色抓取演示
python3 experiments/xiaoxueqi_color_picker/scripts/run_color_picker_demo.pypython3 -m pytest tests/项目使用统一的mock系统,可以通过环境变量配置:
# 启用调试模式
export MOCK_DEBUG=1
# 设置延迟时间
export MOCK_DELAY=0.01
# 运行演示
python3 experiments/exp2_lidar/scripts/run_gmapping_demo.pygit clone https://github.com/yourusername/robot-experiments.git
cd robot-experimentspython3 -m venv venv
source venv/bin/activate # Linux/Mac
# 或
venv\Scripts\activate # Windows
pip install -r requirements.txt| 变量名 | 默认值 | 描述 |
|---|---|---|
MOCK_DELAY |
0.002 | 硬件/串行延迟秒数 |
MOCK_DEBUG |
false | 启用调试日志记录 |
MOCK_NOISE_STD |
0.0 | 传感器噪声标准差(米) |
MOCK_AUTO_REPORT |
true | 启用自动周期性报告 |
MOCK_AUTO_REPORT_FREQ |
5.0 | 自动报告频率(Hz) |
MOCK_PICKER_RETRIES |
2 | 颜色选择器重试次数 |
MOCK_FILTER_WINDOW |
5 | 颜色跟踪器过滤窗口 |
MOCK_FILTER_THRESHOLD |
3 | 颜色跟踪器过滤阈值 |
MOCK_ARTIFACTS_DIR |
experiments/artifacts | 生成工件存储目录 |
# 高精度模拟(减少噪声和延迟)
export MOCK_DELAY=0.001
export MOCK_NOISE_STD=0.01
export MOCK_DEBUG=1
# 自定义输出目录
export MOCK_ARTIFACTS_DIR=/tmp/robot_experiments_output-
artifacts/- 实验运行时生成的输出文件color_pick_report.jsonl- 颜色选择器实验结果exp2_run_*/- 激光雷达实验快照和日志*_stats.png- 统计图表
-
data/- 输入数据和工具synthetic_lidar.jsonl- 合成激光雷达数据synthetic_complex.jsonl- 复杂场景合成数据
- 地图文件:
map_snapshot_N.npy(numpy数组),map_snapshot_N.png(可视化) - 日志文件:
run_*.py.log(执行日志) - 报告文件:
*.jsonl(JSON Lines格式的结果) - 轨迹数据:
timeseries.csv(时间序列数据)
项目采用轻量级模拟架构,无需安装完整ROS:
mock/
├── rospy.py # ROS Python API模拟
├── sensor_msgs/ # 传感器消息类型
├── geometry_msgs/ # 几何消息类型
├── std_msgs/ # 标准消息类型
├── Rosmaster_Lib.py # 硬件接口模拟
└── serial.py # 串行通信模拟
- 消息总线: 基于发布-订阅模式的轻量级实现
- 传感器模拟: 生成真实istic的激光雷达、深度相机数据
- 硬件接口: Rosmaster机器人平台API模拟
- 自动报告: 周期性发布机器人状态信息
-
ImportError: 确保PYTHONPATH正确设置
export PYTHONPATH=/path/to/project/experiments/mock:$PYTHONPATH
-
权限错误: 检查输出目录权限
chmod 755 experiments/artifacts
-
内存不足: 减少地图分辨率或实验规模
export MOCK_DEBUG=0 # 禁用详细日志
启用详细日志进行问题诊断:
export MOCK_DEBUG=1
python3 experiments/exp2_lidar/scripts/run_gmapping_demo.py# 运行所有测试
python3 -m pytest tests/
# 运行特定测试
python3 -m pytest tests/test_color_picker_detailed.py -v
# 生成覆盖率报告
python3 -m pytest --cov=experiments tests/# 端到端测试
python3 tools/run_end_to_end.py
# 实验聚合器
python3 tools/end_to_end_aggregator.py项目提供以下ROS兼容API:
- rospy:
init_node,Publisher,Subscriber,spin,shutdown - 消息类型:
LaserScan,Image,Twist,String,Vector3 - 硬件接口: Rosmaster类(电机控制、传感器读取、蜂鸣器等)
如需添加新的传感器或API:
- 在
mock/目录下添加相应模块 - 遵循现有命名约定
- 更新
mock/__init__.py导出列表
- 模拟环境不完全替代真实ROS安装
- 某些高级ROS特性(如tf变换树)未实现
- 硬件接口模拟基于简化模型
- 大规模实验可能消耗较多内存
本项目采用MIT许可证 - 查看 LICENSE 文件了解详情。
我们欢迎贡献!请遵循以下步骤:
- Fork 项目
- 创建功能分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 创建 Pull Request
- 使用Black格式化代码
- 添加适当的docstring
- 为新功能编写测试
- 更新相关文档
本项目基于以下开源工作:
- ROS (Robot Operating System)
- NumPy, Matplotlib, OpenCV等科学计算库
- 各种SLAM和计算机视觉算法
如有问题或建议,请通过GitHub Issues联系维护者。