机器人操作系统ROS/ROS2(1)

news2025/1/4 19:49:05

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、ROS和ROS2是什么?
  • 二、ROS2安装步骤
    • 1.Ubuntu虚拟机安装
    • 2.ROS2系统安装
    • 3.验证ROS2安装成功
    • 4.小海龟仿真示例
  • 总结


前言

提示:这里可以添加本文要记录的大概内容:

前天突然发现还有个机器人操作系统,故而引起自己的兴趣,研究下这是什么玩意。


提示:以下是本篇文章正文内容,下面案例可供参考

一、ROS和ROS2是什么?

ROS2的前身是ROS,ROS即机器人操作系统(Robot Operating System),ROS为了“提高机器人软件复用率”的目标,时至今日,ROS已经广泛用于各种机器人的开发,无论是机械臂、移动机器人、水下机器人,还是人形机器人、复合机器人,统统都可以看到ROS的身影,ROS已经成为机器人领域的普遍标准。但是由于ROS自身的缺陷,如果在工业场景应用(例如无人驾驶)还需要做优化和定制,
ROS无法真正进入产业界,也自然无法产品化。为了解决这一问题,社区提出了ROS 2。使得ROS具备产品化的特性,包括实时性、适应于全平台、适用于性能低的硬件(MCU+RTOS)、分布式、数据加密和现代编程语言的支持。
在这里插入图片描述
ROS2
1、支持多机器人系统
2、铲除原型和产品之间的鸿沟
3、支持微控制器
可以运行在X86和ARM上,还可以支持MCU等嵌入式微控制器,比如常见的ARM-M4、M7内核
4、支持实时控制
5、支持跨平台

二、ROS2安装步骤

1.Ubuntu虚拟机安装

代码如下(示例):

1、下载系统镜像
下载链接:
https://ubuntu.com/download/desktop
2. 在虚拟机中创建ubuntu
不能相互复制与粘贴
执行以下命令
sudo apt-get autoremove open-vm-tools
sudo apt-get install open-vm-tools
sudo apt-get install open-vm-tools-desktop

在这里插入图片描述

2.ROS2系统安装

代码如下(示例):

按Ctrl+Alt+T就会打开终端

# 语言符号环境
 
sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8
 
# 数据源

sudo apt update && sudo apt install curl gnupg lsb-release
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key  -o /usr/share/keyrings/ros-archive-keyring.gpg

Error:Failed to connect to raw.githubusercontent.com port 443 after 15 ms: Connection refused
1、打开https://www.ipaddress.com/
2、输入raw.githubusercontent.com
3185.199.108.133
4、sudo gedit /etc/hosts
   185.199.108.133  raw.githubusercontent.com
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
#安装ROS2
sudo apt update
sudo apt upgrade

sudo apt install ros-humble-desktop

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

ROS2就已经在系统中安装好了
在这里插入图片描述

3.验证ROS2安装成功

代码如下(示例):

ROS2最为重要的底层通信系统DDS是否正常
启动第一个终端,通过以下命令启动一个数据的发布者节点:
ros2 run demo_nodes_cpp talker
启动第二个终端,通过以下命令启动一个数据的订阅者节点:
ros2 run demo_nodes_cpp listener

ros2 run demo_nodes_ #Tab
在这里插入图片描述
ros2 run demo_nodes_cpp # 空格 Tab
在这里插入图片描述
启动发布者
在这里插入图片描述
启动监听者
在这里插入图片描述

4.小海龟仿真示例

代码如下(示例):

启动两个终端,分别运行如下指令:
ros2 run turtlesim turtlesim_node   #第一句指令将启动一个蓝色背景的海龟仿真器
ros2 run turtlesim turtle_teleop_key  #第二句指令将启动一个键盘控制节点,在该终端中点击键盘上的“上下左右”按键

在这里插入图片描述

在该终端中点击键盘上的“上下左右”按键,就可以控制小海龟运动啦在这里插入图片描述


总结

记录点点滴滴

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

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

相关文章

LeetCode刷题模版:21 - 30

目录 简介21. 合并两个有序链表22. 括号生成23. 合并K个升序链表24. 两两交换链表中的节点25. K 个一组翻转链表26. 删除有序数组中的重复项27. 移除元素28. 找出字符串中第一个匹配项的下标29. 两数相除【未理解】30. 串联所有单词的子串【未理解】结语简介 Hello! 非常感谢您…

devops 是什么东东了

DevOps,字面意思是Development &Operations的缩写。 DevOps是从实践中逐步总结提炼出的方法论理念。近而创造了DevOps这个词。 DevOps概念的萌芽阶段: 2008年敏捷大会上,来自Patrick Debois发表了题为 《Agile Infrastructure & Op…

基于.NET技术的动漫管理系统,给各位二次元老司机提供的动漫管理平台,基于.NET的前后端框架Blazor,含安装教程及使用说明

介绍 老司机驾驶舱——给各位二次元老司机提供的动漫管理平台。 下载地址:基于.NET技术的动漫管理系统 编写本应用的目的主要是实践巨硬(Microsoft)的新一代前端框架Blazor与EntityFramework,本应用也给想要学习这套框架的童鞋提…

Ubuntu20.04 hyperledger fabric2.4基于Docker搭建blockchain-explorer

