赞
踩
机器人开源操作系统软件ROS在10年后, 终于推出全新架构的ROS2,代号“ardent”。中文意思为“热心的美洲鳖”,看来ROS2要从ROS1的“海龟”变成“土鳖”系列了。
与此同时,ROS2的编译系统也换成全新的ament。之前熟悉ROS的知道,ROS最初使用rosbuild,后来换成catkin,换成catkin可以理解,比较比起rosbuild在很多方面要先进很多的,比如支持外部构建,CMake配置文件的自动生成等等。但是catkin也并不完美,针对开发者对catkin缺陷提交的反馈,催生了新一代的编译系统ament。
关于ROS2和ament的特性,网上已经有很多。可参考ROS 2.0设计网址:http://design.ros2.org/,关于ament可参考http://www.guyuehome.com/836。
言归正传,本文主要是详细讲下ROS2从源码开始编译安装过程,因为按网上的一些说明操作,会出现很多问题。
一、环境准备
1) 64位的UbuntuLinux Xenial Xerus 16.04
2) 确保有一个支持UTF-8locate环境。(大部分情况做步骤c)
a) sudo locale-gen en_USen_US.UTF-8
b) sudo update-localeLC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
c) export LANG=en_US.UTF-8
二、开发环境设置
a) 首先确保已将ROS存储库添加到系统中,如果没有:
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver ha.pool.sks-keyservers.net --recv-keys 421C365BD9FF1F717815A3895523BAEEB01FA116
b) 安装GCC,G ++ CMake,Python 3 EmPy包(不碰撞的定制包)和setuptools:
sudo apt-get update
sudo apt-get install git wget
sudo apt-get install build-essential cppcheck cmake libopencv-dev python-empy python3-dev python3-empy python3-nose python3-pip python3-pyparsing python3-setuptools python3-vcstool python3-yaml libtinyxml-dev libeigen3-dev # dependencies for testing
sudo apt-get install clang-format pydocstyle pyflakes python3-coverage python3-mock python3-pep8 uncrustify
# Install argcomplete for command-line tab completion from the ROS2 tools.
# Install from pip rather than from apt-get because of a bug in the Ubuntu 16.04 version of argcomplete
sudo pip3 install argcomplete
# additional testing dependencies from pip (because not available on ubuntu 16.04)
sudo pip3 install flake8 flake8-blind-except flake8-builtins flake8-class-newline flake8-comprehensions flake8-deprecated flake8-docstrings flake8-import-order flake8-quotes pytest pytest-cov pytest-runner
# dependencies for FastRTPS
sudo apt-get install libasio-dev libtinyxml2-dev
c) 如果正在编译Beta-1或更高版本,则还需要为Fast-RTPS安装boost
sudo apt-get install libboost-chrono-dev libboost-date-time-dev libboost-program-options-dev libboost-regex-dev libboost-system-dev libboost-thread-dev
# dependencies for RViz sudo apt-get install libcurl4-openssl-dev libqt5core5a libqt5gui5 libqt5opengl5 libqt5widgets5 libxaw7-dev libgles2-mesa-dev libglu1-mesa-dev qtbase5-dev
d) 注意,RViz的依赖,没有的话会报各种各样的错
# dependencies for RViz sudo apt-get install libcurl4-openssl-dev libqt5core5a libqt5gui5 libqt5opengl5 libqt5widgets5 libxaw7-dev libgles2-mesa-dev libglu1-mesa-dev qtbase5-dev
三、获取ROS2.0代码
创建一个工作区获取源码:
mkdir -p ~/ros2_ws/src cd ~/ros2_ws
wget https://raw.githubusercontent.com/ros2/ros2/release-latest/ros2.repos vcs-import src < ros2.repos
四、编译
cd ~/ros2_ws/
src/ament/ament_tools/scripts/ament.py build --build-tests --symlink-install
注意:如果在编译所有示例时遇到困难,并且这会妨碍成功生成,则可以使用与忽略子树或从工作区中删除文件夹AMENT_IGNORE
相同的方式CATKIN_IGNORE
。举个例子:你想避免安装大型的OpenCV库。那么只需$ touch AMENT_IGNORE
在cam2image
demo目录中将它保留在构建过程之外即可。
可选地构建所有软件包:
src/ament/ament_tools/scripts/ament.py build --build-tests --symlink-install --isolated
之后local_setup.*
从install
/ install_isolated
文件夹中获取源文件
五、运行示例
a) 在一个终端中,输入设置文件,然后运行talker
:
. ~/ros2_ws/install/local_setup.bash
ros2 run demo_nodes_cpp talker
b) 在另一个终端源中安装文件,然后运行listener:
. ~/ros2_ws/install/local_setup.bash
ros2 run demo_nodes_py listener
成功的话,就可以看到talker和listener间的消息了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。