ROS学习(一)ROS Noetic安装及环境配置

2023-05-16

文章目录

  • 前言
  • 0、ROS Installation Options
  • 1、Installation
    • 1.1 Configure your Ubuntu repositories
    • 1.2 Setup your sources.list
    • 1.3 Set up your keys
    • 1.4 Installation
    • 1.5 Environment setup
    • 1.6 Dependencies for building packages
      • 1.6.1 Initialize rosdep
    • 1.7 Summary
  • 2、Managing Your Environment
  • 3、Create a ROS Workspace


前言

  上一篇文章主要对ROS的WIKI里的Introduction部分进行了研读,了解了关于ROS的基本信息。ROS的WIKI的版块设置其实是有些混乱的,经过粗略的阅读,对于初学者大概有两大入门路线,分别是Tutorials和StartGuide。

StartGuide:Learn about various concepts, client libraries, and technical overview of ROS.

  可以看出StartGuide更多是关于概念的解释,上一篇文章研读的Introduction就属于这一部分。这一部分包含Introduction | Concepts | Higher-Level Concepts | Client Libraries | Technical Overview等内容。

Tutorials:Step-by-step instructions for learning ROS hands-on.

  Tutorials则是更多的从实践中一步步学习ROS。
  之后的学习,我会选择两条路径并进的方式,理论与实践都进行学习。这篇文章将进行ROS的安装,是Tutorials中的第一章节第一小节第一点Installing and Configuring ROS Environment(路漫漫其修远兮)。


0、ROS Installation Options

  在正式安装前,首先要确定安装ROS的什么版本。
  ROS的版本很多,目前ROS的版本有13个之多。而且现在已经出了ROS2。不同的版本需求不同的系统。由于我使用的虚拟机中Ubuntu版本是20.04,故选择安装ROS Noetic。官网上的安装教程

1、Installation

1.1 Configure your Ubuntu repositories

Configure your Ubuntu repositories to allow “restricted,” “universe,” and “multiverse.” You can follow the Ubuntu guide for instructions on doing this.

  这步的意思是设置系统内的软件下载选项。打开系统内的Software & Updates,把上面提到的都勾起来。
Software & Updates

1.2 Setup your sources.list

Setup your computer to accept software from packages.ros.org.

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

  这一步是为了将ros相关包的下载地址加入到ubuntu的源配置中。考虑到使用者来自于不同地区,教程中也给出了不同地区的镜像源,我选择的是清华源。

sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'

1.3 Set up your keys

sudo apt install curl # if you haven't already installed curl
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -

  有两条命令,如果没有安装curl就先执行第一条命令安装。然后执行第二条命令。
在这里插入图片描述
  执行完毕会出现一个ok

1.4 Installation

  首先,确保包索引是最新的。执行命令sudo apt update,将包索引更新到最新。
  然后选择安装的版本,有Desktop-Full,Desktop,ROS-Base三种可选。我选择安装Desktop-Full。

sudo apt install ros-noetic-desktop-full

请添加图片描述

1.5 Environment setup

  在使用ros前,需要将相关环境进行配置,可使用如下命令。

source /opt/ros/noetic/setup.bash

  但是这个命令每次都要重新输入,略麻烦,为了便利,可输入以下命令:

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

  这个命令会使得每次启动窗口自动导入环境配置。

另外,如果安装有多个ROS,为防止出错,~/.bashrc应确保只含有正在使用的ROS版本的配置文件。

If you have more than one ROS distribution installed, ~/.bashrc must only source the setup.bash for the version you are currently using.

1.6 Dependencies for building packages

  完成之前的步骤,就可以运行ROS的核心功能包了,不过要想要构建自己编写的功能包,还需要进行下列步骤。

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

1.6.1 Initialize rosdep

  在使用ROS的各类工具前,需要去初始化rosdeprosdep能够让我们轻松的安装源代码所需要的依赖文件。
  这一步对于构建自己的ROS是十分重要的,但我也在这一步上卡了非常久。原因有二,一是墙的存在,二是寻找解决方案耗费了大量时间。
  首先执行sudo apt install python3-rosdep,然后执行sudo rosdep init,这两步都没有问题,问题出在第三步rosdep update。报错如下:
rosdep update
  由于解决过程较长,尝试很多不同的方案,会另外写一篇文章阐述我的解决过程,在此就不过多阐述,核心思想是能让rosdep update能访问到github上的文件。
  最后的解决方案参考:一定能解决ROS系统 rosdep update超时问题de简单方法,这个是起效的。
(2022.4.16更新,写完了我的解决方案,拖了好久。ROS学习——rosdep update 超时解决方法)
请添加图片描述

  (其他方案:(1)本文之后,世上再无rosdep更新失败问题!如果有…小鱼就…,这个方案是@鱼香ROS根据rosdep的源码重新写了一个专供国内用户的rosdepc,原理是采用了国内的服务器,免去了去github上下载资源的问题,由于学习进度还未到使用rosdep的程度,在此仅做记录。)

1.7 Summary

  官网上的安装教程就到这一步了,应该是已经完成了所有需要组件的安装,但官网并没有给出测试方法 😦。这也是官网教程的不足。


2、Managing Your Environment

  ROS的运行是依赖于环境的,在1.5 Environment setup中说了两种导入环境配置的方法。确定环境配置是重要的,如果环境配置混乱,开发与运行都会受到很大的影响。
  可通过以下命令查看目前ROS相关的环境变量。

printenv | grep ROS

Environment
  如果安装有多个版本的ROS,最好是把~/.bashrc里的自动引入环境的命令删除,每次手动导入环境变量。但由于目前我只安装了一个版本,为了便利期间,就暂时保持自动导入环境 😃。

Note: Throughout the tutorials you will see references to rosbuild and catkin. These are the two available methods for organizing and building your ROS code. rosbuild is not recommended or maintained anymore but kept for legacy. catkin is the recommended way to organise your code, it uses more standard CMake conventions and provides more flexibility especially for people wanting to integrate external code bases or who want to release their software. For a full break down visit catkin or rosbuild.

  另外,官网中提到,目前有rosbuildcatkin两种方法用于组织与构建ROS代码。推荐使用catkin


3、Create a ROS Workspace

  官网中给出了rosbuildcatkin两种方法的使用教程,我选择推荐的catkin方法。

These instructions are for ROS Groovy and later. For ROS Fuerte and earlier, select rosbuild.

  教程中提到,catkin方法仅对Groovy之后的版本有效,对于早期的版本,需要参考rosbuild方法。
通过以下命令创建并构建一个catkin工作空间。

$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/
$ catkin_make

  这里我遇到一个坑。报错如下:
请添加图片描述
  这是由于我之前在虚拟机中安装了anaconda,默认的python解释器是anaconda的base环境,而base环境里缺少部分用于ros构建的包。
  换用命令catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3,该命令指定了所用的python环境。
请添加图片描述
  在官网上也有提到:

Python 3 users in ROS Melodic and earlier: note, if you are building ROS from source to achieve Python 3 compatibility, and have setup your system appropriately (ie: have the Python 3 versions of all the required ROS Python packages installed, such as catkin) the first catkin_make command in a clean catkin workspace must be:

$ catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3

This will configure catkin_make with Python 3. You may then proceed to use just catkin_make for subsequent builds.

  所以为了保险起见,最好采用指定路径的这条命令。但个人感觉,在anaconda环境中,只要把相关的包配置好,也是一样正常使用的。但关于这点并未尝试。
  执行完命令后,在目录下生成builddevel两个文件夹。
在这里插入图片描述
  可通过命令source devel/setup.bash,将新生成文件夹中的环境配置文件导入,覆盖之前导入的环境变量。
  之后执行命令echo $ROS_PACKAGE_PATH,判断是否成功将环境变量覆盖。当打印出当前所在位置时,表示环境设置完毕。
在这里插入图片描述
  也可以通过命令printenv | grep ROS来查看
