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)

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

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

相关文章

【Linux】- vim四种模式常见使用技巧

目录 一、快速认识vim 1、概念&#xff1a; 2、vim的四种模式及其互相转换 二、常见模式具体介绍 1、命令模式 2、底行模式 3、小技巧 一、快速认识vim 1、概念&#xff1a; vim是一个多模式的编辑器&#xff0c;vim里面还有很多的子命令&#xff0c;来进行代码的编写操…

Rust 力扣 - 1652. 拆炸弹

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 我们只需要遍历长度长度为k的窗口&#xff0c;然后把窗口内数字之和填充到结果数组中的对应位置即可 题解代码 impl Solution {pub fn decrypt(code: Vec<i32>, k: i32) -> Vec<i32> {let n c…

基于springboot的高校科研管理系统(源码+调试+LW)

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据你想解决的问题&#xff0c;今天给…

一个最简单的网络编程

今天总结一下&#xff0c;我至今学的第一个网络编程&#xff0c;也是一个最简单的网络编程。 这篇博客只是将如何用代码实现一个网络编程&#xff0c;具体细节不讲解&#xff0c;后续会介绍详细细节。 网络编程会涉及到客户端和服务器的实现。 1.服务器的实现 首先&#xf…

Centos开机自启动脚本示例

本文建议创建一个sh文件管理自启动的各项内容&#xff0c;再将sh文件设置开机启动 在/root/autoshell下创建一个autostart.sh&#xff0c;内容如下 #!/bin/bash # description:开机自启脚本# 启动mongodb sh /root/software/mongodb-linux-x86_64-rhel70-4.0.6/bin/mongod --c…

从APP小游戏到Web漏洞的发现

一、前因&#xff1a; 在对一次公司的一个麻将游戏APP进行渗透测试的时候发现&#xff0c;抓到HTTP请求的接口&#xff0c;但是反编译APK后发现没有在本身发现任何一个关于接口或者域名相关的关键字&#xff0c;对此感到了好奇。 于是直接解压后everything搜索了一下&#xff…

Docker-- cgroups资源控制实战

上一篇&#xff1a;容器化和虚拟化 什么是cgroups&#xff1f; cgroups是Linux内核中的一项功能&#xff0c;最初由Google的工程师提出&#xff0c;后来被整合进Linux内核; 它允许用户将一系列系统任务及其子任务整合或分隔到按资源划分等级的不同组内&#xff0c;从而为系统…

从0开始本地部署大模型

这就开始从0开始本地部署大模型 下载Ollama 下载地址&#xff1a;https://ollama.com/download/windows 适用于MacOS、Linux和Windows&#xff0c;这里我下载Windows的安装包。 直接打开安装包&#xff0c;点击install即可&#xff0c;安装完成后可以在任务栏中看到Ollama程…

【华为HCIP实战课程二十九】中间到中间系统协议IS-IS邻居关系建立和LSP详解,网络工程师

一、广播环境邻居关系建立详解 1、广播环境邻居关系建立 广播邻居关系采用三次握手,携带的邻居列表为接口的MAC来标识 2、LSP同步:3种报文(CSNP和PSNP和具体的LSP) CSNP作用类似DBD,请求者发送PSNP(类似LSR)来请求具体的LSP 广播网络LSP交互过程: R1-R2(DIS)--R3…

SpringBoot day 1105

ok了家人们&#xff0c;今天继续学习spring boot&#xff0c;let‘s go 六.SpringBoot实现SSM整合 6.1 创建工程&#xff0c;导入静态资源 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</…

易盾增强版滑块识别/易盾识别/滑块识别/增强版滑块识别/易盾滑块本地识别

易盾增强版滑块识别 计算思路如下&#xff1a; 滑动条拖动距离传入 restrict 算法处理得到 初次值 J J * 率值0.309375 得到滑块偏移量。 滑块的旋转角度滑块偏移量*attrs 所以滑块偏移量滑块的旋转角度/attrs 通过滑块偏移量 求出 滑动条拖动距离 # 应用高斯模糊warped_…

WPF 特性------Binding

工业控制中&#xff0c;经常会需要把一个bool 型输入信号的状态显示在面板上&#xff0c;使用wpf 绑定的办法&#xff0c;可简洁实现&#xff1a; 实现步骤&#xff1a; 1&#xff0c;定义类&#xff1a; using System; using System.Collections.Generic; using System.Com…

ENSP (虚拟路由冗余协议)VRRP配置

VRRP&#xff08;Virtual Router Redundancy Protocol&#xff0c;虚拟路由冗余协议&#xff09;是一种用于提高网络可用性和可靠性的协议。它通过在多个路由器之间共享一个虚拟IP地址&#xff0c;确保即使一台路由器发生故障&#xff0c;网络依然能够正常运行&#xff0c;防止…

计算机网络(Ⅵ)应用层原理

一些网络应用的例子: E-mail Internaet电话 Web 电子支付 文本信息 搜索 P2P文件共享 流媒体 即时通讯 实时电视会议 .... .... 创建一个网络应用&#xff1a; 1.编程 2.在不同的端系统上运行。 网络应用的体系架构 可能的应用架构 1.客户-服…

LeetCode:102. 二叉树的层序遍历(java)

目录 题目描述: 代码: 第一种: 第二种: TreeNode: LinkedListNode: 题目描述: 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [3,9,…

openGauss数据库-头歌实验1-4 数据库及表的创建

一、创建数据库 &#xff08;一&#xff09;任务描述 本关任务&#xff1a;创建指定数据库。 &#xff08;二&#xff09;相关知识 数据库其实就是可以存放大量数据的仓库&#xff0c;学习数据库我们就从创建一个数据库开始吧。 为了完成本关任务&#xff0c;你需要掌握&a…

【题解】CF2033G

题目 CF2033G 分析 一道很显然是树形dp的题&#xff0c;但非常恶心QwQ。   先不管复杂度&#xff0c;找找递推关系&#xff0c;一种很直接的想法如下&#xff08;我觉得是错误的&#xff09;&#xff1a; d p [ i ] [ k ] m a x ( d p [ f a i ] [ k − 1 ] , d p [ s o …

unity 中使用zeroMq和Mqtt 进行通讯

最近我在做一个车上的HMI项目&#xff0c;也就是车机应用&#xff0c;需要与云端和域控进行通信。HMI的功能已经外包了&#xff0c;但消息的统一层留给我自己来做。因为项目组其他人都没有经验&#xff0c;所以这个任务就落到了我头上&#xff0c;尽管我自己也没有太多经验&…

Java | Leetcode Java题解之第526题优美的排列

题目&#xff1a; 题解&#xff1a; class Solution {public int countArrangement(int n) {int[] f new int[1 << n];f[0] 1;for (int mask 1; mask < (1 << n); mask) {int num Integer.bitCount(mask);for (int i 0; i < n; i) {if ((mask & (1…

命令行参数、环境变量、地址空间

命令行参数&#xff1a; int main(int argc, char *argv[ ])&#xff0c;main的参数可带可不带。argc参数通常代表后面的char *argv的元素个数有多少。 在linux中会把输入的字符串存到char *argv[ ]中&#xff0c;在数组的结尾为NULL。 命令行参数可以让同一个程序可以通过不同…