分享

ROS 安装详细教程

 netouch 2023-05-23 发布于北京

ROS 安装详细教程 —— Ubuntu22.0.4 LTS 安装

ROS 简介

官方文档对 ROS 的介绍如下:

The Robot Operating System (ROS) is a set of software libraries and tools that help you build robot applications. From drivers to state-of-the-art algorithms, and with powerful developer tools, ROS has what you need for your next robotics project. And it's all open source.

简单来说 ROS 就是一款开源的机器人操作系统,可以实现在 Linux 或 Dock 下安装并进行使用。这里我们选择在 Ubuntu 22.04LTS 下进行安装。

版本选择

ROS 目前主要支持 Linux 和 MacOS 系统,新发布的 ROS2 也支持 Windows 和 RTOS 系统。

对 ROS 兼容性最好的当属 Ubuntu 系统。从 ROS 发布以来,每版的 Ubuntu 系统版本都有与之对应 ROS 版本的,每一版 ROS 都有其对应版本的 Ubuntu 版本,切记不可随便装。

ROS 和 Ubuntu 之间的版本对应关系如下:

Ubuntu ROS 1.0 ROS 2.0
16.04 LTS Kinetic LTS Ardent
18.04 LTS Melodic LTS Dashing LTS
20.04 LTS Noetic LTS Foxy LTS
22.04 LTS Noetic Ninjemys Humble Hawksbill

我们使用的系统是 ubuntu 22.04 LTS ,所以这里选择对应的版本

安装过程

由于 ROS1 对 Ubuntu 的支持只到 20.04,如果要在 22.04 上安装 ROS1 只能从源码编译安装

ROS1 源码编译安装

添加源

由于 ROS1 官网不支持,因此只能添加 ROS2 的源,这里都是通用的:

sudo apt update && sudo apt install curl

sudo curl -sSL https://raw./ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages./ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

sudo apt update

如果在进行第二部报错如下:

Failed to connect to raw. port 443: Connection……

我们需要在域名解析查询网站上查询对应的 ip ,然后添加到 hosts 中,域名解析网站推荐:http:///?t=1675223502

 sudo gedit /etc/hosts

添加后如下:

这样我们再次执行就不会报错了

安装依赖项

安装编译依赖项
sudo apt-get install python3-rosdep python3-rosinstall-generator python3-vcstools python3-vcstool build-essential

sudo pip3 install -U rosdep rosinstall_generator vcstool

sudo pip3 install --upgrade setuptools

sudo apt install build-essential

sudo apt install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev

sudo apt install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
安装 rosdep 依赖

rosdep 安装依赖,因为 ROS1 官网不支持 Ubuntu22.04,所以每个依赖项的手动安装:

sudo apt-get install puthon3-pip

sudo apt-get install python3-rosdep python3-rosinstall-generator python3-vcstools python3-vcstool build-essential

sudo pip3 install -U rosdep rosinstall_generator vcstool

sudo pip3 install --upgrade setuptools
源码编译

首先新建 catkin workspace 并定位到对应目录下:

mkdir ~/ros_catkin_ws
cd ~/ros_catkin_ws

下面我们就可以开始拉取源码:

rosinstall_generator desktop --rosdistro noetic --deps --tar > noetic-desktop.rosinstall
mkdir ./src
vcs import --input noetic-desktop.rosinstall ./src

vcs import 这一步因为代理的原因大概率会失败, 直接替换 noetic-desktop.rosinstall 中所有的 github.com 为 kgithub.com ,然后再次执行

错误会显示:EEEEEEE……

成功会显示:…………

在修改后再次运行即可

下面我们手动安装 ROS Noetic 依赖项

sudo apt install libboost-all-dev uuid-dev python3-nose google-mock libgtest-dev libbz2-dev libgpgme-dev libssl-dev python3-coverage libboost-program-options-dev python3-psutil python3-opengl python3-pygraphviz python3-pydot qt5-qmake sbcl libapr1-dev libaprutil1-dev libboost-regex-dev liblog4cxx-dev python3-matplotlib libpyside2-dev libshiboken2-dev pyqt5-dev python3-pyqt5 python3-pyqt5.qtsvg python3-pyside2.qtsvg python3-sip-dev shiboken2 lm-sensors graphviz python3-paramiko python3-pycryptodome python3-gnupg python3-defusedxml python3-pyqt5.qtopengl libcurl4-openssl-dev libpoco-dev libogre-1.9-dev libassimp-dev libogre-1.9.0v5 libyaml-cpp-dev libgl1-mesa-dev libglu1-mesa-dev libqt5opengl5 libqt5opengl5-dev libopencv-dev python3-opencv python3-pykdl tango-icon-theme liborocos-kdl-dev libtinyxml-dev libtinyxml2-dev liburdfdom-headers-dev python3-numpy python3-empy libboost-filesystem-dev libboost-thread-dev python3-pygraphviz python3-pygraphviz python3-mock libboost-date-time-dev libboost-system-dev liburdfdom-dev libboost-chrono-dev libboost-dev libqt5core5a libqt5gui5 libqt5widgets5 qtbase5-dev  libconsole-bridge-dev liblz4-dev python3-pyqt5.qtwebkit exfatprogs

