ROS 机器人操作系统:Ubuntu 安装 ROS Noetic_ubuntu系统安装ros noetic包-程序员宅基地

技术标签: 自动驾驶  ROS 机器人操作系统  ubuntu  linux  ROS  

本文介绍如何在 Ubuntu 20.04 安装 ROS Noetic 软件包,并进行简单的测试。

安装步骤

1、配置 Ubuntu 软件仓库

配置 Ubuntu 软件仓库支持 “restricted” “universe” 和 “multiverse” 来源,最简单的方法是在「软件和更新」配置窗口进行勾选,如下图所示。

扩展阅读:Ubuntu 软件源Ubuntu Repositories

2、设置 sources.list

执行下面命令,设置从官方源(packages.ros.org)下载 ROS 软件包

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

国内的开发者可自行替换合适的软件源,例如修改为清华源

sudo sh -c 'echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

3、设置密钥

密钥的设置需要用到 curl 命令,如果你的系统还没有该命令,请先执行下面命令安装。

sudo apt install curl

然后设置密钥

curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -

国内开发者可以使用下面命令替代

sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

4、开始安装

安装桌面完整版的 ROS Noetic

sudo apt update
sudo apt install ros-noetic-desktop-full

这一步需要一些时间,你可以先去喝一杯茶哦!

5、设置环境变量

安装完成后,需要在你想使用 ROS 的 Bash 终端执行下面命令,以初始化 ROS Noetic 的环境变量。

source /opt/ros/noetic/setup.bash

为了方便使用,可以将其添加到用户的 .bashrc 脚本,这样就可以在每次打开 Bash 终端的时候自动完成设置。

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

如果是用 zsh 的小伙伴,则用下面命令替代

echo "source /opt/ros/noetic/setup.zsh" >> ~/.zshrc
source ~/.zshrc

6、安装依赖

到目前为止,你已经安装了运行核心 ROS 包所需的程序。不过为了便于创建和管理你自己的 ROS 工作区,满足日后安装各种工具和软件的需求,建议执行下面命令以安装依赖。例如,rosinstall 是一个经常使用的命令行工具,它使你能够通过一个命令轻松地为 ROS 包下载许多源码树。

想象一下,假设有一个机器人应用程序,它包含了 100 多个程序包,而用户需要在计算机中配置这些包,那么仅仅为这些包安装依赖包就是一件非常困难的事情。在这种情况下,rosinstall 这样的工具就会非常有用!只需要一条指令,便可以完成所有包的安装。

要安装这个工具和其他依赖项来构建 ROS 包,请执行命令:

sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential

7、初始化 rosdep

在使用其他 ROS 工具之前,还需要初始化 rosdep。Rosdep 工具对于安装 ROS 包的依赖包非常有用,一个 ROS 包可能需要若干个依赖包才能正常工作,Rosdep 会检查依赖包是否可用,如果不可用,它将自动安装这些依赖包。

如果你还没有安装 rosdep,请执行下面命令进行安装(其实上一步已经安装了)。

sudo apt install python3-rosdep

现在,你可以初始化 rosdep 了

sudo rosdep init
rosdep update

8、检查是否安装成功

最后,我们可以使用 rosversion -d 命令验证 ROS 的安装是否正确,如下:

$ rosversion -d
noetic

测试

打开一个新的 Bash 终端,测试 roscore 是否能正常启动

roscore

注意:如果没有配置自动初始化 ROS 环境,则每次开启 Bash 终端都需要执行以下命令。

source /opt/ros/noetic/setup.bash

新开启一个 Bash 终端,执行以下命令启动一个小乌龟模拟器:

rosrun turtlesim turtlesim_node

再开启一个 Bash 终端,在该终端控制小乌龟移动,执行以下命令:

rosrun turtlesim turtle_teleop_key

提示:鼠标必须聚焦在这个终端,按下方向键时乌龟才会移动。

更多测试示例请参考 ROS Tutorials

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/luckydarcy/article/details/124975570

智能推荐

《通信工程》专业术语及其缩写大全_通信工程术语-程序员宅基地

文章浏览阅读1.5w次,点赞26次,收藏118次。此博客使用方法:点击“阅读更多”加载全文内容,ctrl键+F键,可呼出定位查找。缩写及其专业术语缩写 全称 释义 参考文献 6LoWPAN IPv6 over low-power wirelwss area networks 面向低功耗无线局域网的IPv6 AAL ATM adaptation layer ATM适配层 ..._通信工程术语

如何在前端页面中使用AJAX发送请求到后端PHP接口获取数据_html 通过ajax发送关键字从后台查询数据-程序员宅基地

文章浏览阅读394次,点赞10次,收藏9次。这样,当前端页面中通过 AJAX 发起 GET 请求到 `backend.php` 后,可以通过回调函数中的 `xhr.responseText` 获取到后端返回的数据,并进行处理。注意,如果要发送 POST 请求,可以将 `open` 方法的第一个参数改为 'POST',并在 `send` 方法中添加需要发送的数据。在 PHP 后端接口中,可以通过 `$_GET` 或 `$_POST` 超全局变量来获取前端发送的数据,然后根据处理逻辑返回相应的数据。// 处理后端返回的数据。// 处理 GET 请求。_html 通过ajax发送关键字从后台查询数据

