ROS2简介与Ubuntu24.04中安装指南

  • 之前安装了一个版本,但是不愿意写blog,现在想想自己就是个沙子
  • 立个flag,每次配置项目,写流程blog

ROS简介

ROS(Robot Operating System)是一个开源的机器人软件平台,提供了许多工具和库来帮助开发机器人应用。ROS的不同版本有不同的命名和发布策略,其中“Jazzy”和“Rolling”是两个不同的版本。

  1. ROS Jazzy

    • ROS Jazzy是ROS 2的一个特定版本,通常是指ROS 2的某个稳定版本(如ROS 2 Foxy的后续版本)。它是一个长期支持(LTS)版本,意味着它会在较长时间内获得支持和更新。
    • Jazzy版本通常会包含经过充分测试的功能和API,适合需要稳定性的生产环境。
  2. ROS Rolling

    • ROS Rolling是一个滚动发布版本,意味着它是一个持续更新的版本,包含最新的功能和改进。与Jazzy不同,Rolling版本不保证稳定性,因为它会不断接收新的代码和功能。
    • 适合开发者和研究人员,他们希望使用最新的功能和技术,但需要注意可能会遇到不稳定或不兼容的问题。

总结来说,ROS Jazzy适合需要稳定和长期支持的应用,而ROS Rolling则适合希望使用最新功能的开发者。选择哪个版本取决于你的项目需求和对稳定性的要求。

github和gitlab的区别

GitHub和GitLab都是流行的版本控制和协作平台,主要用于代码托管和项目管理。尽管它们有许多相似之处,但也存在一些关键区别:

  1. 托管方式

    • GitHub:主要是一个基于云的服务,用户可以在GitHub的服务器上托管代码。GitHub也提供了GitHub Enterprise版本,允许企业在自己的服务器上托管代码。
    • GitLab:同样提供基于云的服务,但也允许用户在自己的服务器上自托管GitLab实例。GitLab的自托管版本功能丰富,适合需要完全控制代码和数据的企业。
  2. 功能

    • GitHub:以其强大的社区和开源项目而闻名,提供了Pull Request(拉取请求)功能,便于代码审查和合并。GitHub还提供GitHub Actions用于CI/CD(持续集成/持续交付)。
    • GitLab:提供更全面的DevOps工具链,包括内置的CI/CD功能、问题跟踪、代码审查、容器注册表等。GitLab的集成功能使得从代码开发到部署的整个流程更加顺畅。
  3. 用户界面

    • GitHub:界面简洁,易于使用,特别适合开源项目和社区协作。
    • GitLab:界面相对复杂,功能更多,适合需要全面项目管理和DevOps功能的团队。
  4. 社区和开源

    • GitHub:虽然GitHub本身是一个私有平台,但它托管了大量的开源项目,社区活跃。
    • GitLab:GitLab本身是开源的,用户可以访问其源代码并根据需要进行修改。GitLab的开源版本提供了许多功能,适合开发者和团队使用。
  5. 定价

    • GitHub:提供免费和付费计划,免费计划有一些限制,适合个人和小型项目。
    • GitLab:同样提供免费和付费计划,免费计划功能相对丰富,适合团队使用。

总的来说,选择GitHub还是GitLab取决于团队的需求、项目的性质以及对功能和控制的要求。

参考文档(安装ROS2)

主要:https://docs.ros.org/en/rolling/Installation/Alternatives/Ubuntu-Install-Binary.html

  • ros2官方文档,采用binary安装,因为之前从源码安装貌似和ubuntu24.04的库函数版本冲突,
  • 更新,该方法因为rosdep update更新无效而失败,
  • 软件包安装有3种方式:deb、binary、source,可以直接从.deb安装

真正的主要文档:https://docs.ros.org/en/rolling/Installation/Ubuntu-Install-Debs.html

ustc软件源:https://mirrors.ustc.edu.cn/help/ros2.html

  • 不知道如何apt安装,是不是更新软件源之后可以直接apt install ros-versionx?

aliyun软件源:https://developer.aliyun.com/mirror/ros2?spm=a2c6h.13651102.0.0.29161b11f0jrwL

  • 版本过低(<=20.04)

Path2(成功)-deb

按照.deb文档安装,
流程概述:添加软件源之后

sudo apt install ros-rolling-desktop

测试,完结撒花💐

source /opt/ros/rolling/setup.sh
ros2 run demo_nodes_cpp talker

在这里插入图片描述

激活命令

source /opt/ros/rolling/setup.sh

source /opt/ros/rolling/setup.sh 是在ROS系统中用来设置环境变量的脚本。该脚本会将ROS的主要路径和其他必要路径添加到系统的环境变量中,以便正确地运行ROS命令和程序。

具体来说,该脚本会将以下路径添加到环境变量中:

  • /opt/ros/rolling/: ROS安装目录,包括核心包和工具。
  • /opt/ros/rolling/setup.bash: ROS的设置脚本。
  • /opt/ros/rolling/share: ROS包的共享目录。
  • /opt/ros/rolling/bin: ROS命令和工具的可执行文件目录。

