【ROS2】MOMO的鱼香ROS2(二)ROS2入门篇——ROS2初体验

ROS2初体验

  • 引言
  • 专业术语认识
  • 1 认识ROS2
    • 1.1 ROS2版本对照表
    • 1.2 ROS与ROS2对比
    • 1.3 ROS2架构
      • 1.3.1 DDS实现层
      • 1.3.2 ROS中间件接口(RMW)
      • 1.3.3 ROS2客户端库 RCL
  • 2 安装ROS2
    • 2.1 ROS安装(一键式)
    • 2.2 手动安装ROS2
      • 2.2.1 添加ROS软件源
      • 2.2.2 添加公钥
      • 2.2.3 更新
      • 2.2.4 安装ros2
      • 2.2.5 安装依赖
      • 2.2.6 配置环境变量
      • 2.2.7 卸载
      • 2.2.8 ROS2安装路径
  • 3 ROS2测试
    • 3.1 listener和talker
    • 3.2 小海龟
    • 3.3 可视化

引言

笔者跟着鱼香ROS的ROS2学习之旅
学习参考:
【ROS2机器人入门到实战】
笔者的学习目录

  1. MOMO的鱼香ROS2(一)ROS2入门篇——从Ubuntu操作系统开启

专业术语认识

  1. DDS:Data Distribution Service (数据分发服务)。是由对象管理组 (OMG) 于 2003 年发布并于 2007 年修订的开分布式系统标准。
  2. GUI(Graphical User Interface)图形用户界面
  3. CLI(Command-Line Interface)命令行界面
  4. API( Application Programming Interface)应用程序编程接口
  5. RMW (ROS Middleware Interface)中间件接口

1 认识ROS2

ROS2是在ROS的基础上设计开发的第二代机器人操作系统,可以帮助我们简化机器人开发任务,加速机器人落地的 软件库和工具集 。

1.1 ROS2版本对照表

在这里插入图片描述
笔者使用的主要是针对ubuntu18.04 的eloquent和20.04的foxy
ROS2官方更新计划:http://docs.ros.org/en/humble/Releases.html

1.2 ROS与ROS2对比

ROS的不足:
ROS的设计目标是简化机器人的开发,设计了一整套通信机制(话题、服务、参数、动作)。

  1. 强依赖Ros Master(主节点)
  2. 通信基于TCP实现,实时性差、系统开销大
  3. 对Python3支持不友好,需要重新编译
  4. 消息机制不兼容
  5. 没有加密机制、安全性不高

ROS2的改进:

在这里插入图片描述

  1. 去中心化master 节点
  2. 支持多操作系统:linux、windows、mac,甚至是嵌入式RTOS
  3. 采用DDS通信,增强了ROS2的实时性、可靠性和连续性
  4. 支持pyhton3
  5. 编译系统的改进(catkin到ament)
  6. C++标准更新到c++11
  7. 可以使用相同 API 的进程间和进程内通信

ROS2自身只做个进程间的通信,节点和节点之间的通信采用的是DDS服务进行

1.3 ROS2架构

在这里插入图片描述

1.3.1 DDS实现层

Data Distribution Service (数据分发服务)。是由对象管理组 (OMG) 于 2003 年发布并于 2007 年修订的开分布式系统标准。
通过类似于ROS中的话题发布和订阅形式来进行通信,同时提供了丰富的服务质量管理来保证可靠性、持久性、传输设置等。
参考链接:ROS2中间件DDS架构

1.3.2 ROS中间件接口(RMW)

这一层将DDS实现层进一步的封装,使得DDS更容易使用。原因在于DDS需要大量的设置和配置(分区,主题名称,发现模式,消息创建,…),这些设置都是在ROS2的抽象层中完成的。

1.3.3 ROS2客户端库 RCL

RCL(ROS Client Library)ROS客户端库,其实就是ROS的一种API,提供了对ROS话题、服务、参数、Action等接口。

GUI(Graphical UserInterface)就是平常我们说的图形用户界面,大家用的Windows是就是可视化的,我们可以通过鼠标点击按钮等图形化交互完成任务。
CLI(Command-Line Interface)就是命令行界面了,我们所用的终端,黑框框就是命令行界面,没有图形化。

API( Application Programming Interface)应用程序编程接口。API在不同语言中的表现形式不同,在C和C++表现为头文件,在Python中表现为Python文件。

rclc可以实现多个语言的ROS2的库在这里插入图片描述

2 安装ROS2

