ROS2基础01

首先启动一个终端,

启动倾听者:ros2 run demo_nodes_py listener

启动一个新的终端

启动说话者:ros2 run demo_nodes_cpp talker

首先启动一个终端 

ros2 run turtlesim turtlesim_node //启动海龟模拟器

启动一个新的终端

ros2 run turtlesim turtle_teleop_key  //启动海龟遥控器

 

RQT可视化(rqt)指令

 

架构图

 操作系统层

ROS2本身就是基于Linux windows或者macOS系统建立的,驱动计算机、底层硬件、底层网络通信等实现都是交由操作系统来实现的。

DDS实现层

DDS,全称 Data Distribution Service (数据分发服务)。是由对象管理组 (OMG) 于 2003 年发布并于 2007 年修订的开分布式系统标准

通过类似于ROS中的话题发布和订阅形式来进行通信 ,同时提供了丰富的服务质量管理来保证可靠性、持久性、运输设置等。

DDS实现层其实就是对不同常见的DDS接口进行再次的封装,让其保持统一性,为DDS抽象层提供统一的API。(API应用程序编程接口,当你写了一个库,里面有很多函数,如果别人要用这个库,但是并不知道每个函数内部是怎么实现的。使用的人需要看你的文档或者注释才知道这个函数的入口参数和返回值或者这个函数是做什么的。对于使用者来说,你的这些函数就是APl)

API在不同语言的表现形式不同,才C和C++表现为头文件,在python中表现为python文件

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

ROS2客户端库RCL

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

ROS2客户端库

ROS的客户端库就是上面所说的RCL,不同语言对应着不同RCL,但基本功能都是相同的。

比如。python语言提供了rclpy来操作ROS2的节点话题服务等,而C++则使用rclcpp提供ROS2的节点话题和服务等。

所以后面我们使用python和c++来编写ROS2节点实现通讯等功能时,我们就会引入rclpy和rclcpp的库

这张图是ROS2,API的实现层级,最新下面的是第三方DDS,rmw(中间件接口)层是对各家DDS的抽象层,基于实现了rclc,有了rclc,我们就可以实现各个语言的库,大家都知道c语言是各个语言鼻祖所以基于ROS2官方实现了rclpy和rclcpp,

所以基于rclpy和rclcpp我们就可以实现上层的应用。

 

上面这张图是ROS2,API的实现层级,最新下面的是第三方的DDS,rmw(中间件接口)层是对各家DDS的抽象层,基于rmw实现了rclc,有了rclc,我们就可以实现各个语言的库,大家都知道C语言是各个语言的鼻祖(汇编除外)所以基于rclc,ROS2官方实现了rclpy和rclcpp.基于rclpy和rclcpp就可以实现上层的应用。

ROS2编程基础课程文档 ROS 2(机器人操作系统2)是用于机器人应用的开源开发套件。ROS 2之目的是为各行各业的开发人员提供标准的软件平台,从研究和原型设计再到部署和生产。 ROS 2建立在ROS 1的成功基础之上,ROS 1目前已在世界各地的无数机器人应用中得到应用。 特色 缩短上市时间 ROS 2提供了开发应用程序所需的机器人工具,库和功能,可以将时间花在对业务非常重要的工作上。因为它 是开源的,所以可以灵活地决定在何处以及如何使用ROS 2,以及根据实际的需求自由定制,使用ROS 2 可以大幅度提升产品和算法研发速度! 专为生产而设计 凭借在建立ROS 1作为机器人研发的事实上的全球标准方面的十年经验,ROS 2从一开始就被建立在工业级 基础上并可用于生产,包括高可靠性和安全关键系统。 ROS 2的设计选择、开发实践和项目管理基于行业利 益相关者的要求。 多平台支持 ROS 2在Linux,Windows和macOS上得到支持和测试,允许无缝开发和部署机器人自动化,后端管理和 用户界面。分层支持模型允许端口到新平台,例如实时和嵌入式操作系统,以便在获得兴趣和投资时引入和推 广。 丰富的应用领域 与之前的ROS 1一样,ROS 2可用于各种机器人应用,从室内到室外、从家庭到汽车、水下到太空、从消费 到工业。 没有供应商锁定 ROS 2建立在一个抽象层上,使机器人库和应用程序与通信技术隔离开来。抽象底层是通信代码的多种实现, 包括开源和专有解决方案。在抽象顶层,核心库和用户应用程序是可移植的。 建立在开放标准之上 ROS 2中的默认通信方法使用IDL、DDS和DDS-I RTPS等行业标准,这些标准已广泛应用于从工厂到航空 航天的各种工业应用中。 开源许可证 ROS 2代码在Apache 2.0许可下获得许可,在3条款(或“新”)BSD许可下使用移植的ROS 1代码。这两个 许可证允许允许使用软件,而不会影响用户的知识产权。 全球社区 超过10年的ROS项目通过发展一个由数十万开发人员和用户组成的全球社区,为机器人技术创建了一个庞大 的生态系统,他们为这些软件做出贡献并进行了改进。 ROS 2由该社区开发并为该社区开发,他们将成为未 来的管理者。 行业支持 正如ROS 2技术指导委员会成员所证明的那样,对ROS 2的行业支持很强。除了开发顶级产品外,来自世界 各地的大大小小公司都在投入资源为ROS 2做出开源贡献。 与ROS1的互操作性 ROS 2包括到ROS 1的桥接器,处理两个系统之间的双向通信。如果有一个现有的ROS 1应用程序, 可 以通过桥接器开始尝试使用ROS 2,并根据要求和可用资源逐步移植应用程序。
在Ubuntu中,ROS机器人操作系统)是一个常用的开源框架,用于构建机器人软件和控制系统。以下是一些Ubuntu中ROS相关的基础知识: 1. ROS版本:在Ubuntu 18.04中,对应的ROS版本是melodic。确保你安装的ROS版本与你的Ubuntu版本相匹配,以避免出现错误。\[2\] 2. 安装ROS:在Ubuntu中安装ROS可以按照以下步骤进行: - 设置系统软件源和ROS源 - 添加ROS的keys - 安装ROS - 初始化ROS - 配置ROS系统环境 - 进行ROS测试\[1\] 3. 基本概念:ROS中有一些基本概念需要了解,例如: - roscore:ROS的核心功能,用于管理ROS节点之间的通信。 - rosnodelist:用于查看当前运行的ROS节点列表。 - rostopic:用于查看和发布ROS主题(topic)的信息。 - rosrun:用于运行ROS节点。 - rqt_graph:用于可视化ROS节点和主题之间的关系图。 - rosbag:用于记录和回放ROS主题的数据。 - 等等\[1\] 这些是Ubuntu中ROS相关的一些基础知识,希望对你有所帮助。如果你有更具体的问题,请告诉我。 #### 引用[.reference_title] - *1* *2* [Ubuntu18.04 ROS](https://blog.csdn.net/weixin_43563233/article/details/109746851)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [ROS学习笔记01、安装Ubuntu18.04以及ROS环境](https://blog.csdn.net/cl939974883/article/details/126306805)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值