OpenEuler21.03 ROS2打包指南
Posted David_Han008
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenEuler21.03 ROS2打包指南相关的知识,希望对你有一定的参考价值。
前言:做这件事的初衷是为了有一天能够在openeuler上通过yum install ros-xxx来安装ros,想想都觉得很炫酷。
step0: 环境准备
系统环境 OpenEuler21.03
ROS2的版本 ros2-foxy
目前是2021年12月1日,ros2已经到了galactic,关于galactic可以参考
ROS 2 Documentation — ROS 2 Documentation: Galactic documentation
本章用于打包的是ros2的foxy版本,在ubuntu20.04上已经是比较成熟的版本,相关的文档参考:
ROS 2 Documentation — ROS 2 Documentation: Foxy documentation
由于ros2目前还没有相对比较完善的wiki, 因此在这边进行一定的总结
step1: 如何编译ros2的工程
1. 在ros1当中我们使用的catkin进行编译,在ros2当中我们使用colcon进行编译
关于colcon参考的
Bootstrap from source — colcon documentation
$ mkdir colcon-from-source && cd colcon-from-source
$ curl --output colcon.repos https://raw.githubusercontent.com/colcon/colcon.readthedocs.org/main/colcon.repos
$ mkdir src
$ vcs import src < colcon.repos # 这行要等很久
由于vcs感觉需要等很久很久,因此部分的包我已经上传到了gitee上面,大家可以去我的主页上查找
然后使用进行安装
./src/colcon-core/bin/colcon build --paths src/*
跟catkin一样我们需要source环境变量
souce install/local_setup.sh
就可以使用colcon来编译整个项目工程
colcon build
相比于catkin,使用colcon的工程目录为
├── build
│ ├── ament_clang_format
│ ├── ament_clang_tidy
│ ├── ament_cmake
├── install
│ ├── bin
│ ├── COLCON_IGNORE
│ ├── lib
│ ├── local_setup.bash
│ ├── local_setup.ps1
│ ├── local_setup.sh
│ ├── _local_setup_util_ps1.py
│ ├── _local_setup_util_sh.py
│ ├── local_setup.zsh
│ ├── setup.bash
│ ├── setup.ps1
│ ├── setup.sh
│ ├── setup.zsh
│ ├── share
│ └── src
├── log
│ ├── build_2021-11-30_13-28-44
│ ├── build_2021-11-30_13-28-53
│ ├── COLCON_IGNORE
│ ├── latest -> latest_build
│ └── latest_build -> build_2021-11-30_13-28-53
└── src
├── ament
step2: 如何编译ros2的工程源码在哪里?
可以从官网下载,下载ros2.repos,里面有我们需要打包的ros2-foxy所需要的
https://github.com/ros2/ros2/releases
举个例子:
repositories:
ament/ament_cmake:
type: git
url: https://github.com/ament/ament_cmake.git
version: 0.9.9
ament/ament_index:
type: git
url: https://github.com/ament/ament_index.git
version: 1.1.0
ament/ament_lint:
type: git
url: https://github.com/ament/ament_lint.git
version: 0.9.6
ament/ament_package:
type: git
url: https://github.com/ament/ament_package.git
version: 0.9.5
ament/google_benchmark_vendor:
我们可以克隆下来所需要编译的包,然后git checkout 到指定的项目分支上,以为ament_cmake为例子,
git clone https://github.com/ament/ament_cmake.git
cd ament_cmake
git checkout 0.9.9
step3: 打包一个ament练练手
3.1 确定目录
目录结构:其中3rdparty存放pip安装的第三方库,build_tools存放colcon编译工具,workspace/src 存放ros2的源码 workspace/install是我们在obs上编译生成的库和可执行文件
├── 3rdparty
│ ├── argcomplete-1.11.1
│ ├── attrs-21.2.0
│ ├── catkin_pkg-0.4.22
│ ├── coverage-5.4
│ ├── distlib-0.3.3
│ ├── docutils-0.16
│ ├── empy-3.3.4
│ ├── importlib_metadata-3.8.0
│ ├── importlib_metadata-4.8.2
│ ├── iniconfig-1.1.1
│ ├── more-itertools-5.0.0
│ ├── notify2-0.3.1
│ ├── packaging-21.3
│ ├── pluggy-1.0.0
│ ├── py-1.11.0
│ ├── pyparsing-2.4.7
│ ├── pyparsing-3.0.6
│ ├── pytest-6.2.5
│ ├── pytest-cov-3.0.0
│ ├── pytest-repeat-0.9.1
│ ├── pytest-rerunfailures-10.2
│ ├── pytest-runner-5.3.1
│ ├── python-dateutil-2.8.1
│ ├── PyYAML-6.0
│ ├── setuptools-59.3.0
│ ├── setuptools_scm-4.1.2
│ ├── six-1.15.0
│ ├── toml-0.10.2
│ ├── typing_extensions-3.7.4
│ ├── typing_extensions-4.0.0
│ ├── wheel-0.33.0
│ ├── zipp-1.0.0
│ ├── zipp-3.5.1
│ └── zipp-3.6.0
├── build_tools
│ └── colcon
└── workspace
└── src
依赖库去哪里下载呢?
切记要注意库的版本,有的版本比较新的库已经不支持python3 setup.py --user的安装方式了
3.2 整理spec文件
Name: ament
Version: 0.9.9
Release: 1
Summary: This is ROS foxy ament Package
License: Public Domain and Apache-2.0 and BSD and MIT and BSL-1.0
URL: https://github.com/ros-gbp/ament-release/archive/release/foxy/ament
Source0: https://github.com/ros-gbp/ament-release/archive/release/foxy/ament/0.9.9-1.tar.gz
BuildRequires: gcc-c++
BuildRequires: cmake
BuildRequires: python3-devel
BuildRequires: python3-setuptools
%description
This is ROS foxy ament Package.
%prep
%setup
%install
cd 3rdparty/
cd empy-3.3.4/
python3 setup.py install --user
cd ..
cd six-1.15.0/
python3 setup.py install --user
cd ..
cd setuptools_scm-4.1.2/
python3 setup.py install --user
cd ..
cd python-dateutil-2.8.1/
python3 setup.py install --user
cd ..
cd pyparsing-2.4.7/
python3 setup.py install --user
cd ..
cd docutils-0.16/
python3 setup.py install --user
cd ..
cd catkin_pkg-0.4.22/
python3 setup.py install --user
cd ..
#ros2
cd distlib-0.3.3/
python3 setup.py install --user
cd ..
cd attrs-21.2.0
python3 setup.py install --user
cd ..
cd more-itertools-5.0.0
python3 setup.py install --user
cd ..
cd zipp-1.0.0
python3 setup.py install --user
cd ..
cd wheel-0.33.0
python3 setup.py install --user
cd ..
cd toml-0.10.2
python3 setup.py install --user
cd ..
cd importlib_metadata-3.8.0
python3 setup.py install --user
cd ..
cd py-1.11.0
python3 setup.py install --user
cd ..
cd packaging-21.3
python3 setup.py install --user
cd ..
cd iniconfig-1.1.1
python3 setup.py install --user
cd ..
cd pluggy-1.0.0
python3 setup.py install --user
cd ..
cd typing_extensions-3.7.4
python3 setup.py install --user
cd ..
cd pyparsing-3.0.6
python3 setup.py install --user
cd ..
cd pytest-6.2.5
python3 setup.py install --user
cd ..
cd coverage-5.4
python3 setup.py install --user
cd ..
cd pytest-cov-3.0.0
python3 setup.py install --user
cd ..
cd pytest-repeat-0.9.1
python3 setup.py install --user
cd ..
cd pytest-rerunfailures-10.2
python3 setup.py install --user
cd ..
cd pytest-runner-5.3.1
python3 setup.py install --user
cd ..
cd PyYAML-6.0
python3 setup.py install --user
cd ..
cd setuptools-59.3.0
python3 setup.py install --user
cd ..
cd argcomplete-1.11.1
python3 setup.py install --user
cd ..
cd notify2-0.3.1
python3 setup.py install --user
cd ..
cd ..
# for colcon build tools
cd build_tools
./colcon/colcon-core/bin/colcon build --paths colcon/* --merge-install
source install/local_setup.sh
cd ..
# for workspace
cd workspace
colcon build --merge-install
####
# 对install内部的变量名称进行替换
#
####
SRC_PATH=$PWD/install
DST_PATH=/opt/ros/foxy
sed -i "s:$SRC_PATH:$DST_PATH:g" `grep -rIln "$SRC_PATH" install/*`
####
# install
#
####
mkdir -p %buildroot/opt/ros/foxy/
cp -r install/* %buildroot/opt/ros/foxy/
%files
%defattr(-,root,root)
/opt/ros/foxy/*
%changelog
* Thu 11-30-2021 openEuler Buildteam <hanhaomin008@126.com>
- Package init
colcon build --merge-install 可以达到 catkin_make_isolated --install 一样的效果
3.3 去obs上编译
相关去osb编译的博客参考
openeuler 下载已经打包好的rpm包,并验证功能_DavidHan008-CSDN博客
obs的官网
最后:
相关的ament示例的源码文件和spec文件已经上传到gitee,欢迎大家clone
参考博客
ubuntu16.04 ros2 Crystal Colcon 源码安装教程_一个摩羯座的程序猿 的 知识笔记-CSDN博客
以上是关于OpenEuler21.03 ROS2打包指南的主要内容,如果未能解决你的问题,请参考以下文章
(openEuler21.03-Centos7-x86)yum安装php+nginx—配置nginx解析php
openEuler 21.03 特性解读 | 毕昇 JDK8 支持鲲鹏硬件加解密特性详解和使用介绍