根据电脑的架构选择合适的ROS2版本
ubuntu18.04 的系统架构为[amd64:bionic]

2.1 ROS安装(一键式)

参考链接:动手安装ROS2

执行下面的命令,然后按照脚本指示文件操作即可

wget http://fishros.com/install -O fishros && . fishros

在这里插入图片描述
选择
[1]:一键安装(推荐):ROS(支持ROS/ROS2,树莓派Jetson)
[1]:更换系统源再继续安装
[2]:更换系统源并清理第三方源
[5]:eloquent(ROS2)
[1]:eloquent(ROS2)桌面版

在这里插入图片描述
安装成功在终端输入

ros2

在这里插入图片描述

2.2 手动安装ROS2

直接在base环境下安装,Ctrl+Alt+T打开终端

2.2.1 添加ROS软件源

echo "deb [arch=$(dpkg --print-architecture)] https://repo.huaweicloud.com/ros2/ubuntu/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

2.2.2 添加公钥

sudo apt install curl gnupg2 -y
curl -s https://gitee.com/ohhuo/rosdistro/raw/master/ros.asc | sudo apt-key add -

2.2.3 更新

# 确保包索引是最新的
sudo apt update

2.2.4 安装ros2

sudo apt install ros-humble-desktop

2.2.5 安装依赖

sudo apt install python3-argcomplete -y

2.2.6 配置环境变量

echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc

2.2.7 卸载

# sudo apt remove ros-[版本]-* 
sudo apt remove ros-eloquent-*
sudo apt autoremove

2.2.8 ROS2安装路径

cd /opt/ros/eloquent/
ls

3 ROS2测试

3.1 listener和talker

启动倾听者

ros2 run demo_nodes_py listener

启动说话者

ros2 run demo_nodes_cpp talker

在这里插入图片描述

3.2 小海龟

# 终端1
ros2 run turtlesim turtlesim_node
# 终端2
ros2 run turtlesim turtle_teleop_key

在这里插入图片描述

3.3 可视化

rqt

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

4.28 构建onnx结构模型-Unfold

前言 构建onnx方式通常有两种: 1、通过代码转换成onnx结构,比如pytorch —> onnx 2、通过onnx 自定义结点,图,生成onnx结构 本文主要是简单学习和使用两种不同onnx结构, 下面以 Unfold 结点进行分析 方式 方法…

鸿蒙(OpenHarmony)系统之智能语音部件(1)

本文重点参考: OpenHarmony/ai_intelligent_voice_framework 一、总体概述 1. 功能简介及架构 智能语音组件包括智能语音服务框架和智能语音驱动,主要实现了语音注册及语音唤醒相关功能。 智能语音组件架构图如下图所示: (1&a…

【ONE·MySQL || 数据类型 表的约束】

总言 主要内容:介绍MySQL中的常见数据类型(数值类型、文本二进制类型、时间日期、字符串类型),以及对表的约束(非空约束、默认约束、列描述、零填充约束、自增长约束、主键约束、唯一键约束、外键约束)。  …

详解维吉尼亚密码(附四种攻击策略)

目录 一. 介绍 二. 破解维吉尼亚密码 2.1 频率统计 2.2 提高型频率统计法 2.3 Kasiski攻击法 2.4 重合指数攻击法(index of coincidence method) 三. 小结 一. 介绍 我们知道英语字母的出现频率是有规律的,比如像下表: 掌…

2023-12-23 LeetCode每日一题(移除石子使总数最小)

2023-12-23每日一题 一、题目编号 1962. 移除石子使总数最小二、题目链接 点击跳转到题目位置 三、题目描述 给你一个整数数组 piles ,数组 下标从 0 开始 ,其中 piles[i] 表示第 i 堆石子中的石子数量。另给你一个整数 k ,请你执行下述…

2024任务驱动Java程序设计讲课提纲

文章目录 为何采用任务驱动?任务驱动Java程序设计课程概述项目一:踏上Java开发之旅任务1:安装配置JDK并开发第一个Java程序1、安装JDK2、配置JDK环境变量3、开发第一个Java程序 任务2:搭建Java集成开发环境IntelliJ IDEA1、安装In…

研究:同样的C++模板在多个cpp里出现,编译器是否要重复生成?

2023年就要过去,马上要跨如2024年。祝大家在新的一年,有个好收成。 一直以来不是很确定: 同样的的模板,在各个cpp分别出现,编译器要实现几份? 研究一下。 用命令行的编译方法,参考&#xff1a…

【xdma】 pcie.bar设置

FPGA优质开源项目– PCIE通信 xdma 两者保持一致 FPGA开源项目 – PCIE I/O控制卡 xdma PCIe的XDMA应用 读写部分分为两种,一种是数据的读写,另一种是配置数据的读写,在数据读写部分,DMA通过MIG控制DDR完成数据读写。配置数据…

Ubuntu 22.04 安装ftp实现与windows文件互传

Ubuntu 22.04 安装ftp实现与windows文件互传 1、配置安装 安装: sudo apt install vsftpd -y使能开机自启: sudo systemctl enable vsftpd 启动: sudo systemctl start vsftpd创建ftp工作目录: sudo mkdir -p /home/ftp/uftp…

Elasticsearch-8.11.1 (2+1)HA(高可用)集群部署

目录 一、环境描述 二、安装 ES 2.1 下载Elasticsearch 2.2 解压Elasticsearch 2.3 创建es服务账号/密码 2.3 修改服务器配置 2.4 配置节点 2.4.1 配置说明 2.4.2 配置高可用集群 2.4.2.1 maser节点服务配置 2.4.2.2 node1 节点服务配置 2.4.2.3 node2 节点服务配置…

ARCGIS PRO SDK GeometryEngine处理独立几何图形

1、面积类:pol为Polygon 1).Area:获取几何图形的面积。这是使用二维笛卡尔数学来计算面积的平面测量 double d GeometryEngine.Instance.Area(pol) 2).GeodesicArea:获取几何图形的椭球面积 …

