当前位置: 首页 > news >正文

机器人项目:从 ROS2 切换到 ROS1 的原因

一、说明

机器人操作系统ROS是使用最广泛的机器人中间件平台。它在机器人社区中使用了10多年,无论是在业余爱好者领域还是在工业领域。ROS可用于各种微控制器和计算机,从Arduino到Raspberry Pi再到Linux工作站,它为电机控制器,视觉传感器,深度摄像头和激光扫描仪提供硬件支持。本文介绍ROS2和ROS1的项目尝试和结论。

二、在ROS学习过程

        在我的构建机器人项目中,我同时使用了 ROS1 和 ROS2。到目前为止,我完成了 2 个阶段中的 5 个。第一阶段是研究:了解机器人的硬件和软件,研究微控制器和传感器,测试库和中间件。在第二阶段,我构建了一个基于Arduino的原型,一种红外控制的4轮车,我称之为RADU。现在,阶段 3 有两个不同的部分:使用 ROS 模拟机器人,然后构建支持 ROS 的机器人。这就是困境:ROS2的模拟 - 通过长时间的试错期来之不易 - 无法扩展到混凝土机器人,因为我的硬件不受支持。我考虑了很长时间,最终决定从此继续使用 ROS1。

本文总结了我的经验,并解释了最终选择的基本原理。

这篇文章最初出现在我的博客 admantium.com。

三、回顾我的机器人项目

        在 2021 年初启动项目时,我对 ROS 的第一次体验仅限于纯模拟。在我的笔记本电脑上将基于Ubuntu的Linux作为VM运行,我用RViz安装了ROS noetic,并制作了一个简单的四轮机器人URDF模型。

        然后,我买了一个机器人底盘,几个Arduino Uno和5V兼容传感器。通过学习教程,了解 Arduino 的工作原理以及如何测量和处理传感器数据,这是一个令人振奋的时刻。我有很多“尤里卡”时刻,在遇到一些困难后,传感器会突然工作。这一阶段以第一个混凝土原型完成,这是一个由 IR 控制的移动 4 轮底盘。

        准备在我的项目中充分利用 ROS,我将 ROS2 安装在专用的 Linux 工作站上。然后我开始将我的简单RViz ROS1模型移植到ROS2,并扩展模型以兼容Gazebo。有趣的是,学习机器人背后的物理学,并深入了解ROS概念。不利的一面是,我花了很长时间的试验和错误来开发一个与Gazebo兼容的模型。但最后,我可以启动模拟,启动一个远程节点,并在模拟流点云传感器数据中移动机器人。

        从模拟到机器人是下一个阶段。与此同时,覆盆子笔克进入舞台。最初,我只是测试了如何添加传感器并使用C和MicroPython读取它们。但是阅读了几个教程并观看了有关基于Raspberry Pi的项目的视频,这些项目使用Python中的机器人控制软件使我相信了可行性。用MicroPython从头开始编写电机控制软件成为我的目标。我用MicroPython完全重建了我的机器人,并在电机控制命令包装器中添加了一个ROS Twist消息。机器人动了!但是在添加我的实感 D435 相机时,经过几个小时的尝试,我无法使用 ROS2 流式传输点云数据。出于好奇,我切换到 ROS1 — 在这里它开箱即用!

        这一启示引起了下一段所概述的意见。

