VM Ubuntu22.04 ROS2 从头安装

目录

  • 前言
  • 安装步骤
    • 1 设置编码
    • 2 添加ROS2软件源(从哪去下载ros2相关软件)
      • 报错
        • 解决方法
    • 3 安装
      • 报错
        • 解决方法1
        • 解决方法2
      • 报错
    • 4 设置环境变量
    • 5 Ros2 测试
      • Hello World 发送和监听
      • 小海龟键盘控制
    • 成功 Hello World 发送和监听界面
    • 成功控制小海龟界面

前言

本人也是初学者,此文章配合B站视频使用,视频链接:【古月·ROS2入门21讲 | 带你认识一个全新的机器人操作系统】,为了方便自己做笔记和大家复制命令,写下此文。
官方安装文档: Ubuntu 安装 ROS2 指南

安装步骤

1 设置编码

#查看编码
locale 
# 更新软件源
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

2 添加ROS2软件源(从哪去下载ros2相关软件)

# 下载软件源和密钥的指令
sudo apt update && sudo apt install curl gnupg lsb-release
# 设置下载软件源的密钥(有该密钥才可以访问ros2的软件源)
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg 
# 配置ros2软件源,把ros2软件源添加入系统列表
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

报错

第二步可能会报错 CurL: Failed to connect to raw.githubusercontent.com port 443 after 48 MS: Connection refused 或者 curl: (56) OpenSSL SSL_read: Connection reset by peer, errno 104

解决方法

原因是ip地址的问题,需要进行重新映射,参考文章:完美解决 Failed to connect to raw.githubusercontent.com port 443 …

3 安装

# 扫描软件源地址
sudo apt update
# 更新软件包
sudo apt upgrade 
# 桌面软件安装,上位机可视化软件等
sudo apt install ros-humble-desktop

报错

第三步报错 E: Unable to locate package ros-humble-desktop

解决方法1

需要参考官方文档执行下方的两行命令,重新进行第2步添加ROS2软件源的所有步骤

sudo apt install software-properties-common
sudo add-apt-repository universe
解决方法2

把下面的镜像源手动加入 sources.list,重启再试试

# 用 gedit 打开 sources.list 文件
sudo gedit /etc/apt/sources.list
# 重启虚拟机
reboot

复制下方的镜像源

deb https://mirrors.ustc.edu.cn/ubuntu/ jammy main restricted universe multiverse
# deb-src https://mirrors.ustc,edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-back

报错

ros-humble-desktop安装最后输出如下,有个包启动失败,但是貌似没啥影响

..
Setting up ros-humble-ros-core (0.10.0-1jammy.20240728.225838) ...
Setting up ros-humble-ros-base (0.10.0-1jammy.20240730.154319) ...
Setting up ros-humble-desktop (0.10.0-1jammy.20240730.174502) ...
Processing triggers for libc-bin (2.35-0ubuntu3.8) ...
W: Tried to start delayed item http://cn.archive.ubuntu.com/ubuntu jammy/universe amd64 python3-toml all 0.10.2-1, but failed

4 设置环境变量

# 只在当前终端生效,对新开的终端无效
source /opt/ros/humble/setup.bash
# 对多终端生效,重启不会失效
echo"source /opt/ros/humble/setup.bash">> ~/.bashrc

5 Ros2 测试

Hello World 发送和监听

# 发送命令(终端1)
ros2 run demo_nodes_cpp talker
# 监听命令(终端2)
ros2 run demo_nodes_cpp listener

小海龟键盘控制

# 开启界面命令(终端1)
ros2 run turtlesim  turtlesim_node
# 控制窗口命令(终端2)
ros2 run turtlesim  turtle_teleop_key

成功 Hello World 发送和监听界面

在这里插入图片描述

成功控制小海龟界面

在这里插入图片描述

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

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

相关文章

【java】RuoYiBootstrap多模块版本-新写的接口,用接口工具访问,状态码302,访问不到。打的断点也进不去。其实是Shiro拦截器搞的鬼

【java】RuoYiBootstrap多模块版本-新写的接口,用接口工具访问,状态码302,访问不到。打的断点也进不去 你如果着急,可以直接看《ShiroConfig.java文件源码-过滤器配置-重点代码》 重点 状态码:302访问不到断点进不去 …

FileNotFoundException: XXX (系统找不到指定的文件。)

