机器人开源操作系统软件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在cam2imagedemo目录中将它保留在构建过程之外即可。

可选地构建所有软件包:

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间的消息了。

---------------------  
作者:seacracker  
来源:CSDN  
原文:https://blog.csdn.net/seacracker/article/details/79495651?utm_source=copy  
版权声明:本文为博主原创文章,转载请附上博文链接!

[转] ROS2源码编译和安装的更多相关文章

  1. Ubuntu 环境 TensorFlow (最新版1.4) 源码编译、安装

    Ubuntu 环境 TensorFlow 源码编译安装 基于(Ubuntu 14.04LTS/Ubuntu 16.04LTS/) 一.编译环境 1) 安装 pip sudo apt-get insta ...

  2. redhat6.3下源码编译方式安装最新版git

    在linux下安装git,通过yum方式安装的不是最新版本. 要替换最新版需要以下操作. 1.安装依赖包 # yum install curl-devel expat-devel gettext-de ...

  3. 源码编译、安装net-snmp的方法和遇到的问题

    本文参考地址:http://blog.163.com/qiushuhui1989@126/blog/static/270110892014119113421364/ 1. 源码下载 # wget ht ...

  4. centos7下源码编译方式安装httpd

    前言 Apache至少需要apr.apr-util.pcre组件的支持. APR(Apache portable Run-time libraries,Apache可移植运行库)的目的如其名称一样,主 ...

  5. Linux环境下levelDB源码编译与安装

    1.下载源码并编译 git clone https://github.com/google/leveldb.git cd leveldb //编译源码的时候需要安装cmake,并且版本需要大于3.9, ...

  6. Spark系列(一)Spark1.0.0源码编译及安装

    最近想对自己学的东西做些回顾,想到写博客是个不错的方式,方便他人也有利自己,刚开始写不足之处大家多担待. 编译前需要安装JDK1.6以上.scala.Maven.Ant.hadoop2.20 如下图( ...

  7. TensorFlow Python3.7环境下的源码编译(二)安装配置

    源代码树的根目录中包含了一个名为 configure 的 bash 脚本. $ ./configure 接下来,配置系统会给出各种询问,以确认编译时的配置参数.   一.重要参数解释 Please s ...

  8. Ubuntu 16.04上源码编译和安装pytorch教程,并编写C++ Demo CMakeLists.txt | tutorial to compile and use pytorch on ubuntu 16.04

    本文首发于个人博客https://kezunlin.me/post/54e7a3d8/,欢迎阅读最新内容! tutorial to compile and use pytorch on ubuntu ...

  9. 64位CentOS源码编译方式安装wine

    说明:本文仅作本人笔记的之用,仅供参考.可能因不同环境而不同. 1. 从官网下载最新版的wine-1.6.2.tar.gz 2. 安装相关的包(这里是我安装的,可能由于不同系统已经安装的包不同而不一样 ...

随机推荐

  1. Linux 安装vsftpd和ftp客户端

    1.下载安装包:ftp-0.17-54.el6.x86_64.zip和vsftpd-2.2.2-11.el6_4.1.x86_64.zip 可以直接在Linux底下用yum install vsftp ...

  2. Excel提取设定的多个关键字段

    从一段文字中,提取事先设定的关键字段: 在M2单元格输入下列公式: =IFERROR(IF(FIND(O$2,Q2),O$2&" "),"")& ...

  3. Redis setnx命令 分布式缓存

    setnx命令 将 key 的值设为 value,当且仅当 key 不存在. 若给定的 key 已经存在,则 SETNX 不做任何动作. SETNX 是SET if Not eXists的简写. re ...

  4. 《温故而知新》JAVA基础八

    集合接口与泛型 定义: 集合接口会操作一系列相同属性数据的对象类型的数据结构,类似于数组,但是相对于数组来说更显得高端大气 集合的接口分为Collention和Map两大类,不直接操作,而是通过子类的 ...

  5. git pull代码冲突。怪异问题,了解一下

    当远程仓库代码与本地代码产生冲突,无法 pull,且决定放弃本地代码的时候. 或者, 碰见我这种不知道什么问题的情况, pull 成功了,但是远程仓库代码和本地代码竟然也不一样. 天呐,网管常规操作, ...

  6. Linux ssh下实现免密码登录

    1.Linux 生成密钥 ssh-keygen -t rsa 进入“.ssh”会生成以下几个文件 id_rsa : 生成的私钥文件 id_rsa.pub : 生成的公钥文件 know_hosts : ...

  7. C#退出程序方法分类

    1.this.Close();   只是关闭当前窗口,若不是主窗体的话,是无法退出程序的,另外若有托管线程(非主线程),也无法干净地退出:

  8. 在ionic中使用短信验证码倒计时

    页面上 <button class="code" (click)="getCode()" [disabled]="!verifyCode.dis ...

  9. 以太坊钱包开发系列4 - 发送Token(代币)

    以太坊去中心化网页钱包开发系列,将从零开始开发出一个可以实际使用的钱包,本系列文章是理论与实战相结合,一共有四篇:创建钱包账号.账号Keystore文件导入导出.展示钱包信息及发起签名交易.发送Tok ...

  10. selenium自动加载各个浏览器插件

    在自动化测试过程中,通过selenium启动浏览器时,可能需要加载插件(如测试用的firebug.或产品中要求必须添加某插件等).读取用户数据(自己浏览器的配置文件/别人直接给的浏览器配置文件).设置 ...