SLAM从入门到精通(ROS和底盘Stm32的关系)

news2024/11/26 18:28:35

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        学过Ros的同学,一般对subscribe、publish、话题、服务这些内容都比较熟悉。如果再熟悉一点的话,还会知道slam、move_base、moveit这些框架。再了解多一点的呢,会对框架里面的算法,比如和hector slam、gmapping、amcl、迪杰斯特拉、a*算法比较熟悉。但是,对机器人底盘的知识,尤其是Ros和stm32怎么通信的,很多人却是不算太了解的。

1、Ros和Stm32的物理连接

        一般来说,Ros和Stm32会通过串口进行通信。就算两者通信的是usb,也会在stm32开发板上面通过芯片把usb信号转换成串口信号。

2、操作系统不同

        通常Ros都是运行在linux系统之上的,如果需要界面的话,还会搭载一个ubuntu系统。而stm32开发板上面一般不会安装操作系统,就算有操作系统,也会是一个简单的rtos,比如开源的freertos之类的。在这个板子上面,会根据不同的运动类型,实现不同的控制算法。简单的运动控制算法用pid实现就可以。

3、报文协议

        既然Ros和Stm32之间需要进行通信,那么不管是Ros读数据,还是Ros写数据,都需要按照一定的报文格式进行。通常会采用0x55 0xaa这样的报文头,还会有报文长度、报文内容、校验码,这些都是常规的报文协议格式。

4、Ros从底盘获取的数据

        Ros系统从底盘获取的数据主要有这么几种。第一,里程计数据。这个数据一般是底盘根据轮速和底盘模型计算出来的。第二,imu数据。imu这类传感器,一般也是直接由底盘负责处理的。好一点的底盘程序,会直接融合里程计和imu的数据。第三,避障、电量、电机转速这些原始数据。电量比较好理解,比如机器人没电了,就可以直接发命令让机器人去自动充电。电机转速这些很多情况不一定需要,但是如果机器人需要做功能安全的话,是需要的。

5、Ros发送给底盘的命令数据

        Ros发送给底盘的数据其实就比较简洁了,主要就是cmd_vel数据。这里面包含了x/y/z的线速度,还有围绕x/y/z的角速度。

6、底盘厂家提供的Ros包

        很多时候,底盘厂家会直接提供一个Ros包给Robot开发厂家。这样Robot开发企业就可以专注在算法领域和业务领域,不用关于底盘这些操作细节了。Ros包实现的内容就是上面提及的3、4、5中描述的工作。此外,Ros包还要把从底盘获得数据publish出去,当然对于需要发送给底盘的速度要求也要提前向roscore subscribe一下。

        最后还有一个要注意的就是,如果Ros包退出,相关的class对象在进行析构的时候,一定要让底盘停止,发送最后一次停止命令报文。这样整个工作环境才是安全的,这一点务必要牢记在心。做工业自动化、或者汽车自动驾驶的同学,这方面尤其要注意。

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

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

相关文章

好物周刊#10:算法学习必备

https://cunyu1943.github.io https://yuque.com/cunyu1943 村雨遥的好物周刊,记录每周看到的有价值的信息,主要针对计算机领域,每周五发布。 一、项目 1. ChatGPT-Midjourney 该项目基于 ChatGPT-Next-Web 开发,只要拥有自己…

聪明应对工程项目管理难题的方法和技巧

对于国内的工程项目管理中,经常需要面对以下几个问题: 1.项目问题相互牵扯,积累成堆:通常一个问题不能及时的解决,就会导致更多的任务无法完成,问题越堆积越严重。 2.项目延期,增加成本&#xf…

【leetcode】 vscode leetcode [ERROR] invalid password? 问题解决

目录 问题解决 问题 使用vscode连接leetcode出现下列问题: vscode leetcode [ERROR] invalid password?出现invalid password?的问题,首先需要检查账号密码是否出错,leetcode的账号可以是手机或邮箱,然后密码去check一下&…

Anaconda3-2023.07-2安装和配置教程

Anaconda3-2023.07-2安装和配置教程 前言一、彻底卸载python1、卸载python2、删除环境变量 二、下载Anaconda方式一:官网下载方式二、镜像站下载 三、安装Anaconda3四、配置环境变量五、检验安装是否成功1、查看anaconda版本2、查看python版本3、查看Anaconda Navif…

C (1094) : DS双向链表—前驱后继

Description 在双向链表中,A有一个指针指向了后继节点B,同时,B又有一个指向前驱节点A的指针。这样不仅能从链表头节点的位置遍历整个链表所有节点,也能从链表尾节点开始遍历所有节点。 对于给定的一列数据,按照给定的…

springboot2.7.15集成springcloud,springcloudalibaba

spring-cloud官方中文文档 spring-cloud官方文档 Spring Cloud Alibaba官方文档 这边用的是springboot2.7.15以下是集成springcloud,springcloudalibaba的版本推荐 <dependencyManagement><dependencies><!--SpringBoot整合Spring Cloud--><dependency…

梯度裁剪:torch.nn.utils.clip_grad_norm_详解