四、ROS1 与 ROS2

        ROS2是未来的ROS。根据社区网站和YouTube视频的信息,ROS2面向工业用途。机器人通信使用称为XRCE-DDS的标准中间件层。ROS2还抑制了系统自愈和可靠性的特点,例如无需ROS主节点即可运行。

        在研究混凝土机器人项目时,来自社区的 ROS2 机器人与 ROS1 机器人相比相形见绌。过去 3 年开发的大多数项目仍然使用 ROS1。我没有考虑这个事实,只是感到惊讶,因为 ROS2 自 2017 年以来就已经发布。

        在使用 ROS2 模拟机器人并让 ROS2 与我的机器人传感器(尤其是 RealsenseD435 相机)一起运行时,我遇到了几个障碍。这是个人回忆。

        首先,在搜索如何连接某个传感器时,很难找到或根本不存在与 ROS2 相关的信息、具体文章、文档或 YouTube 视频。

        其次,有关 Gazebo 控制器和 Gazebo 插件等特殊主题的文档不完整。如果你想构建一个 Gazebo 模拟,ROS1 有探索性和全面的手册,但对于 ROS2,你需要从不同的网站获取信息片段,组装它们,并在它工作之前使用大量的试验和错误。让我的机器人模拟与 Gazebo/RVIZ 2 中的所有传感器和主题一起工作是一段漫长的旅程。

        第三,当使用SBC组装机器人并将其连接到微控制器时,您会惊讶地发现没有通用库可以通过串行连接它们,如本博客文章所述。你要么需要使用非常特定的微控制器,并为它们编译一个定制的RTOS Linux发行版,这使得很难重用你的Arduino库。或者您需要具有网络功能的特殊板。

        第四,检查 ROS2 的硬件支持显示可用的选项较少,其他机器人爱好者在运行 ROS2 时遇到问题。在尝试让英特尔实感 D435 与 ROS2 配合使用时,我也有同样的经历。尽管我使用了最新的固件,从头开始编译了librealsense,编译了ros-realsense软件包,但它不起作用,甚至响应迅速且有用的社区问题板上的一个线程也没有找到答案。当我切换到 ROS1 时,相同的传感器可以正常工作。

        概括这些观察结果使我得出一个可悲的结论,即使用ROS2意味着找到更少的文档,对传感器的支持更少,并且SBC和微控制器的集成更加困难。

五、再次切换到 ROS1

        让gazebo模拟在 ROS2 中工作的经验主要是反复试验。让Realsense2相机在ROS2中工作并不成功。因此,从其他人那里阅读有关ROS2的类似错误和问题的信息是另一个影响。最后,在研究在我的机器人上使用ROS的下一个方面时,比如SLAM,自主运动,抓手 - 确实一次又一次地透露了ROS1的完整教程和书籍,我做出了决定:我的项目将继续使用ROS1。

塞巴斯蒂安

相关文章:

机器人项目:从 ROS2 切换到 ROS1 的原因

一、说明 机器人操作系统ROS是使用最广泛的机器人中间件平台。它在机器人社区中使用了10多年,无论是在业余爱好者领域还是在工业领域。ROS可用于各种微控制器和计算机,从Arduino到Raspberry Pi再到Linux工作站,它为电机控制器,视觉…...

Vault主题 - UiCore多用途Elementor WordPress主题

你可以使用Vault主题 – UiCore多用途Elementor WordPress主题构建什么? Vault主题拥有专业、像素级完美且干净的现代布局,几乎适合您需要的任何网站: 小型企业网站企业网站着陆页面权威博客销售和营销页面网上商店 自由职业者的最佳选择 …...

G0第26章:微服务概述与gRPCprotocol buffers

Go微服务与云原生 1、微服务架构介绍 单体架构(电商) SOA架构(电商) 微服务架构(电商) 优势 挑战 拆分 发展史 第一代:基于RPC的传统服务架构 第二代:Service Mesh(istio) 微服务架构分层 核心组件 Summar…...

三款远程控制软件对比,5大挑选指标:安全、稳定、易用、兼容、功能

陈老老老板🤴 🧙‍♂️本文专栏:生活(主要讲一下自己生活相关的内容)生活就像海洋,只有意志坚强的人,才能到达彼岸。 🧙‍♂️本文简述:三款远程控制软件对比,5大挑选指标&#xff1…...

Java中static的应用之单例模式

单例模式是一种创建对象的设计模式,它保证一个类只有一个实例,并提供一个全局访问点。由于单例模式只允许存在一个实例,因此它可以节省系统资源并提高程序的性能。在许多情况下,单例模式在应用程序中都是非常有用的,例…...

TypeError: Cannot read properties of undefined (reading ‘container‘)

问题环境: element项目 el-table的错误 项目是由 webpack项目迁移为 vite项目 问题描述: errorLog.js?t1692581753160:17 TypeError: Cannot read properties of undefined (reading container) at unbind (infinite-scroll.js:259:31) …...

