【阶段学习小总结】

news2024/9/21 12:36:08

串口通信和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架构图。
在这里插入图片描述

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 的进程间和进程内通信
持续更新…

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/729460.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

天梯赛注意事项

格式错误 有的时候题目隐含的条件是要你输出两行的,即使第二行什么也没有,也得输出。 答案错误可能涉及特殊值的处理 或者 题意与你本身的思维不一致 map定义在main外面 键自动赋值 it->first it->second mp自动按照下标排序 . 模拟出栈入栈操…

使用GTK创建简易计算器

使用GTK创建简易计算器 本文将介绍如何使用GTK(GIMP Toolkit)创建一个简单的计算器应用程序。通过这个例子,你将学习如何构建基本的图形用户界面,并了解GTK的一些常用组件和回调函数的使用。 准备工作 首先,确保你已…

Django之中间件

一、中间件介绍 官方的说法:中间件是一个用来处理Django的请求和响应的框架级别的钩子。它是一个轻量、低级别的插件系统,用于在全局范围内改变Django的输入和输出。每个中间件组件都负责做一些特定的功能。 但是由于其影响的是全局,所以需要…

Vivado2020.1 vitis使用:创建hello world项目

前言 之前网上的教程都是基于Vivado2018的,后来接手一个未完工的项目,是使用Vivado2020.1创建的,非常尴尬,只能打开,不能编辑。千辛万苦把2020.1安装好,当然此时不仅仅是Vivado2020.1了,而是vi…

gitee注册以及使用的简单教程

目录 1.gitee是什么? 2. gitee怎么注册? 3.gitee创建仓库 4.gitee怎么提交代码? 5. git的三板斧 1.gitee是什么? 基于Git的代码托管和研发协作平台上面可以托管个人或者公司的代码和开源项目。国外有github,国内有giteegithub经常出现…

(vue)el-table表头、内容居中

(vue)el-table表头、内容居中 效果&#xff1a; 表头、内容都居中 <el-table:data"gridData":header-cell-style"{text-align:center}":cell-style"{text-align:center}" >单个表格的内容居中&#xff1a; el-table-column上加上align‘c…

【C++】-string类的模拟实现

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树&#x1f388; &#x1f389;作者宣言&#xff1a;认真写好每一篇博客&#x1f4a4; &#x1f38a;作者gitee:gitee✨ &#x1f49e;作者专栏&#xff1a;C语言,数据结构初阶,Linux,C 动态规划算法\&#x1f384; 如 果 你…

抖音seo源码开发部署技术分享(一)

目录 开发概述 自研开发者介绍 开发要求&#xff1a; 技术开发布局 源码部署及搭建分享 部署环境搭建 代码开发示例 请求样例 响应样例&#xff1a; 代码展示样例 开发概述 开放平台基于开发者诉求和相关平台规则&#xff0c;提供了两种开放模式&#xff1a;能力开放…

前端Vue自定义顶部导航栏navBar 导航栏搜索框searchBar 导航栏右侧菜单按钮button

前端Vue自定义顶部导航栏navBar 导航栏搜索框searchBar 导航栏右侧菜单按钮button&#xff0c;下载完整代码请访问uni-app插件市场地址&#xff1a;https://ext.dcloud.net.cn/plugin?id13342 效果图如下: # cc-headerSearch #### 使用方法 使用方法 <!-- icon: 右侧菜单…

OpenCV在一个图像上画一个空心绿色的圆和一个实心红色的圆

/*** void cvCircle( CvArr* img, CvPoint center, int radius, CvScalar color, int thickness=1, int line_type=8, int shift=0 );* Opencv画点 其实画的是小圆圈* img:图像。* center:圆心坐标。* radius:圆形的半径。* color:线条的颜色。* thickness:如果是正数,表…

vue筛选框封装

点击对默认查询条件之外的条件进行 增加或删除 在使用的组件或标签加入:filtrateList"filtrateList"传入条件查询数组 当前demo写在xk-page中,就以xk-page组件为例 <xk-upage :filtrateList"filtrateList" :queryArr"queryArr"></xk-…

java项目之母婴用品网站(ssm+mysql+jsp)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的母婴用品网站。 开发环境&#xff1a; 后端&#xff1a; 开发语言&#xff1a;Java 框架&#xff1a;ssm&#xff0c;mybatis JDK版本&am…

EasyCVR非按需定时快照功能的设计与实现方法

EasyCVR基于云边端一体化架构&#xff0c;部署轻快、功能灵活&#xff0c;平台可支持多协议、多类型设备接入&#xff0c;包括&#xff1a;国标GB28181、RTMP、RTSP/Onvif、海康Ehome、海康SDK、大华SDK、宇视SDK等。在视频能力上&#xff0c;可实现视频直播、录像、回放、检索…

Gradio库中的Model3D模块:实时上传和展示3D模型

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️ &#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…

F#奇妙游(9):来一点点画图

F#绘图 如果Python没有Matplotlib&#xff0c;R没有ggplot&#xff0c;Matplab没有plot函数……就像阿珍爱上了阿强&#xff0c;能画图的脚本才是好脚本。当然&#xff0c;F#有画图包&#xff0c;但是F#在数据处理中的地位就像下面&#xff0c;这也是我们没办法的。 ScottPl…

分析openGauss包内集合类型的实现方法

前言 Oracle中集合类型覆盖了Postgresql数组的功能&#xff0c;在Oracle用户中时非常常用的。 尤其是包内定义的集合类型&#xff0c;在SPEC定义后即可直接使用&#xff0c;scope也只在包在生效&#xff0c;使用非常灵活。 开源PG因为有数组没有实现这部分语法&#xff0c;下…

超级广场效果的耳机放大器音响电路设计

用头戴式耳机&#xff0c;尤其是小型耳机听音乐&#xff0c;总感到音乐味不够足&#xff0c;在低频段的效果更差。因此用本机增强耳机的低频特性&#xff0c;并采用立体声反相合成的办法&#xff0c;加上内藏简易矩阵环绕声电路&#xff0c;能获得强劲的低音和在较宽的范围内展…

Windows mingw64 最简易 安装配置

其实挺简单一件事 很多教程都搞复杂了 自己写一个 只需要两步 1. 下载压缩包并解压 2. 配置环境变量 (1). GitHub 下载地址 Releases niXman/mingw-builds-binaries GitHub 如果GitHub下载太慢可以来这里加速 或者用地址2 GitHub Proxy 代理加速 (ghproxy.com) (2). 下…

-Xss1m / -XX:ThreadStackSize=512k

-Xss / -XX:ThreadStackSize指定线程最大栈空间jdk1.4里默认的栈大小是256KBjdk1.5里默认的栈大小为1M配置JVM启动参数&#xff1a;-Xmx20m -Xms20m -Xss1m -XX:PrintCommandLineFlags-XX:ConcGCThreads3 -XX:G1ConcRefinementThreads13 -XX:GCDrainStackTargetSize64 -XX:Init…

学习grpc

Grpc简介&#xff1a; gRPC是一个高性能、通用的开源RPC框架&#xff0c;其由Google主要面向移动应用开发并基于HTTP/2协议标准而设计&#xff0c;基于ProtoBuf(Protocol Buffers)序列化协议开发&#xff0c;且支持众多开发语言&#xff0c;能够基于语言自动生成客户端和服务端…