目录 问题描述 问题分析 问题总结 问题描述 idea引入文件,系统去读取,但是路径的问题报错系统找不到指定文件 String filePath "test.txt"; try {FileInputStream fileInputStream new FileInputStream(filePath); } catch (FileNotFou…

信息搜集--敏感文件Banner

免责声明:本文仅做分享参考... 目录 git安装: git目录结构: 敏感目录泄露 1-git泄露 (1)常规git泄露 scrabble工具 (2)git回滚 (3)git分支 GitHacker工具 (4)git泄露的其他利用 .git重定向问题 2-SVN泄露 dvcs-ripper工具 3-小结 dirsearch目录扫描工具 敏感备…

MySQL修改表属性

一、修改表名 ① 使用DDL语句修改表名 ALTER TABLE 旧表名 RENAME 新表名; ② 使用Navicat修改表名 二、修改列 2.1 修改列名 ① 使用DDL语句修改列名 ALTER TABLE 表名 CHANGE COLUMN 旧列名 新列名 类型; ② 使用Navicat修改列名 2.2 修改列类型 ① 使用DDL语句修改列类…

C++实现多线程三窗口卖票程序

假设我们有100张门票,有三个售卖窗口,我们希望以多线程的方式将这些票卖出去,这样效率会更高一些。 首先我们需要有一个全局的门票变量。 int tickts 100; 卖票的函数,由于每个窗口卖出一张票都需要花费一些时间,假设…

springboot的启动流程原理

一:入口简介: 首先,分析启动流程,就要 找到入口. 启动流程的入口方法就是这个run方法: 点进去之后就是这样: 主要分为了两个步骤: 1.创建springBootApplication对象 2.运行SpringApplication#run(java.lang.String...)方法; 上面说了主要分为两个步骤,那么接下…

day02-JavaScript-Vue

1 JavaScript html完成了架子,css做了美化,但是网页是死的,我们需要给他注入灵魂,所以接下来我们需要学习JavaScript,这门语言会让我们的页面能够和用户进行交互。 1.1 介绍 通过代码/js效果演示提供资料进行效果演…

PCIE-TS1/TS2,变量总结

1.标准TS1/TS2 2.EQ TS1/TS2 3.Modified TS1/TS2 Modified TS1/TS2 是什么?Modify了什么?为什么要Modify?非 PCIe 协议运行在 PCIe PHY 上或发送 TS Message 时,在 LTSSM 部分子状态采用 Modified TS1/TS2。允许发送 Modified …

6.画面渲染及背景-《篮球比赛展示管理系统》现场管理员角色操作手册

通过[特效实验室]及[更换背景] 对整个展示界面的底部图层进行动画渲染。此功能是平台的一大特色。一般用在选手上场或颁奖等。用户可以根据现场情况,妥善发挥。背景图片及其特效,应该在比赛之前设置好。

HarmonyOS 开发

环境 下载IDE 代码 import { hilog } from kit.PerformanceAnalysisKit; import testNapi from libentry.so; import { router } from kit.ArkUI; import { common, Want } from kit.AbilityKit;Entry Component struct Index {State message: string Hello HarmonyOS!;p…

遗传算法与深度学习实战(7)——使用遗传算法解决N皇后问题

遗传算法与深度学习实战(7)——使用遗传算法解决N皇后问题 0. 前言1. N 皇后问题2. 解的表示3. 遗传算法解决 N 皇后问题小结系列链接 0. 前言 进化算法 (Evolutionary Algorithm, EA) 和遗传算法 (Genetic Algorithms, GA) 已成功解决了许多复杂的设计…

GitHub的未来:在微软领导下保持独立与AI发展的平衡

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

20240821 每日AI必读资讯

🎮《黑神话:悟空》震撼上线,英伟达AI技术立功! - 中国游戏史上的奇迹:《黑神话:悟空》预售销售额达3.9亿元,刷新国产游戏预售纪录。 - 游戏美学效果惊人:孙悟空形象深入人心&#…

你知道手机零部件尺寸检测的重要性吗?

手机零部件作为手机制造行业的基础,其品质的优劣直接关系到行业的发展,所以加强手机精密零部件尺寸检测非常重要。如今,手机零部件变得更加精细,对质量的要求也在不断提高,随着生产规模逐渐扩大,传统的检测…

网络安全防渗透实战指南【策略、代码与最佳实践】

网络安全防渗透实战指南【策略、代码与最佳实践】 引言 随着互联网的迅猛发展,网络安全问题日益突出。渗透攻击作为网络攻击的一种常见手段,给企业和个人带来了巨大的威胁和损失。因此,如何有效防止渗透攻击成为网络安全领域的重要课题。本…

【python报错解决】ImportError: DLL load failed while importing win32gui: 找不到指定的程序

在 Python 中安装 pywin32 库 pip install pywin32安装完成后找到自己的 Python 根目录,在该目录下打开命令行。 在命令行中输入: python.exe Scripts/pywin32_postinstall.py -install执行后显示以下信息,即问题解决。 Parsed argumen…

订单到期关闭如何实现?

目录 一、被动关闭 二、定时任务 三、JDK自带的DelayQueue 四、Netty的时间轮 五、Kafka的时间轮 六、RocketMQ延迟消息 七、RabbitMQ死信队列 八、RabbitMQ插件 九、Redis过期监听 十、Redis的Zset 十一、Redisson 在电商、支付等系统中,一般都是先创建…

单因子年化23.7%,基于deap的因子挖掘,我改进了fitness和metrics方案(附python代码和数据)

原创文章第626篇,专注“AI量化投资、世界运行的规律、个人成长与财富自由"。 我们目前投入使用的因子挖掘,基于两个框架,deap和gplearn,deap做一点点改动,就可以完美应用于多标的截面因子挖掘。而gplearn如果要支…

C#使用Modbus TCP通讯PLC,实现读写寄存器

一、创建一个Moudbus类,引入NModbus和Modbus这两个包 #region ModbusTCPpublic class NmodbusTcpHelper{// 静态成员变量,用于存储TcpClient实例private static TcpClient tcpClient null;// 静态成员变量,用于存储ModbusIpMaster实例privat…

案例 | 生产制造中的直线度测量

关键词:直线度测量仪,直线度 生产中不仅需要评价产品的外观尺寸,还需要对直线度(弯曲度)等尺寸加以测量。作为一种评价产品直度的重要指标——直线度,能够对其进行检测是非常重要的。 关于直线度,对于一些弯…