【CANN训练营】ROS2系统及使用介绍

news2024/12/24 8:26:30

ROS2系统及使用介绍

ROS2介绍及特点介绍

ROS2简介

要说ROS2,那就不得不提起ROS,ROS就是机器人操作系统英文全称(Robot Operating System),但ROS本身并不是一个操作系统,而是可以安装在现在已有的操作系统上(Linux、Windows、Mac)上的软件和工具集。
ROS出生于2007年,ROS的出现解决了机器人各个组件之间的通信问题,同时基于ROS的完善的通信机制,越来越多的优秀的机器人算法集成到了ROS中来
现在的ROS功能已经变得非常的丰富和强大。但随着对ROS功能上要求越来越多,一些原始的架构和设计不能够满足目前的使用需求,这也是ROS2出现的原因
ROS2继承了ROS原有的优秀之处,同时又带来了很多新的功能ROS2相对于ROS更加的强大。

ROS发展历史

image.png

ROS特点与优势

  1. 免费且开源
    BSD许可,可修改,可复用,良好生态环境
  2. 工具包丰富
    3D可视化工具rviz、物理仿真环境 gazebo数据记录工具rosbag、QT工具箱rqt*
  3. 精简与集成
    每个功能节点单独编译、集成众多开源项目、同一接口,代码复用率高
  4. 多语言支持
    ROS2支持许多种不同的语言,例如C++、python、Java和Go等待,也包含其他语言的多种接口实现。
  5. 点对点
    点对点通信

ROS与ROS2的不同

image.png

  1. OS层
    从原来的只支持linux平台变成了支持windows、mac甚至是嵌入式RTOS平台
  2. 中间层
    去中心化master,ROS和ROS2中间件不同之处在于ROS2取消了master节点。去中心化后,各个节点之间可以通过DDS的节点相互发现,各个节点都是平等的,且可以1对1、1对n、n对n进行互相通信。不造通信的轮子通信直接更换为DDS进行实现。使得RO52的实时性、可靠性和连续性上都有了增强。
  3. ROS2新概念例举
  • 可用Python编写的Launch文件
  • 多机器人协同通信支持
  • 支持安全加密通信
  • 同一个进程支持多个节点
  • 支持Qos服务质量
  • 支持节点生命周期管理
  • 高效的进程间通信

ROS2的安装

手动安装
添加源

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

添加源对应的秘钥

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

安装ROS2

sudo apt install ros-humble-desktop

安装额外依赖

sudo apt install python3-argcomplete -y

配置环境变量

source /opt/ros/humble/setup.bash

自动安装
打开终端,输入下面的指令

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

输入密码,在选项界面选择1-一键安装ROS,接着根据你的情况选择是否更换系统源,接着等待一会就会让你选择要安装的ROS2版本了。这里选择humble版本的ROS2即可。
接着会问你安装桌面版还是基础版,我们选择桌面版,包含可视化工具,如果是在树莓派上装可以使用基础版。
安装完成后输入ros2如果看到如手动安装的界面则安装成功。

ROS2概念通识

ROS2架构

架构图
image.png

  1. 操作系统层
    操作系统层比较好理解,ROS2本身就是基于Linux、Windows或者macos系统建立的,驱动计算机硬件、底层网络通信等实现都是交由操作系统来实现的
  2. DDS实现层
    要想理解这一层就需要你了解DDS是什么?以及为什么ROS2框架中会有多个DDS的实现DDS,全称 Data Distribution Service(数据分发服务)。是由对象管理组(OMG)于2003发布并于2007年修订的开分布式系统标准。通过类似于ROS中的话题发布和订阅形式来进行通信,同时提供了丰富的服务质量管理来保证可靠性、持久性、传输设置等。DDS实现层其实就是对不同常见的DDS接口进行再次的封装让其保持统一性,为DDS抽象层提供统一的API
  3. 抽象DDS层-RMW
    这一层将DDS实现层进一步的封装,使得DDS更容易使用。原因在于DDS需要大量的设置和配置(分区,主题名称,发现模式,消息创建…),这些设置都是在ROS2的抽象层中完成的。
  4. ROS2客户端库RCL
    RCL (ROS Client Library) ROS客户端库,其实就是ROS的一种API提供了对ROS话题、服务、参数、Action等接口
  5. 应用层
    应用层就是我们写代码以及ROS2开发的各种常用的机器人相关开发工具所在的层了。后面我们写的所有代码其实都是属于这层。

