【阶段学习小总结】

串口通信和CAN总线通信的区别

can总线和串口是两种不同的通信模式,注意CAN总线数据传输所用的虽然是DB9串口线,但它完全不是串口,这一点容易出错。
CAN总线通信是高速,可靠,灵活的一种通信协议。作为一种分布式通信方式,可以在多个设备之间传输数据。这种通信方式非常适用于需要快速大量传输数据的应用,比如车辆的控制系统和工业化的设备。CAN总线基于ID的数据帧进行数据传输,可以在不同的设备之间传输多个字节的数据。

字word
字节byte
位bit
1=2字节
1字节=8

串口也是一种在不同设备之间传输数据额的通信协议,他就比较简单了,是一种点对点的通信方式,只能在两个设备之间传输数据,主要用于低速、低容量的数据传输,比如控制面板和传感器,可以采用同步或异步传输方式。

ros和ros2

感谢小鱼教程:https://fishros.com
ROS2作为第二代机器人操作系统,比ROS更加的强大,有一些在ROS中不好实现或者无法实现的功能,在ROS2中就可以找到方法。
要说ROS2,那就不得不提起ROS,ROS就是机器人操作系统,英文全称(Robot Operating System),但ROS本身并不是一个操作系统,而是可以安装在现在已有的操作系统上(Linux、Windows、Mac)上的软件库和工具集。
ROS出生于2007年,ROS的出现解决了机器人各个组件之间的通信问题,同时基于ROS的完善的通信机制,越来越多的优秀的机器人算法集成到了ROS中来。 现在的ROS功能已经变得非常的丰富和强大。但随着对ROS功能上要求越来越多,一些原始的架构和设计不能够满足目前的使用需求,这也是ROS2出现的原因。 ROS2继承了ROS原有的优秀之处,同时又带来了很多新的功能,ROS2相对于ROS更加的强大。
ROS的设计目的是:简化在各种机器人平台上创建复杂而强大的机器人行为的任务,即不重复造轮子
感知部分有:激光雷达、深度相机、IMU、里程计、碰撞感知、建图
决策部分有:路径规划(navigation)算法、定位算法
控制部分有:轮子驱动

2007年ROS开发人员设计和制作ROS时,当时只想着简化机器人的开发,并没有想到过今天那么多的功能需求,比如商业化要求的稳定性、生命周期管理、多机协同、数据加密等。
ROS发展的后面的几年里,机器人对ROS的功能要求越来越多,ROS开发人员只能在原有的ROS上修修补补。 随着ROS不断的添加新功能,ROS变得越来越臃肿,祖传代码也越来越多。ROS开发人员发现在原有的ROS架构上修修补补十分消耗头发,ROS官方重新设计制作了ROS2。 ROS2是在ROS的基础上设计开发的第二代机器人操作系统,可以帮助我们简化机器人开发任务,加速机器人落地的软件库和工具集。

ros的缺点

一旦Ros Master主节点挂掉后,就会造成整个系统通信的异常,此时避障策略将会失效,如果机器人正在运行,碰到障碍物会径直装上去,机毁人亡! 除了不稳定这个问题,ROS还有很多其他地方存在着问题:
通信基于TCP实现,实时性差、系统开销大
对Python3支持不友好,需要重新编译
消息机制不兼容
没有加密机制、安全性不高
所以在ROS2中,首当其冲的将ROS的主节点干掉了,这里放一张网上流传最广的ROS/ROS2架构图。
【阶段学习小总结】_第1张图片

ros的改进

1os
从原来的只支持linux平台变成了支持windows、mac甚至是嵌入式RTOS平台,这一点要点个赞。
2middleware中间层

  • 去中心化master,ROS和ROS2中间件不同之处在于,ROS2取消了master节点。
  • 去中心化后,各个节点之间可以通过DDS的节点相互发现,各个节点都是平等的,且可以1对1、1对n、n对n进行互相通信。
  • 不造通信的轮子,通信直接更换为DDS进行实现(这个小鱼也要点赞,让专业的人做专业的事情)
  • 采用DDS通信,使得ROS2的实时性、可靠性和连续性上都有了增强。

3应用层
ROS2进行改进有: python2到pyhton3的支持
编译系统的改进(catkin到ament)
软件包更新到c++11
可以使用相同 API 的进程间和进程内通信
持续更新…

你可能感兴趣的:(学习)