Ubuntu-18.04 安装 ROS 系统

ROS环境配置:https://www.bilibili.com/video/av59217777/

ROS (Kinetic)安装: https://www.bilibili.com/video/av64772412/

STEP-1,添加 sources.list,设置 ROS 更新源(可以使用USTC或TU的镜像)

STEP-2,更新KEYs

STEP-3,安装并更新

https://www.jianshu.com/p/7fccfe18d7d3

表1-1 ROS的历史版本

发行版本    发布日期    截止日期    Ubuntu版本    备注
Melodic Morenia    2018年5月    2023年5月    18.04 LTS    LTS
Lunar Loggerhead    2017年5月    2019年5月    17.04    
Kinetic Kame    2016年5月    2021年5月    16.04 LTS    LTS
Jade Turtle    2015年5月    2017年5月    15.04    
Indigo Igloo    2014年7月    2019年4月    14.04 LTS    LTS
Hydro Medusa    2013年9月    2015年5月    13.04    
Groovy Galapagos    2012年12月    2014年7月    12.10    
Fuerte Turtle    2012年4月        12.04 LTS    
Electric Emys    2011年8月        11.10    
Diamondback    2011年3月        11.04    
C Turtle    2010年8月        10.04 LTS    
Box Turtle    2010年3月        9.10    
文章采用ROS版本为ROS Melodic,操作系统为Ubuntu 18.04 LTS 64bit。操作系统安装教程请参考作者上一篇博文推荐的链接。
详细安装步骤如下:
 

(一)ROS的安装与环境配置

1.设置教程

1.1 打开system setting(系统设置)->Software&Updates(软件与更新)

1.2点击上方Other software(其他软件),点击左下角add(添加)按钮

1.3下面一段复制进去

deb http://ros.exbot.net/rospackage/ros/ubuntu/ bionic main1.4 确定点Add Source 勾选选项

就可以愉快地在终端(快捷键:CTRL+ALT+T)里

sudo apt-get update

2正式安装和配置环境:http://wiki.ros.org/

2.1 添加 sources.list

配置你的电脑使其能够安装来自 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'

或者在终端使用镜像(USTC):

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

或者在终端使用镜像(Tsinghua University):

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'

2.2 添加 keys

sudo apt-key adv --keyserver hkp://pool.sks-keyservers.net --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116

2.3 更新并安装

确保你的Debian软件包索引是最新的:

sudo apt-get update

安装桌面完整版:(推荐) 包含ROS、rqt、rviz、通用机器人函数库、2D/3D仿真器、导航以及2D/3D感知功能。

sudo apt-get install ros-melodic-desktop-full

如果出现以下错误:

The following packages have unmet dependencies:
 ros-melodic-desktop : Depends: ros-melodic-common-tutorials but it is not going to be installed
                       Depends: ros-melodic-geometry-tutorials but it is not going to be installed
                       Depends: ros-melodic-robot but it is not going to be installed
                       Depends: ros-melodic-ros-tutorials but it is not going to be installed
                       Depends: ros-melodic-urdf-tutorial but it is not going to be installed
                       Depends: ros-melodic-visualization-tutorials but it is not going to be installed
                       Depends: ros-melodic-viz but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

解决方案——安装 aptitude,然后继续:

$ sudo apt install aptitude
$ sudo aptitude -y install ros-melodic-desktop-full
The following NEW packages will be installed:

 然后就成功了


 有的问题 apt-get 解决不了,必须使用 aptitude 解决,有的问题,用 aptitude 解决不了,必须使用apt-get.

  •     aptitude 解决得更好的地方: install, remove, reinstall(apt-get无此功能), show(apt-get无此功能), search(apt-get无此功能), hold(apt-get无此功能), unhold(apt-get无此功能),
  •      apt-get 解决得更好的地方: source(aptitude无此功能), build-dep (低版本的aptitude没有build-dep功能)
  •      apt-get 跟 aptitude 没什么区别的地方:update, upgrade (apt-get upgrade=aptitude safe-upgrade, apt-get dist-upgrade=aptitude full-upgrgade)

解决aptitude 安装软件时 package XXX is not configure yet