ROS2客户端库RCL

RCL(ROS Client Library) ROS客户端库,其实就是RS的一种API,提供了对ROS话题、服务、参数、Action等接口。
GUI和CLI
GUI(Graphical User nterface) 就是平常我们说的图形用户界面,大家用的Windows是就是可视化的,我们可以通过鼠标点击按钮等图形化交互完成任务。CLI(Command-Line nterface)就是命令行界面了,我们所用的终端,黑框框就是命令行界面,没有图形化。很久之前电脑还是没有图形化界面的,所有的交互都是通过命令行实现,就学习机器人而言,命令行操作相对于图形化优势更加明显。
API是什么
API (Application Programming nterface) 应用程序编程接口。比如你写了一个库,里面有很多函数,如果别人要使用你这个库,但是并不知道每个函数内部是怎么实现的。使用的人需要看你的文档或者注释才知道这个函数的入口参数和返回值或者这个函数是用来做什么的。对于使用者来说来说,你的这些函数就是API.
API在不同语言中的表现形式不同,在和C++表现为头文件,在Pthon中表现为Pvthon文件

ROS客户端库

image.png
这张图是ROS2,AP的实现层级,最新下面的是第三方的DDS,rmw (中间件接口)层是对各家DDS的抽象层,基于rmw实现了rclc,有了rcic,我们就可以实现各个语言的库,所以基于rclc,ROS2官方实现了rclpy和rclcpp等

image.png

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

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

相关文章

自动化测试的4大注意事项

自动化测试能够提高测试效率、覆盖率,降低测试成本和工作量,是软件开发中不可或缺的一部分。但前提是要确保自动化测试的有效性和可靠性,否则无效或错误的自动化测试,往往会对项目造成负面影响,如维护成本高、假阳性和…

面试必会-JAVA基础篇-01

文章目录 1. Final 有什么用?2. 什么是重载(Overload)和重写(Override) ?3. 重载的方法能否根据返回类型进行区分?4. 和 equals 的区别是什么5. 什么是反射机制?6. 反射机制优缺点7. 在你进行…

揭秘MySQL索引世界:概念、分类、应用场景一网打尽

一、索引概念 MySQL索引是一种用于提高数据库查询性能的数据结构。它允许数据库系统更有效地检索数据行,减少了在大型数据集中搜索特定数据的时间。索引的作用类似于书籍的目录,通过提供关键字与实际数据位置之间的映射,加速对数据库表中数据…

vue.js el-table 动态单元格列合并

一、业务需求: 一个展示列表,表格中有一部分列是根据后端接口动态展示,对于不同类型的数据展示效果不一样。如果接口返回数据是’类型1‘的,则正常展示,如果是’类型2‘的数据,则合并当前数据的动态表格。…

中国信通院公布2023下半年“可信数据库”测试结果

什么是可信数据库?定义具有强制和自主访问控制、审计、数据完整性、身份识别和鉴别、主客体分离等功能的数据库系统。是经过中国信通院评测的数据库产品及周边工具、数据库服务商和应用侧为评价目标的权威评测体系。 该体系包括基础能力、安全、性能、稳定性、服务商…

外包干了4年,技术退步太明显了。。。。。

先说一下自己的情况,本科生生,18年通过校招进入武汉某软件公司,干了接近4年的功能测试,今年国庆,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测…

基于HTML、CSS、JavaScript的网页设计

一、网页界面效果&#xff1a; 二、HTML代码&#xff1a; <!DOCTYPE html> <!-- 声明文档类型--> <html lang"en"> …

go自定义端口监听停用-------解决端口被占用的问题

