服务机器人产品需要被Web控制台、手机App和客户业务系统调用,但原团队基于ROS的方案研发3年未能交付:上层应用必须懂ROS才能接入,接口零散、状态不可控、多台机器人无法统一管理。项目推倒重来,目标是做一个让上层应用不用懂ROS、通过标准接口就能下发任务和获取状态的基础平台。
点击空白处退出提示
服务机器人产品需要被Web控制台、手机App和客户业务系统调用,但原团队基于ROS的方案研发3年未能交付:上层应用必须懂ROS才能接入,接口零散、状态不可控、多台机器人无法统一管理。项目推倒重来,目标是做一个让上层应用不用懂ROS、通过标准接口就能下发任务和获取状态的基础平台。
1. 统一接口:资源化HTTP API,统一返回格式与错误码,带版本号,向后兼容;
2. 实时推送:WebSocket推送机器人状态、任务进度和告警,支持对外WebSocket连接;
3. 消息与远程调用:RabbitMQ消息数据链路、Thrift双向远程调用、通用透明数据通道;
4. 逻辑层:按商业需求定义的业务逻辑、状态机、任务编排、多机器人管理、权限与日志;
5. 通信层:自研rosbridge协议实现,连接管理与自动重连,ROS话题/服务/动作与业务接口的映射;
6. 前端:用Flutter开发机器人控制App,用于联调测试。
本人以ROS外行身份接手,独自完成从需求分析、整体设计到编码、单元测试的全部工作,用时3个月。
技术栈:Java、Spring Boot、WebSocket、RabbitMQ、Thrift、rosbridge(Ubuntu + ROS)、Flutter。
亮点与难点:
1. 机器人行业以C++/Python为主,本项目用Java实现完整的rosbridge对接,把ROS细节完全封装在通信层;
2. 分层设计:接口层、逻辑层、通信层解耦,机器人型号或ROS版本变化不影响上层应用;
3. 任务异步化 + 状态推送,解决导航等长耗时动作的状态跟踪问题;
4. 平台最终成为机器人产品的基础性商用逻辑与接口系统。
说明:配图为重新绘制的架构与接口风格示意,不含原项目代码与界面。



评论