Ubuntu 的 ROS 操作系统安装与测试

引言

在这里插入图片描述


学习目标

在这里插入图片描述


学习内容

1 配置ROS Noetic的安装源

ROS官方提供了Noetic版本的软件包,适用于多种Ubuntu平台,用户无需从源码构建,直接安装即可使用。以下是安装过程:

1.1 配置Ubuntu仓库

在安装ROS之前,需要将Ubuntu软件仓库设置为允许“restricted”、“universe”和“multiverse”。具体操作请参考 Ubuntu官方指南。

1.2 设置sources.list。

配置系统以接受ROS软件包:

# 设置ROS的软件源列表
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
1.3 设置密钥

安装curl(如果未安装),并添加ROS仓库的密钥:

# 安装curl工具
sudo apt install curl# 添加ROS仓库的密钥
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -

2 安装ROS Noetic

2.1 确保包索引为最新
# 更新包索引
sudo apt update
2.2 根据需求选择安装的ROS版本

2.2.1 桌面完整版安装(推荐):包括桌面版所有内容,外加2D/3D仿真器和感知包。

# 安装完整版,包含核心工具和2D/3D仿真器(推荐)
sudo apt install ros-noetic-desktop-full

2.2.2 桌面版安装:包括ROS-Base所有内容,外加rqt和rviz等工具。

# 或者只安装桌面版,包含基础工具如rqt和rviz
sudo apt install ros-noetic-desktop

2.2.3 基础版安装(精简版):包含ROS打包、构建和通信库,不包含GUI工具。

# 安装ROS-Base版本,只包含最基础的ROS功能
sudo apt install ros-noetic-ros-base
2.3 如需安装特定包
# 如需安装特定包(例如slam-gmapping)
sudo apt install ros-noetic-slam-gmapping

3 环境设置

3.1 环境配置

每次在终端中使用ROS时,都需要source环境配置文件:

# source环境配置文件
source /opt/ros/noetic/setup.bash
3.2 简化操作

为了简化操作,可以将其添加到.bashrc文件中,使其在每次新终端启动时自动source:

# 在.bashrc中加入ROS的环境变量设置,使其每次启动终端时自动加载
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc# 更新.bashrc文件使其生效
source ~/.bashrc

4 安装构建包的依赖

4.1 安装工具

为了创建和管理自己的ROS工作空间,需要安装一些工具:

# 安装构建所需的工具
sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
4.2 初始化rosdep

初始化rosdep以便安装系统依赖:

# 初始化rosdep并更新
sudo rosdep init
rosdep update

5 验证安装

安装完成后,验证安装的ROS系统是否可以正常使用。

5.1 检查ROS版本
# 检查ROS版本
rosversion -d

输出安装的ROS版本,本文安装为 noetic,如果输出正确版本说明ROS已经成功安装。

5.2 检查ROS环境
# 检查ROS环境
echo $ROS_PACKAGE_PATH
  • 如果ROS环境配置正确,会显示相关路径。
  • 如果没有输出,可能需要重新执行 source /opt/ros/noetic/setup.bash 或将其添加到 ~/.bashrc 文件中。
5.3 运行ROS核心
# 运行ROS核心
roscore

如果ROS核心启动成功,终端会显示类似以下的信息,表示ROS系统已启动。按 Ctrl+C 停止。

... logging to /home/jack/.ros/log/... 
started roslaunch server http://172.0.0.1:11311/
ros_comm version 1.15.10
5.4 运行ROS示例节点(验证ROS通信机制)

ROS提供了一些示例节点,可以用来验证安装:

# 接收消息
rosrun rospy_tutorials listener.py

然后在另一个终端运行:

# 发布消息
rosrun rospy_tutorials talker.py

若两个节点能够正常通信并在终端显示传输的消息,则说明ROS 2已经正确安装并配置完毕。