通过运行这个脚本,可以为当前终端会话设置正确的ROS环境,以便使用ROS系统。

Question

  1. ubuntu如何apt搜索软件包的某个版本?
  • 按关键字查询
sudo apt search ros-rolling

在这里插入图片描述
2. 如何修改apt search,只返回软件名中出现关键字的条目,不返回描述中出现关键字的条目

  • 采用正则表达式+grep
sudo apt search ros | grep "^ros"
  1. 实用技巧——ubuntu执行前一条指令
sudo !!

Path1-binary

  • 直接执行
rosdep update

报错如下:

reading in sources list data from /etc/ros/rosdep/sources.list.d
Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml
ERROR: error loading sources list:The read operation timed out

开启global魔法,赋能终端,retry,make it~

reading in sources list data from /etc/ros/rosdep/sources.list.d
Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml
Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml
Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml
Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml
Hit https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml
Query rosdistro index https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml
Skip end-of-life distro "ardent"
Skip end-of-life distro "bouncy"
Skip end-of-life distro "crystal"
Skip end-of-life distro "dashing"
Skip end-of-life distro "eloquent"
Skip end-of-life distro "foxy"
Skip end-of-life distro "galactic"
Skip end-of-life distro "groovy"
Add distro "humble"
Skip end-of-life distro "hydro"
Skip end-of-life distro "indigo"
Add distro "iron"
Skip end-of-life distro "jade"
Add distro "jazzy"
Skip end-of-life distro "kinetic"
Skip end-of-life distro "lunar"
Skip end-of-life distro "melodic"
Add distro "noetic"
ERROR: error loading sources list:The read operation timed out (https://raw.githubusercontent.com/ros/rosdistro/master/noetic/distribution.yaml)

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

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

相关文章

Linux sudo命令及权限设置

普通用户的权限是有限制的&#xff0c;需要更大的权限&#xff0c;就需要使用 root 用户&#xff0c;但又不想一直使用 root 用户&#xff0c;如普通用户查看 8080 端口的监听情况&#xff1a; netstat -tulnp | grep :8080 只能查看自己的 不想用 root 用户&#xff0c;继续…

uniapp h5端临时路径转file对象上传

文章目录 问题说明使用说明1.使用场景2. 文件需要压缩3. 使用技术4. 代码如下5. utils/index.js 代码 3. 总结说明 问题说明 只针对uniapp开发H5网页,使用uniapp api获取到的临时路径不能满足使用场景,其他平台未进行测试 使用说明 1.使用场景 使用uview-ui的u-upload组件上…

微服务网关的认证管理;原理与实践

API安全认证是网关的最重要能力 API 网关为了保护对外提供的API&#xff0c;避免诸如恶意访问、未授权访问、应用漏洞及黑客攻击等导致的数据和资产损失&#xff0c;采用API网关的认证机制显得十分必要。 这种认证机制通过基于token的身份验证来实现&#xff0c;它允许应用程…

C++学习笔记2----模板类、继承、struct在class内定义相关问题记录

背景&#xff1a;写的算法合并到项目组代码&#xff0c;编译发现一些以前没积累过的错误&#xff0c;这里记录下&#xff0c;也供大家参考。 一、问题1 // 每个类都有单独的.h .cpp class A; class B : public A {// ... }; class C : public A {// ... };若在B.h中引用了一个…

STM32 + CubeMX + 硬件SPI + W5500 +TcpClient

这篇文章记录一下STM32W5500TCP_Client的调试过程&#xff0c;实现TCP客户端数据的接收与发送。 目录 一、W5500模块介绍二、Stm32CubeMx配置三、Keil代码编写1、添加W5500驱动代码到工程&#xff08;添加方法不赘述&#xff0c;驱动代码可以在官网找&#xff09;2、在工程中增…

微信小程序中,点击视频,没有跳转播放,可能是因为没有在app.json中正确注册视频播放页面的路径

const customMethodMap {handlePreview(e) {const { item: { url } } e?.currentTarget?.datasetconsole.log(Clicked item URL:, url); // 输出URLconst type url.split(.)[url.split(.)?.length - 1]console.log(File type:, type); // 输出文件类型console.log(isDoc(…

软件体系结构

第一章 构件 具有某种功能的 可复用的软件结构单元,为组装服务,可部署,具有规范的接口规约和显式的语境依赖 构件模型 构件模型是对构件本质特征的抽象描述&#xff0c;可以把它想象成一个类的组合&#xff0c;它封装了多个类&#xff0c;并具有一个或多个服务而提供了简单…

什么是垃圾回收(Garbage Collection)?

垃圾回收&#xff08;Garbage Collection&#xff09;是一种自动管理内存的机制&#xff0c;在编程语言中&#xff0c;它负责自动检测和释放不再被程序使用的内存&#xff0c;以避免内存泄漏和内存碎片的问题。 以下是一段示例代码&#xff1a; public class Example {public…

Spark 的Standalone集群环境安装与测试

目录 一、Standalone 集群环境安装 &#xff08;一&#xff09;理解 Standalone 集群架构 &#xff08;二&#xff09;Standalone 集群部署 二、打开监控界面 &#xff08;一&#xff09;master监控界面 &#xff08;二&#xff09;日志服务监控界面 三、集群的测试 &a…

react的antd-mobile使用Steps显示物流

antd-mobile的图标&#xff0c;是需要安装依赖的 step如果只有一个步骤是不会展示的&#xff0c;代码里面的标题那块可以看出来 尝试了很多遍测试发现一直不显示&#xff0c;查询后发现是这个组件的本身设置的原因 那么就算你只展示一个那么也要写两个step&#xff0c;第二个…

基于鸟类AI识别的果园智能物联网解决方案

1. 项目背景 我国拥有广阔的果园种植面积&#xff0c;但每年因鸟类造成的损失高达数亿元。传统的防鸟害措施&#xff0c;如建立防护网和使用物理化学方法&#xff0c;效果并不理想&#xff0c;且成本较高。为了解决这一问题&#xff0c;深圳快瞳科技有限公司的提出基于鸟类AI识…

uniapp 使用vue/pwa

vue add vue/pwa src下创建service-worker.js /* eslint-disable no-undef*/ importScripts(https://storage.googleapis.com/workbox-cdn/releases/5.1.2/workbox-sw.js) if (workbox) {console.log(Yay! Workbox is loaded &#x1f389;) } else {console.log(Boo! Workbo…

Java 实现接口幂等的九种方法:确保系统稳定性与数据一致性

摘要&#xff1a; 在分布式系统中&#xff0c;接口的幂等性至关重要&#xff0c;它能确保重复请求不会导致意外的副作用。本文深入探讨了 Java 实现接口幂等的九种方法&#xff0c;包括数据库唯一约束、状态机、分布式锁等&#xff0c;并通过详细的代码示例和实际应用场景&…

让Erupt框架支持.vue文件做自定义页面模版

Erupt是什么&#xff1f; Erupt 是一个低代码 全栈类 框架&#xff0c;它使用 Java 注解 动态生成页面以及增、删、改、查、权限控制等后台功能。 零前端代码、零 CURD、自动建表&#xff0c;仅需 一个类文件 简洁的注解配置&#xff0c;快速开发企业级 Admin 管理后台。 提…

如何优雅处理异常?处理异常的原则

前言 在我们日常工作中&#xff0c;经常会遇到一些异常&#xff0c;比如&#xff1a;NullPointerException、NumberFormatException、ClassCastException等等。 那么问题来了&#xff0c;我们该如何处理异常&#xff0c;让代码变得更优雅呢&#xff1f; 1 不要忽略异常 不知…

OCR与PaddleOCR介绍

OCR技术与PaddleOCR的介绍 在数字化时代&#xff0c;光学字符识别&#xff08;OCR&#xff0c;Optical Character Recognition&#xff09;技术变得越来越重要。OCR技术可以将图像中的文本转换为可编辑和可搜索的文本格式&#xff0c;广泛应用于文档数字化、自动化数据输入、车…

DBAPI连接阿里云 maxcompute 报错

使用正确的驱动包 访问以下链接寻找驱动包 https://github.com/aliyun/aliyun-odps-jdbc/releases/tag/v3.4.3 注意要使用odps-jdbc-3.4.3-jar-with-dependencies.jar &#xff0c;这个是完整的jar包 不要使用odps-jdbc-3.4.3.jar&#xff0c;这个不是完整的&#xff0c;它还…

2024最新Python安装教程+Pycharm安装教程【附安装包】

Python安装 1.首先下载好Python安装包 获取方式&#xff1a;点击这里&#xff08;扫描神秘②薇码免下载&#xff09;完全免费&#xff01;&#xff01;&#xff01; 2.打开安装包&#xff0c;先勾选最下面两个选项&#xff0c;再选择第二个自定义安装 3.这里默认全选&#xff…

Fatal error: Uncaught Error: Call to undefined function mysql_connect() 解决办法详细

情况一 Fatal error: Uncaught Error: Call to undefined function mysql_connect() in /www/wwwroot/www.ygwzjs.cn/dg_upload/class/db_sql.php:72 Stack trace: #0 /www/wwwroot/www.ygwzjs.cn/dg_upload/class/combakfun.php(192): do_dbconnect_common(localhost, , guiz…

【数据库】elasticsearch

1、架构 es会为每个索引创建一定数量的主分片和副本分片。 分片&#xff08;Shard&#xff09;&#xff1a; 将索引数据分割成多个部分&#xff0c;每个部分都是一个独立的索引。 主要目的是实现数据的分布式存储和并行处理&#xff0c;从而提高系统的扩展性和性能。 在创建索…