SLAM学习入门--机器学习

文章目录 机器学习逻辑回归(LR)基本原理为什么 LR 要使用 sigmoid 函数?LR 可以用核函数么?为什么 LR 用交叉熵损失而不是平方损失?LR 能否解决非线性分类问题?LR为什么要离散特征?逻辑回归是处…

【JavaScript】垃圾回收与内存泄漏

✨ 专栏介绍 在现代Web开发中,JavaScript已经成为了不可或缺的一部分。它不仅可以为网页增加交互性和动态性,还可以在后端开发中使用Node.js构建高效的服务器端应用程序。作为一种灵活且易学的脚本语言,JavaScript具有广泛的应用场景&#x…

SPI机制原理+使用

一、概述 SPI全称(Service Provider Interface),是JDK内置的一种服务提供发现机制;SPI机制提供了组件发现和注册方式,可以为应用程序提供灵活的插件机制, 主要原理:接口 反射 配置文件。 二、…

软件测试/测试开发丨Python常用数据结构学习笔记

Python常用数据结构 list 列表 列表定义 列表是有序的可变元素的集合,使用中括号[]包围,元素之间用逗号分隔列表是动态的,可以随时扩展和收缩列表是异构的,可以同时存放不同类型的对象列表中允许出现重复元素 列表使用&#x…

python练习2【题解///考点列出///错题改正】

一、单选题 【文件】 *1.【单选题】 ——文件:读取方法 下列哪个选项可以从文件中读取任意字节的内容?(C )A A.read() B.readline() C.readlines() D.以上全部 A\B\C三种方法都是可以读取文件中任意的字节内容的&#xff0…

消息队列基础知识

学一点,整一点,基本都是综合别人的,弄成我能理解的内容 https://blog.csdn.net/BenJamin_Blue/article/details/125946812 https://blog.csdn.net/qq_46119575/article/details/129794304 📌导航小助手📌 生产者-消费者…

JS作用域:全局作用域,函数作用域,块级作用域

JS作用域:全局作用域,函数作用域,块级作用域 背景作用域全局作用域函数作用域块级作用域通过调用栈分析块级作用域开发者工具查看作用域选项卡示例 背景 由于 JavaScript 存在变量提升这种特性,从而导致很多与直觉不符的代码&…

详解数组的轮转

𝙉𝙞𝙘𝙚!!👏🏻‧✧̣̥̇‧✦👏🏻‧✧̣̥̇‧✦ 👏🏻‧✧̣̥̇:Solitary-walk ⸝⋆ ━━━┓ - 个性标签 - :来于“云”的“羽球人”。…

Git 分布式版本控制系统(序章1)

第一章 Git 分布式版本控制系统 为什么学Git? 某些企业面试需要掌握Git,同时,也方便管理自己的Qt项目。 一、Git 客户端下载(Windows) 下载地址 https://gitee.com/all-about-git#git-%E5%A4%A7%E5%85%A8 二、Git 的特点 分支…