小结

  • 在本次学习中,我们详细介绍了如何在Ubuntu上安装ROS Noetic并进行环境配置,以便用户能够顺利搭建起支持机器人开发的工作环境。
  • 主要步骤包括配置Ubuntu仓库、设置ROS软件源、安装所需密钥、选择合适的ROS版本(如desktop-full或ros-base)进行安装、环境变量配置以及安装构建包依赖。
  • 最后通过验证安装确保ROS配置成功,为后续的机器人控制和算法开发奠定基础。

欢迎大家评论留言!!!


友情提示:

  • 专栏:Turtlebot3 PC端ROS环境搭建与仿真
  • 下一节:Ubuntu 的 ROS 2 操作系统安装与测试

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

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

相关文章

入门网络安全工程师要学习哪些内容(详细教程)

🤟 基于入门网络安全/黑客打造的:👉黑客&网络安全入门&进阶学习资源包 大家都知道网络安全行业很火,这个行业因为国家政策趋势正在大力发展,大有可为!但很多人对网络安全工程师还是不了解,不知道网…

IP数据云 识别和分析tor、proxy等各类型代理

在网络上使用代理(tor、proxy、relay等)进行访问的目的是为了规避网络的限制、隐藏真实身份或进行其他的不正当行为。 对代理进行识别和分析可以防止恶意攻击、监控和防御僵尸网络和提高防火墙效率等,同时也可以对用户行为进行分析&#xff…

Ubuntu24.04 network:0 unclaimed wireless adapter no found

前言: 所遇问题原因在于,折腾显卡cuda版本,导致nvidia驱动没了,使用sudo ubuntu-drivers autoinstall后,驱动有了,但是reboot后无线网卡无法识别,此外usb无线网络也无法使用,ifconfi…

【C#设计模式(10)——装饰器模式(Decorator Pattern)】

前言 装饰器模式可以在运行时为对象添加额外的功,而无需修改原始对象的代码。这种方式比继承更加灵活。 代码 //蛋糕类(抽象类) public abstract class Cake {public abstract void Create(); } //奶油蛋糕类 public class CreamCake : Cak…

【论文速读】| 注意力是实现基于大语言模型的代码漏洞定位的关键

基本信息 原文标题:Attention Is All You Need for LLM-based Code Vulnerability Localization 原文作者:Yue Li, Xiao Li, Hao Wu, Yue Zhang, Xiuzhen Cheng, Sheng Zhong, Fengyuan Xu 作者单位:National Key Laboratory for Novel So…

Windows C++ TCP/IP 两台电脑上互相传输字符串数据

在 Windows 上使用 C 实现两个进程通过 TCP/IP 协议传输字符串数据是一个非常常见的任务。我们可以利用 Windows Sockets API (winsock2) 来进行套接字编程。在下面的例子中,我们将演示如何通过 TCP/IP 协议传输字符串数据。这里将包括两个程序:一个是服…

请解释一下Python的lambda函数在应用开发中的应用场景

1、请解释一下Python的lambda函数在应用开发中的应用场景。 Python的lambda函数是一种简洁的匿名函数,通常用于在需要一个函数作为参数的地方。在应用开发中,lambda函数可以用于各种场景,例如: 过滤和映射操作:在处理…

python包管理工具pip和conda的使用对比

python包管理工具pip和conda的使用对比 总述1. pip使用2. conda注意虚拟环境之间的嵌套,这个会导致安装包后看不到包,实际是安装到了base环境里 未完待续 总述 pip相对于conda,对应包的依赖关系管理不强,坏处是容易造成包冲突,好…

Diff 算法的误判

起源&#xff1a; for循环的:key的值使用index绑定&#xff0c;当循环列表条目变化更新&#xff0c;导致虚拟 DOM Diff 算法认为原有项被替换&#xff0c;而不是更新。 // vue2写法 错误例子 <template><div><button click"addItem">添加项目<…

Python与其他语言比较·练习题 --- 《跟着小王学Python》

Python与其他语言比较练习题 — 《跟着小王学Python》 《跟着小王学Python》 是一套精心设计的Python学习教程&#xff0c;适合各个层次的学习者。本教程从基础语法入手&#xff0c;逐步深入到高级应用&#xff0c;以实例驱动的方式&#xff0c;帮助学习者逐步掌握Python的核心…