这里时间会很长,我们需要耐心等待,等安装完成我们就可以进行最后一部,编译A:

./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python3

注意:在运行当前命令之前需要安装 cmake ,否则会报错

如果出现 rosconsole 有关报错,就在 github 中拉取 rosconsole 的源码,切到 concise_output_roso 分支,覆盖到 ~/ros_catkin_ws/src 下即可,github 地址如下:rosconsole 源码 github 官方地址

如果出现 shared_mutex 有关报错,修改 /usr/include/log4cxx/boost-std-configuration.h 中的如下部分:

#define STD_SHARED_MUTEX_FOUND 1
#define Boost_SHARED_MUTEX_FOUND 0

改为以下代码即可:

#define STD_SHARED_MUTEX_FOUND 0
#define Boost_SHARED_MUTEX_FOUND 1

这样我们就可以成功编译

最后 source 环境变量就可以愉快的使用 ROS Noetic 了~

ROS2 安装

安装 ROS2 ,这里根据系统版本选择 Humble Hawksbill 系统进行安装

设置编码

安装代码如下:

sudo apt update
sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8

只有我们设置为 UTF-8 的英文编码才能正常安装运行于显示,设置后显示如下:

添加镜像源

## 通过检查此命令的输出,确保已启用Ubuntu Universe存储库。
apt-cache policy | grep universe

输出应如下:

若没有看到像上面这样的输出行,依次执行如下命令:

sudo apt install software-properties-common
sudo add-apt-repository universe

这里的命令就是添加 apt 软件源,这里会基本添加好所有的国内的 apt 软件源

然后继续执行上面的命令即可,在全部命令执行成功后,执行如下命令:

## 继续执行如下命令:
sudo apt update && sudo apt install curl gnupg lsb-release
sudo curl -sSL https://raw./ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages./ros2/ubuntu $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

这里如果出现如下界面:

就需要执行如下命令:

sudo rm /var/chche/apt/archives/lock
sudo rm /var/lib/dpkg/lock-frontend  #注意自己无法获得锁的路径
sudo apt install -y gcc nasm

如果报错:ubuntu curl: (56) Recv failure: 连接被对方重设,说明已有程序占用该端口,我们直接重启即可

我们把所有的环境准备做好,就可以开始安装 ROS2 了

安装 ROS2

sudo apt update
sudo apt upgrade
## 推荐桌面版,比较推荐。
sudo apt install ros-humble-desktop
## 安装时间可能较长,安心等待。

在我们安装好之后,需要设置以下环境变量:

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

到此,我们已经完整安装了 ROS2 ,我们就可以直接使用了

示例测试

ROS1 示例测试

运行 roscore 进行测试,

如果显示为找到相关命令,则需要手动安装如下:

sudo apt install python3-roslaunch

如果出现报错如下:

RLException: Invalid <param> tag: Cannot load command parameter [rosversion]: command [['rosversion', 'roslaunch']] returned with code [1]. 

Param xml is <param name="rosversion" command="rosversion roslaunch"/>
The traceback for the exception was written to the log file

则需要重新执行如下命令:

source ~/ros_catkin_ws/install_isolated/setup.bash

如果出现如下报错:

ERROR: cannot launch node of type [rosout/rosout]: rosout
ROS path [0]=/home/ppqppl/ros_catkin_ws/install_isolated/share/ros
ROS path [1]=/home/ppqppl/ros_catkin_ws/install_isolated/share
RLException: failed to start core service [/rosout]
The traceback for the exception was written to the log file

这个错误,一般原因是由于没有 source bashrc

因此工作空间使用如下命令:

source ~/.bashrc

ROS2 示例测试

示例一:通信测试

首先我们来测试以下 ROS2 最为重要的底层通信系统 DDS 是否正常,我们启动一个终端并通过命令新建一个数据的发布者节点:

ros2 run demo_nodes_cpp talker

接下来,在这个终端不关闭进程的情况下,打开第二个终端,通过以下命令启动一个数据的订阅者节点:

ros2 run demo_nodes_py listener

这里可以看出来,我们的 Hello World 字符串在两个终端中正常传输,说明通信系统没有问题

示例二:小海龟仿真测试

这里我们需要用到两个终端,分别使用如下命令:

# 终端一
ros2 run turtlesim turtlesim_node
# 终端二
ros2 run turtlesim turtle_teleop_key

第一句指令将启动一个蓝色背景的海龟仿真器,第二句指令将启动一个键盘控制节点,在该终端中点击键盘上的“上下左右”按键,就可以控制小海龟运动了

参考资料

  1. Ubuntu 22.04源码编译安装ROS Noetic

  2. ubuntu22.04安装ROS2 详细教程

  3. ros动态安装无法处理包'opencv3'


__EOF__

  • 本文作者: ppqppl
  • 本文链接: https://www.cnblogs.com/ppqppl/articles/17004159.html
  • 关于博主: 评论和私信会在第一时间回复。或者直接私信我。
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
  • 声援博主: 如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。 
    • 本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
      转藏 分享 献花(0

      0条评论

      发表

      请遵守用户 评论公约

      类似文章 更多