在这里插入图片描述
  环境设置成功了。


  以上,跟着教程完成了ROS的安装和环境配置,但具体环境代表什么,工作空间怎么用,暂时还不是很清楚。在之后的学习中会逐渐掌握。
  😃

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ROS学习(一)ROS Noetic安装及环境配置 的相关文章

  • Ubuntu18.04 方便好用的截图工具

    安装flameshot 下载地址 xff1a https github com lupoDharkael flameshot 安装命令 xff1a sudo apt get install flameshot 配置快捷键 设置 gt 设备
  • SPARC体系下硬浮点编译故障分析

    问题说明 之前extension版的app工程都是用的软浮点编译的 xff0c 在增加姿控算法库后 xff0c 统一改用硬浮点运行 xff0c 发现之前一个浮点数解析不对了 xff0c 排查发现和工程编译选项有关 xff0c 为软浮点时正常
  • SylixOS下DNS配置

    SylixOS下支持DNS xff08 域名解析 xff09 服务 xff0c 既可以通过域名地址来访问网络地址 测试 先进行一个域名解析的测试 xff1a 由上图可知 xff0c 在其他网络配置正确的情况下 xff0c SylixOS可以
  • SylixOS 教培官网上线

    4月末翼辉创建的包括SylixOS教培在内的文档中心已上线 今天SylixOS教培又上线了 Shell 命令手册 和 IDE 使用手册 方便大家学习和查阅SylixOS相关知识点 SylixOS教培官网 https docs acoinfo
  • SylixOS App 运行时出现“vprocRun() error: can not find entry function.”错误提示原因及解决方法

    针对只使用静态库 xff0c 不使用共享库的业务场景 xff0c 如果libsylixos Output目录下的 libvpmpdm so文件被删除 xff0c SylixOS App程序将自动连接libvpmpdm a文件 xff0c 这
  • 【无标题】

    环境变量 xff08 environment variables xff09 是一组键值对 xff08 key 61 value xff09 列表 xff0c 每一项键值对为一个环境变量 xff0c 分环境变量名和环境变量值 xff0c 两
  • c#爬虫-1688官网自动以图搜图

    背景 在1688有个功能 xff0c 就是上传图片 xff0c 就可以找到类似的商品 如下 网址 xff1a https www 1688 com 这时候 xff0c 我们可以使用程序来代替 xff0c 大批量的完成图片上传功能 实现思路
  • 关于大端序和小段序

    Most Significant Byte 指多字节序列中具有最大权重的 字节 wiki中的解释 xff1a Most Significant Bit 是指一个n位 二进制数字中的n 1位 xff0c 具有最高的权值 与之相反的称之为最低有
  • 使用Project进行项目管理

    文章目录 1 Project可以做哪些 xff1f 1 1 功能清单1 2 本文将会涉及到的内容 2 常见操作2 1 设置 xff1a 自动任务2 2 设置 xff1a 任务的时间格式2 3 日历设置 xff1a 项目开始时间2 4 日历设
  • 进销存小程序(一)项目整体功能和设计

    文章目录 1 设计目标2 功能点说明2 1 首页2 2 登陆2 2 1 微信用户和当前用户绑定的过程2 2 2 获取用户信息 2 3 创建店铺2 4 加入店铺2 5 创建商品2 6 商品信息修改2 7 入库管理2 8 出库管理2 9 库存盘
  • Tomcat的appBase,docBase,path关系

    文章目录 1 结论在最前面2 server xml关于appbase和context配置2 1 war包在webapps目录下 xff1b appbase 61 34 webapps 34 xff1b 无context配置2 2 war包在
  • ubuntu 18.04 LTS 安装搜狗输入法

    首先安装 fcitx xff0c 再安装搜狗输入法 一 检测是否安装fcitx 首先检测是否有 fcitx xff0c 因为搜狗拼音依赖fcitx 在终端中输入 fcitx xff0c 检查 fcitx 是否已有 fcitx 提示 xff1
  • Activiti之一:部署activiti-admin、activiti-app、activiti-rest

    文章目录 各组件版本下载部署将war包放入tomcat 访问 在网上查找activiti相关资料 xff0c 发现对于activiti rest的使用很少 xff0c 而官网对于api的支持还是比较多的 xff0c 如果考虑的是一个纯粹的工
  • 基于mongodb的动态表单实现

    文章目录 1 项目背景2 术语表3 技术选型4 概要设计4 1 逻辑架构图4 2 系统覆盖图 5 详细设计5 1 元数据样例及说明5 2 关于uuid 6 接口清单6 1 表单管理模块6 1 1 从excel导入表单元数据6 1 2 表单元
  • 10.9.1-Dataway+Echarts动态图表方案

    文章目录 1 技术选型2 实现方案2 1 方案介绍2 2 方案实现 xff08 demo xff09 2 2 1 使用echarts绘制html静态页2 2 1 1 选择合适的图表2 2 1 2 下载html demo 2 2 2 使用Da
  • 11.1-股票基金历年收益率计算

    文章目录 1 计算目标2 关键问题3 获取交易日历4 逻辑编写 1 计算目标 我们想知道 xff0c 一只股票标的 xff0c 在之前的几年中 xff0c 每一年的年化收益率是多少 xff1f 如果将每年的年化收益率进行求和汇总 xff0c
  • java代理实现爬取代理IP

    仅仅使用了一个java文件 xff0c 运行main方法即可 xff0c 需要依赖的jar包是com alibaba fastjson xff08 版本1 2 28 xff09 和Jsoup xff08 版本1 10 2 xff09 如果用
  • 使用proguard进行javaweb代码混淆

    背景 xff1a 公司需要将软件打包出售 xff0c 此时需要进行代码混淆和一些加密要求 调研 xff1a 目前此类实现包含软件和硬件实现 xff1b 硬件实现是使用类似加密狗usb工具进行防护 xff0c 应用系统通过与加密狗交互 xff
  • 使用说明-Postman-带cookie请求、文件上传

    Postman进行文件上传 选择post方式 xff0c 地址是http 192 168 102 213 7240 foa system upload Headers部分不要填写任何内容 对照后台的接口 xff0c 配置postman 选择
  • CentOS7下使用docker,完成Jenkins镜像、tomcat镜像制作和启动

    最终的目的 xff0c 是为了完成docker环境的Jenkins搭建使用 xff0c 并从gitlab上获取代码 xff0c 打出war包 xff0c war包通过目录挂载的方式 xff0c 在tomcat容器中使用 xff0c 总体思路