$ sudo mv /var/lib/dpkg/info /var/lib/dpkg/info_old //现将info文件夹更名
$ sudo mkdir /var/lib/dpkg/info //再新建一个新的info文件夹
$ sudo apt-get update
$ sudo apt-get -f install
$ sudo mv /var/lib/dpkg/info/* /var/lib/dpkg/info_old //

2.4 初始化 rosdep

在开始使用 ROS 之前你还需要初始化 rosdep。rosdep 可以方便在你需要编译某些源码的时候为其安装一些系统依赖,同时也是某些 ROS 核心功能组件所必需用到的工具。
sudo rosdep init
可能出现如下错误(pkg-resources改出问题了):
U303L:~/ros_ws$ sudo rosdep init
Traceback (most recent call last):
  File "/usr/bin/rosdep", line 11, in 
    load_entry_point('rosdep==0.19.0', 'console_scripts', 'rosdep')()
  File "/home/npuyin/.local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 489, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/home/npuyin/.local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2852, in load_entry_point
    return ep.load()
  File "/home/npuyin/.local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2443, in load
    return self.resolve()
  File "/home/npuyin/.local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2449, in resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
ImportError: No module named rosdep2.main

解决办法——需要卸载 python-pkg-resources 再安装

sudo rm -rf /var/lib/dpkg/info/python-pkg-resources
sudo dpkg --remove --force-remove-reinstreq python-pkg-resources
sudo apt-get purge python-pkg-resources

pip install distribute
sudo apt install --fix-missing python-rosdep

运行 rosdep init 还是出现的问题

U303L:~/ros_ws$ sudo rosdep init
ERROR: cannot download default sources list from:
https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list
Website may be down.

解决办法很多,本文使用方法如下:

将文件 20-default.list 下载并复制到 /etc/ros/rosdep/sources.list.d/20-default.list 后直接进入下一步:

sudo rosdep update

更新ROS源代码。这个命令相当于 Linux 使用 sudo apt-get update 来更新系统软件,它的作用就是更新 ROS 系统中的软件包

可以参考:

1-《解决rosdep init报错“Website may be down”》,https://zhuanlan.zhihu.com/p/107218921

2-《ROS:sudo rosdep init出错常规方法都无效后解决办法记录》,https://zhuanlan.zhihu.com/p/77483614

3- 控制台使用SSR代理,在 ~/.bashrc 中添加如下内容并使用 source 更新,能够完成后续的 ros 系统更新

alias setproxy="export ALL_PROXY=http://127.0.0.1:12333"
alias unsetproxy="unset ALL_PROXY"
alias ip="curl -i http://ip.cn"

2.5 环境设置

如果需要每次新的终端都能将 ROS环境变量都能够自动配置好(即添加到bash会话中),则需要进行以下操作:

echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
上述命令的意思是:将 source /opt/ros/indigo/setup.bash 这句话 ,添加(追加)到 ~/.bashrc 的尾部。 
(注意: )
 文件中。
  • Q: 为什么使用 >> 而不是 > ?
  • A: 如果使用的是 > 则表示 命令用于 覆盖原来文件的内容;使用 >> 则表示 命令用于追加到原来文件的尾部。
  • Q: 为什么要添加这个 ros 环境变量到~/.bashrc文件?
    A: 我们要想在终端中使用 ros 相关的命令的话,必须要先添加 ros 的环境变量,就是必须要先执行命令:source /opt/ros/melodic/setup.bash,然后才能使用 ros 相关的命令。所以,每次新打开一个终端,就要执行一次 source /opt/ros/melodic/setup.bash 命令,这样很麻烦。.bashrc 文件是终端的启动文件,我们将这句话添加到启动文件中的效果就是,我们每次新打开一个终端,都会自动执行这句话。所以,直接将这条命令写到 ~/.bashrc 文件里。

2.6 安装 rosinstall

   rosinstall是 ROS 中一个独立分开的常用命令行工具,它可以方便让你通过一条命令就可以给某个 ROS 软件包下载很多源码树。

sudo apt-get install python-rosinstall

2.7 检查你的ROS已经配置好了

一个检查的好方法是确保你已经设置了像ROS_ROOT和ROS_PACKAGE_PATH这样的环境变量,可以通过以下命令查看:

export | grep ROS
U303L:~$ export | grep ROS
declare -x ROSLISP_PACKAGE_DIRECTORIES=""
declare -x ROS_DISTRO="melodic"
declare -x ROS_ETC_DIR="/opt/ros/melodic/etc/ros"
declare -x ROS_MASTER_URI="http://localhost:11311"
declare -x ROS_PACKAGE_PATH="/opt/ros/melodic/share"
declare -x ROS_PYTHON_VERSION="2"
declare -x ROS_ROOT="/opt/ros/melodic/share/ros"
declare -x ROS_VERSION="1"

 或者输入以下指令进行检查:

roswtf
U303L:~$ roswtf
Loaded plugin tf.tfwtf
No package or stack in the current directory
================================================================================
Static checks summary:

No errors or warnings
================================================================================

ROS Master does not appear to be running.
Online graph checks will not be run.
ROS_MASTER_URI is [http://localhost:11311]

注意:如果什么都没有,我们必须对 ROS 进行配置环境变量,才可以在终端中使用 ROS 的相关命令和工具,即:

source /opt/ros/melodic/setup.bash

        【source命令用法:source FileName    作用:在当前bash环境下读取并执行FileName中的命令。
         注:该命令通常用命令“.”来替代。   如:source .bash_rc 与 . .bash_rc 是等效的。】

再进行上面的检查,出现如上结果说明成功。但是我们使用 source 这个 指令来添加环境变量有一个缺点: 它只作用于当前终端,如果我们重新打开一个新的终端,使用 export | grep ROS 命令来查看当前终端上的环境变量我们依然得不到想要的结果,所以就需要上面的2.5 环境设置。

 到这里说明ROS-melodic就安装完成了。接下来,我们要做的事情是:开始ROS基础学习。

2.8卸载melodic

用apt-get方式安装melodic的,卸载使用如下命令:

$ sudo apt-get remove ros-melodic-*

卸载成功的效果:就是/opt/ROS/indigo文件夹被删除

3.学习ROS源码

如果希望基于ROS源代码进行学习,则可以下载完整的ROS源代码,方法如下:

sudo apt-get install python-rosdep python-rosinstall-generator python-rosinstall python-wstool build-essential 
mkdir ~/ros_catkin_ws/ && cd ~/ros_catkin_ws/
rosinstall_generator desktop_full --rosdistro melodic --deps --tar > melodic-desktop-full.rosinstall
wstool init -j8 src melodic-desktop-full.rosinstall 

ROS将使用wstool进行版本管理。如果希望在网络发生中断后可以以断点续传的方式继续下载,那么命令如下:

wstool update -j 8 -t src

至于如何通过ROS源代码学习ROS的更多实现细节,可以在Ubuntu 18.04 LTS下通过安装oepngrok进行浏览,笔者打算在下一篇文章中介绍。

4. 启动小海龟turtlesim

ROS系统自带的小海龟仿真程序turtlesim。

分步骤介绍如下:

4.1 启动节点管理器

为了启动turtlesim,首先运行roscore启动ROS的节点管理器,方法及结果如下:

$ roscore

... logging to /home/simon/.ros/log/6b8e52d4-1597-11ea-ade6-000ec6c8c4f9/roslaunch-bert-2594.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://bert:44267/
ros_comm version 1.14.3


SUMMARY
========

PARAMETERS
 * /rosdistro: melodic
 * /rosversion: 1.14.3

NODES

auto-starting new master
process[master]: started with pid [2604]
ROS_MASTER_URI=http://bert:11311/

setting /run_id to 6b8e52d4-1597-11ea-ade6-000ec6c8c4f9
process[rosout-1]: started with pid [2615]
started core service [/rosout]

roscore会启动一个ROS Master、一个ROS参数服务器和一个名为rosout的日志节点。

ROS Master默认运行于11311端口,如果想指定端口,可参照如下:

roscore -p 11311

4.2 启动ros节点

利用Ctrl+Shift+T快捷键另外打开一个终端,启动turtlesim的节点turtlesim_node,命令如下:

$ rosrun turtlesim turtlesim_node

[ INFO] [1575452194.366400729]: Starting turtlesim with node name /turtlesim
[ INFO] [1575452194.371807393]: Spawning turtle [turtle1] at x=[5.544445], y=[5.544445], theta=[0.000000]

4.3 使用键盘

如果希望小海龟能够移动,可以启动turtlesim的键盘控制节点turtle_teleop_key,利用Ctrl+Shift+T快捷键另外再打开一个终端,输入命令:

$ rosrun turtlesim turtle_teleop_key

Reading from keyboard
---------------------------
Use arrow keys to move the turtle.

在当前终端下,按住方向键即可控制小海龟移动,截图如下:好了,终于可以愉快的玩耍了。

你可能感兴趣的:(VSLAM,深度学习—工具技巧)