准备 启动fabric测试网络。   这里默认已经完成了Fabric测试网络搭建以及运行。   后续会出Fabric安装,现在不会的就先去看别的博客 配置 1.在test-network 文件夹下面建立explorer文件夹: mkdir explorer2. 配置文件 2.1下载配置文件 先进文件…

Isaac Sim 机器人仿真器介绍、安装与 Docker [1]

前言与参考 此文书写于: January 6, 2023, 更新于 January 6, 2023 ;可能会随着时间的变化 此教程会有过时概念哦 Isaac Sim 相关参考链接: 官方文档地址官方docker image 镜像地址官方讨论 论坛链接,建议没啥事就可…

【JavaGuide面试总结】Java基础篇·中

【JavaGuide面试总结】Java基础篇中1.重载和重写有什么区别?2.什么是可变长参数?3.为什么浮点数运算的时候会有精度丢失的风险?4.如何解决浮点数运算的精度丢失问题?5.超过 long 整型的数据应该如何表示?6.基本类型和包…

JSP——标准标签库 (JSTL)

✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:JAVA开发者…

5G NR标准: 第19章 毫米波射频技术

第19章 毫米波射频技术 现有的 2G、3G 和 4G 移动通信 3GPP 规范适用于 6 GHz 以下的频率范围,相应的 RF 要求考虑了与 6 GHz 以下操作相关的技术方面。 NR 也在这些频率范围内运行(标识为频率范围 1),但另外还将定义为在 24.25…

【人工智能原理自学】梯度下降和反向传播:能改

😊你好,我是小航,一个正在变秃、变强的文艺倾年。 🔔笔记来自B站UP主Ele实验室的《小白也能听懂的人工智能原理》。 🔔本文讲解梯度下降和反向传播:能改,一起卷起来叭! 目录一、“挪…

Rollup Decentralization

1. 引言 当前的Rollup为中心化的,这并不是必须的,而是当前的选择。 2. 何为Rollup? Rollup与其它L2或侧链的主要区别在于: L1数据可用性 Rollup:只要L1的数据可用性存在,用户可重构L2状态,然…

SQL LIKE 操作符

LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。 SQL LIKE 操作符 LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。 SQL LIKE 语法 SELECT column1, column2, ... FROM table_name WHERE column LIKE pattern; 参数说明: column1, column2, ...&…

php://filter伪协议(总结)

文章目录php://filter伪协议总结php://filter伪协议介绍php://filter伪协议使用方法php://filter过滤器分类filter字符串过滤器string.rot13string.toupperstring.tolowerstring.strip_tagsfilter转换过滤器convert.base64-encodeconvert.base64-decodeconvert.quoted-printabl…

【Kotlin】空安全 ① ( Kotlin 的空安全机制 | 变量可空性 | 默认变量不可赋空值 | 声明可空类型变量 )

文章目录一、Kotlin 的空安全机制二、变量可空性1、默认变量不可赋空值2、声明可空类型变量一、Kotlin 的空安全机制 Java 中的空指针问题 : 在 Java 语言 编写的程序中 , 出现最多的崩溃就是 NullPointerException 空指针异常 , 该异常是 运行时 才爆出的 , 在 代码编写时 以…

冰冰学习笔记:C++11的新特性

欢迎各位大佬光临本文章!!! 还请各位大佬提出宝贵的意见,如发现文章错误请联系冰冰,冰冰一定会虚心接受,及时改正。 本系列文章为冰冰学习编程的学习笔记,如果对您也有帮助,还请各位…

k8s入门教程

文章导读 kubernetes,是一个全新的基于容器技术的分布式架构领先方案,是谷歌严格保密十几年的秘密武器----Borg系统的一个开源版本,于2014年9月发布第一个版本,2015年7月发布第一个正式版本。 kubernetes的本质是一组服务器集群&…

创建自己的docker镜像

dockerfile案例1导入dockerfiel以及java文件导入后第一步docker build -t javaweb:1.0 .docker build -t (名称以及对应的版本)javaweb:1.0 .(空格之后的一个点表示从当前目录开始)导入成功之后运行容器即可docker run --name web…

二十七、linux系统详解

一、Linux基础篇 1. Linux目录结构 ⑴ 基本介绍: linux的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目录“/”,然后在此目录下再创建其他的目录。 深刻理解linux树状文件目录是非常重要的,这里我给大家说明一下。 记住一…

Markdown生成目录结构的方法

参考文章:https://www.cnblogs.com/abc-x/p/13470575.htmlmarkdown生成目录结构的方法:示例:project│ README.md│ file001.txt │└───folder1│ │ file011.txt│ │ file012.txt│ ││ └───subfolder1│ │ file111.txt│ │ fil…

【Linux多线程编程】5. 线程锁(2)——死锁、读写锁

前言 上篇文章【Linux多线程编程】4. 线程锁(1)——互斥锁 我们介绍了线程同步的其中一种方式——互斥锁,互斥锁也可以理解为独占锁,只要有一个线程拿到该锁,其他的线程想要获取只能阻塞等待。但互斥锁的使用不当也可…

【云原生】Ceph 在 k8s中应用

文章目录一、概述二、Ceph Rook 介绍三、通过Rook在k8s中部署Ceph1)下载部署包2)部署 Rook Operator3)创建 Rook Ceph 集群4)部署Rook Ceph 工具5)部署Ceph Dashboard6)检查6)通过ceph-tool工具…