Vue--BM记事本

效果如下&#xff1a; 用到了如下的技术&#xff1a; 1.列表渲染&#xff1a;v-for key的设置 2.删除功能&#xff1a;v-on调用参数 fliter过滤 覆盖修改原数组 3.添加功能&#xff1a;v-model绑定&#xff0c;unshift修改原数组添加 html文件如下&#xff1a; <!DOCTYPE …...

openpnp - 板子上最小物料封装尺寸的选择

文章目录 openpnp - 板子上最小物料封装尺寸的选择概述END openpnp - 板子上最小物料封装尺寸的选择 概述 现在设备调试完了, 用散料飞达载入物料试了一下. 0402以上贴的贴别准, 贴片流程也稳, 基本不需要手工干预. 0201可以贴, 但是由于底部相机元件视觉识别成功率不是很高…...

什么是非功能性需求,它们如何影响产品开发?

我们在选购新车时&#xff0c;会预设一些选购的标准&#xff0c;比如GPS导航必须能够保存目的地&#xff0c;或者必须要买黑色的车。我们可能下意识以为这些是功能性需求&#xff0c;但实际上这些特性都是与用户体验相关的非功能性需求。 一、什么是非功能性需求(NFR)? 非功…...

Oracle jdk8 exe->zip

一、背景 目前Oracle网站对应jdk8安装windows仅存在exe安装包&#xff0c;对于某些用户一台机器上对应jdk版本需动态切换&#xff0c;故需使用zip版本jdk&#xff0c;更加方便&#xff0c;本文介绍如何从jdk对应exe提取zip。 二、步骤 下载jdk8对应exe安装包&#xff1b;使用…...

Android 命令行如何运行 JAR 文件

​ 最近有位老哥问了一个问题&#xff0c;说如果将java的jar文件在Android中执行&#xff1f;这个其实很简单的一个问题&#xff0c;直接写个App放里面不就可以了么&#xff1f;但是人家说没有App&#xff0c;直接使用命令行去运行。说明这个需求的时候&#xff0c;把我给整懵了…...

5.4 webrtc的线程

那今天呢&#xff1f;我们来了解一下webrtc中的threed&#xff0c;首先我们看一下threed的类&#xff0c;它里边儿都含了哪些内容&#xff1f;由于threed的类非常大啊&#xff0c;我们将它分成两部分。 那第一部分呢&#xff0c;是我们看threed的类中都包含了哪些数据之后呢&a…...

vscode | linux | c++ intelliense 被弃用解决方案

每日一句&#xff0c;vscode用的爽是爽&#xff0c;主要是可配置太强了。如果也很会研究&#xff0c;可以直接去咸鱼接单了 废话少说&#xff0c;直接整。 用着用着说是c intelliense被弃用&#xff0c;很多辅助功能无法使用&#xff0c;像查看定义、查看引用、函数跳转、智能提…...

HPE服务器常见报错信息以及解决方案

General controller issues 常规控制器问题 Controllers are no longer redundant 控制器不再冗余 HPE Dynamic Smart Array B140i drives are not found when RAID mode is disabled 禁用 RAID 模式时找不到 HPE 动态智能阵列 B140i 驱动器 Data located on drives accessed i…...

尚硅谷宋红康MySQL笔记 3-9

我不会记录的特别详细 大体框架 基本的Select语句运算符排序与分页多表查询单行函数聚合函数子查询 第三章 基本的SELECT语句 SQL分类 这个分类有很多种&#xff0c;大致了解下即可 DDL&#xff08;Data Definition Languages、数据定义语言&#xff09;&#xff0c;定义了…...

Leetcode.2337 移动片段得到字符串

题目链接 Leetcode.2337 移动片段得到字符串 rating : 1693 题目描述 给你两个字符串 start 和 target &#xff0c;长度均为 n n n 。每个字符串 仅 由字符 L、R 和 _ 组成&#xff0c;其中&#xff1a; 字符 L 和 R 表示片段&#xff0c;其中片段 L 只有在其左侧直接存在一…...

