ROS机器人构建探讨
ROS机器人构建探讨 【ROS机器人构建探讨】本文主要针对于机器人下位机或相关联部分进行探讨
自ROS在2007年诞生于斯坦福大学至今已经走过了十多年的时间,如今ROS已经成为了机器人行业的普遍标准。ROS的分布式应用大大提高了代码的可复用性。
一、机器人商用应具备那些能力 人脸识别,语音交互等都是单纯PC端的应用,我们暂且不谈。
- 底层单片机的在线升级,最好可以具备网络升级能力(每次升级机器人都要拆开?)
- 自动充电功能(没有电的机器人?)
- 自身状况的检测功能(机器人行走过程中撞墙了,还在走?)
- 可以自定义通信协议通过串口、CAN总线等方式和PC端通信,再将消息解析并发布到ROS中。
优点:MCU端负载小、通信协议制定更加灵活
缺点:没有固定的消息格式,随着传感器的变多,通信协议会变得很臃肿。
- 通过rosserial协议,使MCU端成为ROS的一个节点,直接与ROS建立通信关系。
优点:可以直接使用ROS标准的信息格式通信
缺点:对MCU的性能有一定的要求
我在实际应用中采用了第二种方式搭建ROS与MCU端的通信模板:
这里实际使用的是STM32F103C8T6芯片移植rosserial通过USB虚拟串口和PC端ROS系统通信。
- 若通过串口通信的方式,只能满足低频率的小信息量的消息通信,消息量一多、频率一提高连接便会出错。
- 通过该方式建立的通信,基本可以满足各种传感器发布频率的要求。
- 限于STM32F103的性能,实际的发布频率会略低与设定的发布频率,但基本没什么影响。
- 连接稳定,不会出现自动断开连接的问题
总结 基于上面的介绍,真正的机器人构建,是需要很多方面的知识的,不是只了解一方面知识就可以完成整个机器人系统搭建的,非常希望大家可以将自己擅长的那部分知识分享一下:
基于我的认识,机器人的的构建过程也完全可以采用无人驾驶汽车的这种模式,通过通信协议完成传感器消息的获取,电机控制指令的下发等。假设我们采用CAN协议,但在实际应用过程中自定义的CAN协议没有总体的考量可扩展性和可维护性都很差,因此我们需要一种类似与CANOpen的协议来放到实际应用中。可以将不同的传感器采集模块开发成不同的CANOpen从站,将中控单片机部分开发成CANOpen主站来和ROS系统通信。
问题一:如何开发这样的CANOpen从站和主站呢?
中控单片机部分若果采用实时操作系统会不会提升整个系统的性能呢!
问题二:有没有必要在这样的控制系统中加入实时操作系统,加入后会有那些优势呢?
之前说道了,ROS系统和中控之间的通信速度问题,如果应用以太网通信是不是又可以进一步提升性能!
问题三:有没有必要采用lwip以太网通信建立ROS和单片机之间的联系?
推荐阅读
- 剑指|剑指 Offer 13. 机器人的运动范围(dfs,bfs)
- Flutter的ListView
- 构建App(一)(框架与结构)
- 如何在手机上查看测试vue-cli构建的项目
- 用Go构建区块链——3.持久化和命令行
- 运用flutter|运用flutter 构建一个发布版(release)APK
- 历史上的今天|【历史上的今天】2 月 16 日(世界上第一个 BBS 诞生;中国计算机教育开端;IBM 机器人赢得智能竞赛)
- 基于stm32智能风扇|基于stm32智能风扇_一款基于STM32的智能灭火机器人设计
- 8、Flask构建弹幕微电影网站-搭建后台页面-密码修改、主页控制面板
- 倾诉