随机推荐

  • C# HttpWeb POST请求封装

    用于发送POST请求 xff0c 可以发送各种POST参数 传送文件 xff0c 返回结果 下载文件 说明如下 xff1a span class hljs keyword public span span class hljs keywor
  • [ROS学习笔记]ROS中使用激光雷达(RPLIDAR)

    RPLIDAR是低成本的二维雷达解决方案 xff0c 由SlamTec公司的RoboPeak团队开发 xff0c 本次学习用的是RPLidar A1型号激光雷达 xff0c 它能扫描360 xff0c 6米半径的范围它适合用于构建地图 xf
  • Ubuntu 18.04 配置国内源

    安装Ubuntu 18 04后 xff0c 使用国外源太慢了 xff0c 修改为国内源会快很多 修改阿里源为Ubuntu 18 04默认的源 备份 etc apt sources list 备份 cp etc apt sources lis
  • VS2010 断点失效解决方案 (VC)

    遇到几次断点失效的问题 xff0c 下面的方法都用了一下 xff0c 不清楚是哪个方法起作用了 一 菜单 调试 选项和设置 调试 常规 要求源文件与原始版本完全匹配 取消这个功能 二 菜单 编辑 高级 设置选定内容的格式 把打不上断点的那个
  • stm32学习

    波特率 xff1a 每秒传送的位数 DMA Direct Memory Access xff0c 直接内存存取 是所有现代电脑的重要特色 xff0c 它允许不同速度的硬件装置来沟通 xff0c 而不需要依赖于 CPU 的大量中断负载 否则
  • 经纬高坐标系转到东北天坐标系

    经纬高坐标系转到东北天坐标系 基本思路 xff1a 首先把经纬高 xff08 大地坐标系 lla llh xff09 转到直角坐标系 xff08 地心地固直角坐标系 xff08 ECEF xff09 xyz xff09 然后再转为局部坐标系
  • Ubuntu20.04 配置D435i相机

    文章目录 一 安装使用 InterRealSenseD435i SDK21 注册服务器的公钥2 安装3 安装开发者和调试包4 测试SDK2 二 安装realsense ros1 创建工作空间2 源码安装3 编译 xff1a 三 安装kali
  • java打卡-day3 变量和数据类型

    变量和数据类型 基本数据类型分类 4类8种 整数型 byte 占一个字节 128到127short 占两个字 215 215 1int 占四个字节 231 231 1long 占八个字节 263 263 1 浮点型float 占四个字节 3
  • 【行人惯性导航】关于行人导航中IMU位姿推导的知识点及相关代码

    IMU姿态惯性推导 本文是我上学期间写得 xff0c 之前已经在另一个博客发布过 xff0c 如今转至此发布 最近从事行人惯性导航的研究 xff0c 本人也是一个小白 xff0c 其中看了很多文献 xff0c 有很多个人思考很费时间的地方
  • nuttx操作系统的移植以及下载

    1 在ubuntu根目录下 xff1a root 64 ubuntu apt get update 更新包 2 root 64 ubuntu apt get install gcc arm none eabi 编译器 3 kconfig f
  • MPI集群环境搭建

    我在前面两篇博客中简要介绍了为什么要并行计算以及MPI的一些学习心得 xff0c 接下来我们正式开始MPI的学习之路 我们知道MPI是分布式内存编程 xff0c 所以这篇博客会详细讲解MPI集群环境的搭建过程 一 准备工作 选择Linux版
  • python 练习 tcp 服务器与客户端发、接信息,pycharm

    背景 win8 1 pycharm 2021 3 1 python 3 9 7 自带idle vs code 1 64 2 现象 1 代码不知道如何在idle 和 vs code中运行 xff0c 总是在运行客户端代码后 已先运行服务器代码
  • VSCode配置终端为cmd命令行程序的操作步骤

    步骤1 xff1a 依次点击菜单栏的 终端 新建终端 步骤2 xff1a 按图中红色箭头的方向和方框所示 xff0c 依次点击 步骤3 xff1a 点击图中红框处的command product xff0c 下次再启动时的VSCode终端就
  • VC/C++ 发送post请求

    前面我搭建了一个servlet xff0c 响应get post请求 xff0c 网页端已经实现get post请求 xff0c 这个时候我用c 43 43 编辑的程序也想发送post请求 xff0c 于是 xff0c 有了下面这段代码 s
  • Python subprocess模块解析

    在学习这个模块前 xff0c 我们先用Python的help 函数查看一下subprocess模块是干嘛的 xff1a DESCRIPTION This span class hljs keyword module span allows
  • Java与C/C++的性能对比

    写这个主题是因为若干时间前一时头脑发热 xff0c 写了这个帖子 xff08 http www iteye com topic 857722 xff09 xff0c 现在看来这个帖子很幼稚 xff0c 尤其是二楼 61 61 xff0c 后
  • char数组与char指针的区别与联系

    字符串 xff08 char xff09 与字符数组 xff08 char 区别 在C语言中 xff0c 对字符串的操作主要有两种方式 xff1a 一是字符数组 char xff0c 二是使用字符指针 char 接下来最这两种所使用的情况做
  • Ubuntu系统火狐浏览器无法上网方案解决

    在国内google浏览器无法直接使用 xff0c 我们安装ubuntu系统自带的火狐浏览器在设置中选择的事google上网 xff0c 所有大家网络连接没问题 xff0c 就是无法上网 解决问题如下 xff1a 第一种 xff1a 重新安装
  • 解决ROS常遇到的Couldn’t find executable named报错解决

    解决办法 xff1a 将执行文件打开权限允许作为程序执行文件
  • ROS学习(一)ROS Noetic安装及环境配置

    文章目录 前言0 ROS Installation Options1 Installation1 1 Configure your Ubuntu repositories1 2 Setup your sources list1 3 Set