Skip to content

WINDGAND/RC_Controller

Repository files navigation

RC控制器 - 机器人水果检测系统

一个支持多平台的机器人水果检测控制系统,包含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,跨平台桌面应用

🚀 快速开始

1. 环境要求

  • Python 3.7+
  • Node.js 14+
  • ROS Noetic (机器人端)
  • FFmpeg (视频流处理)
  • SRS (流媒体服务器)

2. 安装依赖

# 安装Node.js依赖
npm install

# 安装Python依赖
pip install rospy opencv-python numpy websockets

3. 启动系统

机器人端启动

# 中文版启动脚本
./start_robot_fruit_system.sh

# 英文版启动脚本(解决乱码问题)
./start_robot_fruit_system_en.sh

Web端启动

# 启动Web服务器
npm run web

# 访问地址
http://localhost:3000

移动应用开发

# Android
npm run android

# iOS
npm run ios

📱 多平台使用

Web端 (推荐)

  • 访问 http://localhost:3000
  • 支持PWA安装
  • 响应式设计,适配各种设备
  • 实时视频流和控制

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配置

// 默认WebSocket地址
ws://192.168.3.75:8082

视频流地址

// 默认视频流地址
http://192.168.3.75:8081/live/robot.flv

📊 性能优化

移动端优化

  • CSS媒体查询:针对不同屏幕尺寸
  • JavaScript检测:动态应用移动端样式
  • 字体大小调整:防止文字换行
  • 按钮间距优化:触摸友好的布局

PWA优化

  • Service Worker缓存:离线功能
  • 资源预加载:提升加载速度
  • 推送通知:实时状态更新
  • 应用安装:原生应用体验

🐛 故障排除

常见问题

  1. 中文乱码问题

    # 使用英文版启动脚本
    ./start_robot_fruit_system_en.sh
  2. 视频流无法播放

    • 检查SRS服务是否启动
    • 确认摄像头连接正常
    • 检查网络连接
  3. WebSocket连接失败

    • 确认机器人端WebSocket服务运行
    • 检查防火墙设置
    • 验证IP地址配置
  4. 移动端样式问题

    • 清除浏览器缓存
    • 检查CSS媒体查询
    • 使用调试页面验证

调试工具

  • 移动端调试mobile-debug.html
  • PWA测试npm run pwa:test
  • 性能审计npm run pwa:audit

📝 开发指南

添加新功能

  1. 后端:在Python文件中添加ROS节点
  2. 前端:在对应平台文件中添加UI组件
  3. 通信:通过WebSocket进行数据交换
  4. 测试:多平台测试确保兼容性

代码规范

  • Python:遵循PEP 8规范
  • JavaScript:使用ES6+语法
  • CSS:使用BEM命名规范
  • HTML:语义化标签

📄 许可证

本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情

🤝 贡献

欢迎提交 Issue 和 Pull Request!

📞 联系方式

如有问题或建议,请通过以下方式联系:

  • 提交 GitHub Issue
  • 发送邮件至项目维护者

RC控制器 - 让机器人控制更简单、更智能!🤖

About

机器人水果控制系统 - 基于Python和React的智能控制平台

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published