梯度裁剪是为了防止梯度爆炸。在训练FCOS算法时&#xff0c;因为训练过程出现了损失为NaN的情况&#xff0c;在github issue有很多都是这种训练过程出现loss为NaN&#xff0c;使用torch.nn.utils.clip_grad_norm_梯度裁剪函数&#xff0c;可以有效预防梯度爆炸的情况发生。 1 …

OpenCV4(C++)—— 图像阈值化

文章目录 前言一、固定阈值化 —— threshold二、自适应阈值化 —— adaptiveThreshold三、LUT查找表 前言 图像阈值化在许多计算机视觉和图像处理任务中都是一个重要的预处理步骤。在边缘检测过程中&#xff0c;通过将图像转换为二值图像&#xff0c;可以突出图像中的边缘信息…

Qt:多语言支持,构建全面应用程序“

Qt&#xff1a;强大API、简化框架、多语言支持&#xff0c;构建全面应用程序" 强大的API&#xff1a;Qt提供了丰富的API&#xff0c;包括250多个C类&#xff0c;基于模板的集合、序列化、文件操作、IO设备、目录管理、日期/时间等功能。还包括正则表达式处理和支持2D/3D…

制作长图海报的详细指南,制作长图海报的5个步骤

制作长图海报是宣传活动、产品或服务的重要方式之一。乔拓云后台提供了丰富的海报模板&#xff0c;让你轻松制作出专业级的长图海报。下面将介绍如何使用乔拓云后台制作长图海报的技巧。 一、选择模板 首先&#xff0c;注册并登录乔拓云后台&#xff0c;进入云设计页面。在选择…

C语言学生成绩录入系统

一、系统概述 该系统是一个由链表创建主菜单的框架&#xff0c;旨在快速创建学生成绩录入系统的主菜单结构。其主要任务包括&#xff1a; 实现链表的创建、插入和遍历功能&#xff0c;用于存储和展示学生成绩录入系统各个模块的菜单项。 2. 提供用户友好的主菜单界面&#xf…

证件照换底色详细教程

说到证件照的底色更改&#xff0c;我想对大部分朋友来说是蛮头疼的事情&#xff0c;由于我们不论是在生活还是学习中&#xff0c;有时候总会要上传一些证件照&#xff0c;而当你手上有证件照准备上传时&#xff0c;发现底色不对&#xff0c;是不是很抓狂&#xff0c;现在&#…

SpringCloud学习笔记-Eureka的服务拉取

假设是OrderService里面拉取Eureka的服务之一User Service 1.依然需要在该服务里面引入依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependenc…

水波纹文字效果动画

效果展示 CSS 知识点 text-shadow 属性绘制立体文字clip-path 属性来绘制水波纹 工具网站 CSS clip-path maker 效果编辑器 页面整体结构实现 使用多个 H2 标签来实现水波纹的效果实现&#xff0c;然后使用clip-path结合动画属性一起来进行波浪的起伏动画实现。 <div …

分析性质+dp计数:1007T4

http://cplusoj.com/d/senior/p/SS231007D 分析题目性质&#xff0c;有&#xff1a; 按编号顺序最短路必然为连续段边只会在连续段内和相邻连续段之间连 i i i 段 连 i 1 i1 i1 段&#xff0c; i 1 i1 i1 段中每个点恰有1条来自 i i i 的边 然后肯定是考虑 f ( l , r )…

Edge浏览器下载文件被保存为 .crdownload 文件的问题小记

问题 近期使用Edge浏览器下载文件时&#xff0c;文件都被保存为 .crdownload 格式的文件了&#xff0c;不确定从哪个版本开始的。除非下载未完成导致文件不完整&#xff0c;否则不会被保存为 .crdownload 格式的文件&#xff1b;实际上文件已完成了下载&#xff0c;且手工修改…

Day4:Linux系统编程1-60P

我的学习方法是&#xff1a;Linux系统编程&#xff08;看pdf笔记&#xff09; Linux网络编程 WebServer 01P-17P Linux相关命令及操作 cp -a dirname1 dirname2 复制目录 cp -r dirname1 dirname2 递归复制目录 1 到目录 2 这里-a 和-r 的差别在于&#xff0c;-a 是完全复制…

深入了解 GMP

视频链接地址:Golang深入理解GPM模型_哔哩哔哩_bilibili 一、Golang“调度器”的由来? (1) 单进程时代不需要调度器 我们知道,一切的软件都是跑在操作系统上,真正用来干活(计算)的是CPU。早期的操作系统每个程序就是一个进程,直到一个程序运行完,才能进行下一个进程,就是…

大数据Doris(七):Doris安装与部署规划

文章目录 Doris安装与部署规划 一、软硬件需求 二、​​​​​​​资源规划

[Java] 服务端消息推送汇总

前言&#xff1a;当构建实时消息推送功能时&#xff0c;选择适合的方案对于开发高效的实时应用至关重要。消息的推送无非就推、拉两种数据模型。本文将介绍四种常见的消息实时推送方案&#xff1a;短轮询&#xff08;拉&#xff09;、长轮训&#xff08;拉&#xff09;、SSE&am…