代码 package mainimport ("fmt""log""net""os/exec""strconv""strings" )func getSelect(beign int, end int) int {var num intfor {_, err : fmt.Scan(&num)if err ! nil {fmt.Println("输入错误&am…

BUUCTF 小易的U盘 1

BUUCTF:https://buuoj.cn/challenges 题目描述&#xff1a; 小易的U盘中了一个奇怪的病毒&#xff0c;电脑中莫名其妙会多出来东西。小易重装了系统&#xff0c;把U盘送到了攻防实验室&#xff0c;希望借各位的知识分析出里面有啥。请大家加油噢&#xff0c;不过他特别关照&a…

Unity加载配置文件【解析Json】

Json 文件 Json文件的存储&#xff1a; 存储在StreamingAssets目录下的&#xff1a;//这里用了游戏配置表常用的Json存储格式-对象数组 {"data":[{"id": 1001,"name": "ScreenFront_1",},{"id": 1002,"name": &…

企业计算机服务器中了Mallox勒索病毒如何解密,Mallox勒索病毒数据恢复

随着计算机技术的不断应用与发展&#xff0c;网络为企业的生产运营提供了极大帮助&#xff0c;越来越多的企业开始利用网络办公&#xff0c;因此&#xff0c;随之而来的网络安全威胁也在不断增加。近期&#xff0c;云天数据恢复中心陆续接到很多企业的求助&#xff0c;企业的计…

Nature Food:这么吃,可延长十年寿命

人类进入20世纪以来&#xff0c;科技水平和医疗水平的进步&#xff0c;尤其是抗生素和疫苗的使用&#xff0c;粮食产量的提高&#xff0c;让人类的预期寿命得到了大幅提升&#xff0c;像日本等发达国家人均寿命已突破80岁。 我们知道&#xff0c;饮食是健康的基础&#xff0c;在…

【有ISSN、ISBN号!往届均已完成EI检索】第三届电子信息工程、大数据与计算机技术国际学术会议(EIBDCT 2024)

第三届电子信息工程、大数据与计算机技术国际学术会议&#xff08;EIBDCT 2024&#xff09; 2024 3rd International Conference on Electronic Information Engineering, Big Data and Computer Technology 第三届电子信息工程、大数据与计算机技术国际学术会议&#xff08;…

基于yolov8-道路裂缝检测

1 介绍 本文主要是搜集数据&#xff0c;从网上kaggle等网站找了2000多张图片&#xff0c;然后使用yolov8模型进行训练&#xff0c;最后只展示训练过程中的图片&#xff0c;如果有需要&#xff0c;可以联系&#xff1a;https://docs.qq.com/doc/DWEtRempVZ1NSZHdQ。

【已解决】xxljob连接报错HTTP 302(HTTP 401账号或密码错误)

目录 问题现象&#xff1a; 问题分析&#xff1a; 1、密码中的特殊字符。 2、密码长度问题。 解决方法&#xff1a; 拓展&#xff1a; 问题现象&#xff1a; 今天在生产环境使用xxljob任务调度来创建并执行任务时&#xff0c;出现了程序报错&#xff1a; 通过查询xxljob日志…

freeRTOS创建任务

一.动态创建任务 1.函数xTaskCreate() BaseType_t xTaskCreate( TaskFunction_t pxTaskCode, // 函数指针, 任务函数const char * const pcName, // 任务的名字const configSTACK_DEPTH_TYPE usStackDepth, // 栈大小,单位为word,10表示40字节void * const pvParameters, // …

mysql数据导入时数据太大(2006 - MySQL server has gone away)——笔记

打开mysql的安装路径&#xff0c;找到my.ini文件 my.ini打开后修改max_allowed_packet的值变成32或者更大 max_allowed_packet32M修改之后重启mysql

蓝桥杯真题:四平方和

import java.io.*;/*先找后两个数for(int i 0; 2 * i * i < n;i)for(int j i; i * i j * j < n;j ) 再找前两个数 for(int i 0;4 * i * i < n; i )for(int j i;2 * (j * j i * i) < n;j )//这样就可以让后两个数尽量大,前两个数尽量小 这样就可以确定后…

ToDesk优惠码来了,需要的不容错过

最近发现Todesk也有活动了&#xff0c;很多小伙伴不知道&#xff0c;除了中秋国庆双节&#xff0c;ToDesk另有专享优惠码&#xff0c;输入优惠码最高立减25元&#xff0c;即使是活动日也能折上折&#xff0c;不影响此优惠码的折扣力度&#xff01; Todesk作为国内优良的远程控制…

广告公司选择企业邮箱的策略与技巧

对于广告公司而言&#xff0c;选择一款适合的企业邮箱不仅能提升工作效率&#xff0c;更能维护并强化公司的品牌形象。以下是在选择企业邮箱时需关注的关键因素和注意事项。 1、邮件服务商的安全性。 邮件服务商应具备严密的安全防护措施&#xff0c;包括反垃圾邮件、防病毒、防…