参考博客:https://blog.youkuaiyun.com/David_Han008/article/details/106966653
1 在树莓派上安装openeuler
按照罗老师的教程配置好了部分的ROS环境
链接地址:https://gitee.com/yunxiangluo/ros_openeuler?_from=gitee_search
其中用来安装pcl-ros的源fedora29的好像用不了了,我查找到的官方解释如下:
Fedora 29 及更旧版本已不再受官方支持,Fedora 官方已将 Fedora 29 及更旧版本的软件仓库从主镜像中移除,并转移至了 archive 镜像中。故Fedora 29 及更旧版本无法使用 TUNA 的镜像。请使用默认配置文件,以使
yum
/dnf
自动获取可用的镜像源。
不过好在我们不需要安装整个ros,只是需要打包catkin_make而已,所以这个可以跳过,按照罗老师的教程配置好相关环境即可。
2 下载catkin源码包
2.1 将ros-comm所包含的所有的pkg的url链接写入到melodic-ros_comm.rosinstall文件当中
在一个标准的ros工作空间下执行如下指令:
rosinstall_generator ros_comm --rosdistro melodic --deps --tar > melodic-ros_comm.rosinstall
2.2 根据melodic-ros_common.rosinstall文件当中的下载链接,将ros-comm当中的源码下载到src目录当中
wstool init -j8 src melodic-ros_comm.rosinstall
这个时候如果直接编译,会遇到各种依赖和库没有编译的情况,只留下catkin、CMakeLists.txt、cmake_modules即可:
然后切换到src的同级目录下,执行如下命令进行编译:
./src/catkin/bin/catkin_make
在编译的过程中可能会遇到一些依赖库没有安装的情况,使用pip安装即可;看到编译成功即可开始下一步。
3 catkin打包成rpm
3.1 rpm准备
安装rpmbuild工具
dnf install rpm-build
在root路径下构建准备目录
mkdir -p ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
3.2 源码准备
打包catkin所需的依赖库总共有7个,在pip官网下载.tar.gz的源码
在与catkin源码同级的目录(也就是工作空间的src目录)下新建一个3rdparty文件夹,将上述7个包解压后放进去,整个目录层级如下:
新建一个catkin-0.7.28文件夹,将整个src目录拖进去,然后使用如下指令压缩:
tar zcvf catkin-0.7.28.tar.gz catkin-0.7.28/
将压缩包拷贝至rpmbuild的源码目录下:
cp catkin-0.7.28.tar.gz /root/rpmbuild/SOURCES
3.3 spec文件编写
在SPECS目录下,新建一个catkin.spec文件,写入如下指令:
Name: catkin
Version: 0.7.28
Release: 1
Summary: This is ROS melodic Catkin Package
License: GPL
URL: https://github.com/ros-gbp/catkin-release/archive/release/melodic/catkin
Source0: https://github.com/ros-gbp/catkin-release/archive/release/melodic/catkin-0.7.28.tar.gz
BuildRequires: gcc-c++
BuildRequires: cmake
BuildRequires:python-devel
BuildRequires:python-setuptools
%description
This is ROS melodic Catkin Package include catkin_make, catkin_init_workspace, and so on.
%prep
echo perp_step
pwd
%setup
pwd
%install
rm -rf %{buildroot}
echo install_step
pwd
mkdir -p %{buildroot}/usr/bin/
echo 999
cd src/3rdparty/
cd empy-3.3.4/
python setup.py install --user
cd ..
cd six-1.15.0/
python setup.py install --user
cd ..
cd setuptools_scm-4.1.2/
python setup.py install --user
cd ..
cd python-dateutil-2.8.1/
python setup.py install --user
cd ..
cd pyparsing-2.4.7/
python setup.py install --user
cd ..
cd docutils-0.16/
python setup.py install --user
cd ..
cd catkin_pkg-0.4.23/
python setup.py install --user
cd ..
cd ..
pwd
cd ..
pwd
./src/catkin/bin/catkin_make_isolated
pwd
install -m 777 src/catkin/bin/catkin_make %{buildroot}/usr/bin/catkin_make
install -m 777 src/catkin/bin/catkin_find %{buildroot}/usr/bin/catkin_find
install -m 777 src/catkin/bin/catkin_make_isolated %{buildroot}/usr/bin/catkin_make_isolated
install -m 777 src/catkin/bin/catkin_init_workspace %{buildroot}/usr/bin/catkin_init_workspace
install -m 777 src/catkin/bin/catkin_topological_order %{buildroot}/usr/bin/catkin_topological_order
install -m 777 src/catkin/bin/catkin_test_results %{buildroot}/usr/bin/catkin_test_results
echo ==========================================
echo %{buildroot}
mkdir -p %{buildroot}/opt/ros/melodic/
cp -r devel_isolated/* %{buildroot}/opt/ros/melodic/
%files
/opt/ros/melodic/*
/usr/bin/*
3.4 打包
在SPECS目录下执行如下命令:
rpmbuild -ba catkin.spec
打包过程中,在安装setuptools_scm-4.1.2库时可能会遇到如下报错:
将setuptools_scm-4.1.2下方的 python setup.py install --user 改为 python3 setup.py install --user ,即使用python3安装。
打包成功后在 /root/rpmbuild/RPMS/aarch64 目录下会有一个 catkin-0.7.28-1.aarch64.rpm 文件,这个就是我们最终想要的catkin的rpm包了。
4 验证catkin功能
使用如下指令安装前一步骤中生成的rpm包:
rpm -ivh catkin-0.7.28-1.aarch64.rpm
进入 /opt/ros/melodic 目录下,出现如下目录则证明安装完毕了
功能验证
source /opt/ros/melodic/setup.bash
mkdir -p catkin_ws/src
cd catkin_ws/src/
cd ..
catkin_make
验证通过,catkin打包成功!