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

文章目录

  • 前言
  • 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,把上面提到的都勾起来。
ROS学习(一)ROS Noetic安装及环境配置_第1张图片

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就先执行第一条命令安装。然后执行第二条命令。
ROS学习(一)ROS Noetic安装及环境配置_第2张图片
  执行完毕会出现一个ok

1.4 Installation

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

sudo apt install ros-noetic-desktop-full

ROS学习(一)ROS Noetic安装及环境配置_第3张图片

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。报错如下:
ROS学习(一)ROS Noetic安装及环境配置_第4张图片
  由于解决过程较长,尝试很多不同的方案,会另外写一篇文章阐述我的解决过程,在此就不过多阐述,核心思想是能让rosdep update能访问到github上的文件。
  最后的解决方案参考:一定能解决ROS系统 rosdep update超时问题de简单方法,这个是起效的。
(2022.4.16更新,写完了我的解决方案,拖了好久。ROS学习——rosdep update 超时解决方法)
ROS学习(一)ROS Noetic安装及环境配置_第5张图片

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

1.7 Summary

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


2、Managing Your Environment

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

printenv | grep ROS

ROS学习(一)ROS Noetic安装及环境配置_第6张图片
  如果安装有多个版本的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

  这里我遇到一个坑。报错如下:
ROS学习(一)ROS Noetic安装及环境配置_第7张图片
  这是由于我之前在虚拟机中安装了anaconda,默认的python解释器是anaconda的base环境,而base环境里缺少部分用于ros构建的包。
  换用命令catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3,该命令指定了所用的python环境。
ROS学习(一)ROS Noetic安装及环境配置_第8张图片
  在官网上也有提到:

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学习(一)ROS Noetic安装及环境配置_第9张图片
  环境设置成功了。


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

你可能感兴趣的:(ROS学习,ubuntu,经验分享)