如何修改npm包

前言 开发中遇到一个问题&#xff0c;配置 Element Plus 自定义主题时&#xff0c;添加了 ElementPlusResolver({ importStyle: "sass" }) 后&#xff0c;控制台出现报错&#xff0c;这是因为 Dart Sass 2.0 不再支持使用 !global 来声明新变量&#xff0c;虽然当前…

[CKS] K8S RuntimeClass SetUp

最近准备花一周的时间准备CKS考试&#xff0c;在准备考试中发现有一个题目关于RuntimeClass创建和挂载的题目。 ​ 专栏其他文章: [CKS] Create/Read/Mount a Secret in K8S-CSDN博客[CKS] Audit Log Policy-CSDN博客 -[CKS] 利用falco进行容器日志捕捉和安全监控-CSDN博客[CKS…

如何顺利申请国际专线网络:完整指南

随着全球经济的日益融合和跨国企业数量的增加&#xff0c;国际专线网络作为高效、稳定、可靠的跨境数据传输工具&#xff0c;越来越成为企业发展不可或缺的基础设施。与传统互联网连接相比&#xff0c;国际专线网络不仅提供更高的带宽和更低的延迟&#xff0c;还能确保数据的安…

第三百二十五节 Java线程教程 - Java Fork/Join框架

Java线程教程 - Java Fork/Join框架 fork/join框架通过利用机器上的多个处理器或多个内核来解决问题。 该框架有助于解决涉及并行性的问题。 fork/join框架创建一个线程池来执行子任务。 当线程在子任务上等待完成时&#xff0c;框架使用该线程来执行其他线程的其他未决子任…

数据结构小项目

单链表或者双链表完成学生管理系统。 1、使用fscanf和fprintf实现登录注册界面&#xff0c;登录成功显示学生管理系统菜单界面。 2、学生信息结构体&#xff08;学号&#xff0c;姓名&#xff0c;年龄&#xff09; 3、界面功能包含&#xff1a;录入学生信息&#xff0c;输出学生…

Vue3集成搜索引擎智能提示API

需求&#xff1a; 如何在项目中实现像百度搜索框一样的智能提示效果&#xff0c;如下图所示&#xff1a; 相关知识&#xff1a; 下面是各厂商提供的免费API 厂商请求百度http://suggestion.baidu.com/su?wd中国&cbwindow.baidu.sug必应http://api.bing.com/qsonhs.as…

一文了解Android的核心系统服务

在 Android 系统中&#xff0c;核心系统服务&#xff08;Core System Services&#xff09;是应用和系统功能正常运行的基石。它们负责提供系统级的资源和操作支持&#xff0c;包含了从启动设备、管理进程到提供应用基础组件的方方面面。以下是 Android 中一些重要的核心系统服…

华为机试HJ42 学英语

首先看一下题 描述 Jessi初学英语&#xff0c;为了快速读出一串数字&#xff0c;编写程序将数字转换成英文&#xff1a; 具体规则如下: 1.在英语读法中三位数字看成一整体&#xff0c;后面再加一个计数单位。从最右边往左数&#xff0c;三位一单位&#xff0c;例如12,345 等 2.…

鸿蒙实战:页面跳转

文章目录 1. 实战概述2. 实现步骤2.1 创建项目2.2 准备图片素材2.3 编写首页代码2.4 创建第二个页面 3. 测试效果4. 实战总结 1. 实战概述 实战概述&#xff1a;本实战通过ArkUI框架&#xff0c;在鸿蒙系统上开发了一个简单的两页面应用。首页显示问候语和“下一页”按钮&…

国产系统给在线的Word文件创建表格

在实际项目的开发中会遇到这样的需求&#xff1a;要求在生成word文件的时候&#xff0c;在文件的指定位置动态生成表格并填充。 public Table createTable(int numRows,int numColumns,WdAutoFitBehavior autoFitBehavior)throws java.lang.Exception参数&#xff1a; numRows…