轻松搞懂递归算法-程序员宅基地

文章浏览阅读1.1k次,点赞40次,收藏45次。函数内部调用自己的函数称为递归函数,这点大家应该早有了解。那什么是递归?递归这个词需要拆分成递和归来理解。递是传参,归则是返回,一切函数在调用时必然经过这两个步骤。在递归函数中,由于调用自身的属性,传参过程和返回过程都是连续的。

javaweb请求转发和重定向的区别_javaweb请求重定向和请求转发的区别-程序员宅基地

文章浏览阅读229次。javaweb请求转发和重定向的区别区别重定向请求准发第二次请求谁请求浏览器服务器浏览器发送了几次请求两次以上一次servlet可以共享request不可以可以地址栏发生改变了是否浏览器地址栏显示的是第几次请求最后一次第一次可以跳转到什么资源任意资源项目内部第二次请求的路径是绝对路径内部路径转载..._javaweb请求重定向和请求转发的区别

c++路径转义字符_c++文件名中文转义-程序员宅基地

文章浏览阅读2.3k次。root_dir = R"(E:\data\aa\aaa\aaa\)"_c++文件名中文转义

Android Fragment简介_android fragment包括-程序员宅基地

文章浏览阅读407次。Fragment概述介绍Fragment是一种可以嵌入在活动中的UI片段,能够让程序更加合理和充分地利用大屏幕的空间,出现的初衷是为了适应大屏幕的平板电脑,可以将其看成一个小型Activity,又称作Activity片段。使用Fragment可以把屏幕划分成几块,然后进行分组,进行一个模块化管理。Fragment不能够单独使用,需要嵌套在Activity中使用,其生命周期也受到宿主Activity的生命周期的影响。2.特点·Fragment依赖于Activity,不能独立存在·一个Act_android fragment包括

随便推点

Python仿真优化与遗传算法_算法仿真实验可以使用python吗?-程序员宅基地

文章浏览阅读124次。Python提供了很多数值优化工具和算法,如scipy库、numpy库等,其中scipy库是一个强大的科学计算库,包括最优化、线性代数、统计分析等多个领域的功能,其中最优化模块提供了多种求解优化问题的算法,如Nelder-Mead、Powell、CG等,这些算法可以帮助用户求解各种优化问题,如非线性规划、函数拟合、曲线拟合等。在上述代码中,模拟了一个银行排队情景,有多个顾客到达银行,然后等待柜员服务,每个顾客的服务时间是1-3分钟,顾客的到达时间服从参数为5的指数分布。一、Python仿真优化。_算法仿真实验可以使用python吗?

SpringBoot Quartz 定时任务详解_springboot quartz standby shutdown-程序员宅基地

文章浏览阅读4.9k次。Quartz 简介在 JavaEE系统中,我们会经常用到定时任务,比如每天凌晨生成前天报表,每一小时生成汇总数据等等。我们可以使用java.util.Timer结合java.util.TimerTask来完成这项工作,但时调度控制非常不方便,并且我们需要大量的代码。使用Quartz框架无疑是非常好的选择,并且与Spring可以非常方便的集成,下面介绍它们集成方法和Cron表达式的详细介..._springboot quartz standby shutdown

hive函数之~reflect函数-程序员宅基地

文章浏览阅读1.6k次。reflect函数可以支持在sql中调用java中的自带函数,秒杀一切udf函数。使用java.lang.Math当中的Max求两列中最大值创建hive表create table test_udf(col1 int,col2 int) row format delimited fields terminated by ',';准备数据并加载数据cd /export/ser..._hive reflect

vue 线上环境 开启 vue-devtools_线上打开vuetools-程序员宅基地

文章浏览阅读2.6k次,点赞7次,收藏4次。vue 项目打包正式环境时,是没有 vue-devtools 选项卡的,没法看 vue 内部的数据使用以下几步可以实现在不改代码的情况下开启 vue-devtools选中 Source 选项卡,找到打包好的 app.js,并格式化ctrl + f 搜索$mount并在new那里打断点,new后面的对象就是 Vue 对象,需要记住该变量名,下一步要用到F5 刷新页面就就会进入断点,并在控制台输入d["default"].config.devtools = true(.config之前的_线上打开vuetools

Java给JPanel添加彩虹边框_给jpanel加边框-程序员宅基地

文章浏览阅读685次。使用多线程RGB变换为JPanel添加五彩斑斓的特效_给jpanel加边框

华为p8升级android8系统资源,华为新系统广受好评 目前EMUI10升级用户数已破亿-程序员宅基地

文章浏览阅读844次。华为消费者BG软件部总裁王成录昨日宣布,升级EMUI10的用户数已经突破1亿,涵盖35款机型。该数据不但充分展现了华为手机庞大的用户基数,也体现了华为在系统升级方面所付出的努力,正得到众多用户的肯定与支持。确定 时延引擎 与方舟编译器,解决安卓卡顿问题安卓手机曾经为人所诟病的一点要数“卡顿”,手机越用越慢,严重影响着安卓用户的用机体验。四年前,随着提出“天生快、一生快”标语的EMUI5.0发布,华..._华为p8最新系统

推荐文章

热门文章

相关标签