【vue】更改角色权限后,实现页面不刷新更改其可展示的导航菜单

登入的角色本身属于领导级别&#xff08;集团权限&#xff09;&#xff0c;没有下级的不同权限&#xff1a; 切换不同身份&#xff08;公司&#xff09;&#xff0c;以获得相应部门的不同导航菜单及权限 这里实现&#xff1a;更改角色权限后&#xff0c;实现页面 不刷新 更改…...

【G-LAB】网络工程师常用排错命令详细版

网络工程师在日常配置中难免出现各种配置错误&#xff0c;比如接口地址配错、掩码位数配错、接口忘记no shutdown。除去这些基础错误&#xff0c;在配置各种路由选择协议时也会因为网络类型、邻居类型、区域和路由器层级等各种问题使邻居无法建立、路由无法传递进而导致网络不通…...

Linux 桌面版关闭GUI桌面环境

持久打开和关闭 通过CtrlAltF1-F6快捷键进入命令行界面 执行以下命令&#xff0c;持久关闭Ubuntu桌面版的GUI环境&#xff1a; sudo systemctl set-default multi-user.target执行以下命令&#xff0c;持久开启Ubuntu桌面版的GUI环境 通过CtrlAltF7快捷键进入GUI界面 sudo s…...

ChatGPT能代替搜索引擎吗?ChatGPT和搜索引擎有什么区别?

ChatGPT和搜索引擎是两种在信息获取和交流中常用的工具&#xff0c;ChatGPT是一种基于人工智能技术的聊天机器人&#xff0c;而搜索引擎是一种在互联网上搜索信息的工具。尽管它们都是依托互联网与信息获取和交流有关&#xff0c;部分功能重合&#xff0c;但在很多方面存在着明…...

PHP海外代购管理系统mysql数据库web结构apache计算机软件工程网页wamp

一、源码特点 PHP 海外代购管理系统是一套完善的web设计系统&#xff0c;对理解php编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 代码下载 https://download.csdn.net/download/qq_41221322/88229435 论文 https://…...

游戏反外挂方案解析

近年来&#xff0c;游戏市场高速发展&#xff0c;随之而来的还有图谋利益的游戏黑产。在利益吸引下&#xff0c;游戏黑产扩张迅猛&#xff0c;已发展成具有庞大规模的产业链&#xff0c;市面上游戏受其侵扰的案例屡见不鲜。 据《FairGuard游戏安全2022年度报告》数据统计&…...

基于郊狼算法优化的BP神经网络(预测应用) - 附代码

基于郊狼算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码 文章目录 基于郊狼算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码1.数据介绍2.郊狼优化BP神经网络2.1 BP神经网络参数设置2.2 郊狼算法应用 4.测试结果&#xff1a;5.Matlab代码 摘要…...

【腾讯云 TDSQL-C Serverless 产品测评】全面测评TDSQL-C Mysql Serverless

全面测评TDSQL-C Mysql Serverless 文章目录 全面测评TDSQL-C Mysql Serverless前言什么是TDSQL-C Mysql Serverless初始化 TDSQL-C Mysql Serverless新建数据库建立数据表开启外网访问 兼容性SQL文件 导入导出navicat 直接在线传输 构建测试环境准备Python测试脚本准备 Jmeter…...

Qt应用开发(基础篇)——纯文本编辑窗口 QPlainTextEdit

一、前言 QPlainTextEdit类继承于QAbstractScrollArea&#xff0c;QAbstractScrollArea继承于QFrame&#xff0c;是Qt用来显示和编辑纯文本的窗口。 滚屏区域基类https://blog.csdn.net/u014491932/article/details/132245486?spm1001.2014.3001.5501框架类QFramehttps://blo…...

数据结构-->栈

&#x1f495;休对故人思故国&#xff0c;且将新火试新茶&#xff0c;诗酒趁年华&#x1f495; 作者&#xff1a;Mylvzi 文章主要内容&#xff1a;详解链表OJ题 前言&#xff1a; 前面已经学习过顺序表&#xff0c;链表。他们都是线性表&#xff0c;今天要学习的栈也是一种线…...

