一个支持多平台的机器人水果检测控制系统,包含Web端、PWA、桌面应用和移动应用。
- 多平台支持:Web、PWA、桌面应用、移动应用
- 实时视频流:基于ROS和SRS的实时摄像头流
- 智能检测:机器人自动检测和定位水果
- 响应式设计:完美适配各种屏幕尺寸
- PWA功能:支持离线使用、推送通知、应用安装
Controller_SA/
├── public/ # Web应用文件
│ ├── index.html # 主页面
│ ├── config.html # 配置页面
│ ├── manifest.json # PWA清单文件
│ ├── sw.js # Service Worker
│ ├── offline.html # 离线页面
│ ├── icons/ # PWA图标
│ └── screenshots/ # PWA截图
├── src/ # React Native移动应用
│ ├── App.js # 主应用组件
│ ├── components/ # 组件目录
│ │ ├── VideoPlayer.js # 视频播放器
│ │ ├── ControlButtons.js # 控制按钮
│ │ └── ConnectionStatus.js # 连接状态
│ └── utils/ # 工具函数
│ └── config.js # 配置文件
├── electron/ # Electron桌面应用
│ └── main.js # 主进程文件
├── scripts/ # 工具脚本
│ └── generate-icons.js # 图标生成脚本
├── robot_fruit_controller.py # 机器人水果检测控制器
├── websocket_server.py # WebSocket通信服务器
├── simple_camera_stream.py # 摄像头推流节点
├── srs.conf # SRS流媒体服务器配置
├── start_robot_fruit_system.sh # 系统启动脚本(中文)
├── start_robot_fruit_system_en.sh # 系统启动脚本(英文)
└── package.json # 项目配置
- ROS节点:
robot_fruit_controller.py
- 机器人控制和水果检测 - WebSocket服务器:
websocket_server.py
- 实时通信 - 视频流服务:
simple_camera_stream.py
+ SRS - 摄像头推流
- Web应用:纯HTML/CSS/JS,支持PWA
- 移动应用:React Native,支持iOS/Android
- 桌面应用:Electron,跨平台桌面应用
- Python 3.7+
- Node.js 14+
- ROS Noetic (机器人端)
- FFmpeg (视频流处理)
- SRS (流媒体服务器)
# 安装Node.js依赖
npm install
# 安装Python依赖
pip install rospy opencv-python numpy websockets
# 中文版启动脚本
./start_robot_fruit_system.sh
# 英文版启动脚本(解决乱码问题)
./start_robot_fruit_system_en.sh
# 启动Web服务器
npm run web
# 访问地址
http://localhost:3000
# Android
npm run android
# iOS
npm run ios
- 访问
http://localhost:3000
- 支持PWA安装
- 响应式设计,适配各种设备
- 实时视频流和控制
- 离线使用:Service Worker缓存
- 推送通知:实时状态更新
- 应用安装:可添加到主屏幕
- 快捷方式:快速访问功能
- 原生性能:React Native开发
- 跨平台:iOS和Android
- 传感器支持:摄像头、陀螺仪等
- 离线功能:本地缓存和同步
- Electron:跨平台桌面应用
- 原生体验:菜单栏、窗口控制
- 开发工具:内置调试功能
- 水果检测:自动识别苹果、橙子、香蕉
- 智能定位:机器人自动旋转对准目标
- 实时反馈:WebSocket实时状态更新
- 安全控制:紧急停止和状态监控
- 实时推流:ROS摄像头数据推流
- 多格式支持:RTMP、HTTP-FLV、HLS
- 低延迟:优化编码参数
- 自适应:根据网络状况调整
- 响应式设计:完美适配各种屏幕
- 移动优化:触摸友好的界面
- 实时状态:连接状态、机器人状态
- 非阻塞通知:优雅的消息提示
# SRS服务器配置 (srs.conf)
listen 1935; # RTMP端口
http_server {
enabled on;
listen 8081; # HTTP-FLV端口
}
// 默认WebSocket地址
ws://192.168.3.75:8082
// 默认视频流地址
http://192.168.3.75:8081/live/robot.flv
- CSS媒体查询:针对不同屏幕尺寸
- JavaScript检测:动态应用移动端样式
- 字体大小调整:防止文字换行
- 按钮间距优化:触摸友好的布局
- Service Worker缓存:离线功能
- 资源预加载:提升加载速度
- 推送通知:实时状态更新
- 应用安装:原生应用体验
-
中文乱码问题
# 使用英文版启动脚本 ./start_robot_fruit_system_en.sh
-
视频流无法播放
- 检查SRS服务是否启动
- 确认摄像头连接正常
- 检查网络连接
-
WebSocket连接失败
- 确认机器人端WebSocket服务运行
- 检查防火墙设置
- 验证IP地址配置
-
移动端样式问题
- 清除浏览器缓存
- 检查CSS媒体查询
- 使用调试页面验证
- 移动端调试:
mobile-debug.html
- PWA测试:
npm run pwa:test
- 性能审计:
npm run pwa:audit
- 后端:在Python文件中添加ROS节点
- 前端:在对应平台文件中添加UI组件
- 通信:通过WebSocket进行数据交换
- 测试:多平台测试确保兼容性
- Python:遵循PEP 8规范
- JavaScript:使用ES6+语法
- CSS:使用BEM命名规范
- HTML:语义化标签
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情
欢迎提交 Issue 和 Pull Request!
如有问题或建议,请通过以下方式联系:
- 提交 GitHub Issue
- 发送邮件至项目维护者
RC控制器 - 让机器人控制更简单、更智能!🤖