强训第36天

C D C 193--1100 0001 194--1100 0010 196--1100 0100 198--1100 0110 能包括全部的且最小的为 1100 0xxx xxx为主机号&#xff0c;站三位 B MAC地址是绑定网卡的&#xff0c;全球唯一 D A C D IP网段 17为网络号 所以是 40.15.1aaa aaa(7位主机号).0 因为要划分2个子网 所以…...

PyTorch bug记录

1、RuntimeError: Input type (torch.FloatTensor) and weight type (torch.cuda.FloatTensor) should be the same 这个错误是因为模型的权重是在GPU上&#xff0c;但是输入数据在CPU上。在PyTorch中&#xff0c;Tensor的类型和所在的设备&#xff08;CPU或GPU&#xff09;需…...

js中的正则表达式(一)

目录 1.什么是正则表达式 2.正则表达式在JavaScript中的使用场景: 3.正则表达式的语法&#xff1a; 1.什么是正则表达式 正则表达式(Regular Expression&#xff09;是用于匹配字符串中字符组合的模式。在JavaScript中&#xff0c;正则表达式也是对象通常用来查找、替换那些符…...

免费开源使用的几款红黑网络流量工具,自动化的多功能网络侦查工具、超级关键词URL采集工具、Burpsuite被动扫描流量转发插件

免费开源使用的几款红黑网络流量工具&#xff0c;自动化的多功能网络侦查工具、超级关键词URL采集工具、Burpsuite被动扫描流量转发插件。 #################### 免责声明&#xff1a;工具本身并无好坏&#xff0c;希望大家以遵守《网络安全法》相关法律为前提来使用该工具&am…...

功能网站/推广公众号的9种方法

郑昀 20070710 分类&#xff1a;个性化阅读ZapTxt的提醒姗姗来迟&#xff0c;都已经设定了半个月了&#xff0c;才终于给我送过来一篇Alert。我在上一篇《个性化阅读的过去和未来【一】》中提到&#xff1a;“Zaptxt&#xff0c;也是同样的思路&#xff0c;搜索范围也是非常广…...

长春市快速建站网站/站长工具名称查网站

说到BYOD&#xff0c;可以说是这几年的一个热点了&#xff0c;要说在企业网WLAN市场什么最热&#xff0c;当属BYOD&#xff0c;君不见无线的老牌劲旅思科、aruba早都祭出了BYOD的大旗&#xff0c;而原本盘踞在运营商的华为也推出了BYOD解决方案&#xff0c;试图借此机会大举进入…...

信息课做动漫网站/seo分析师招聘

一、案例一&#xff1a;自定义Session扫描器1、案例说明当一个Web应用创建的Session很多时&#xff0c;为了避免Session占用太多的内存&#xff0c;我们可以选择手动将这些内存中的session销毁&#xff0c;那么此时也可以借助监听器技术来实现。对于拿到 每个session 对象, 判断…...

wordpress文字头像/百度站长平台app

最近在项目中开发中需要用到发送邮件功能&#xff0c;当后台定时任务处理完毕后通知调用者。Java Mail API使用比较麻烦&#xff0c;所以这里采用的是Apache Commons Email&#xff0c;官网地址&#xff1a;http://commons.apache.org/proper/commons-email/&#xff0c;Common…...

合肥做公司网站一般多少钱/网页设计代码大全

中断由外部设备产生&#xff0c;异常由CPU内部产生&#xff08;异常包括错误Fault, 陷阱Trap即故意出错&#xff0c;和终止Abort&#xff09;。中断要找到中断服务程序所以需要IDT这个大数组来存放中断门&#xff08;中断门就是一种段描述符&#xff0c;用于找到中断程序入口地…...

学ui可以做网站么/百度收录网址

题目: 定义一个区间的值为其众数出现的次数。 现给出n个数&#xff0c;求将所有区间的值排序后&#xff0c;第K大的值为多少。 题解: 答案明显单调,我们考虑二分答案. 转化为判定问题后我们需要观察到一个性质: 如果一个区间的价值已经 > mid了,那么这个无论左右端点向外延伸…...