目录
方法1:
添加源
更新源
安装
方法2:
安装踩坑
补充:做多传感器融合、slam需要用到的库
ROS-PCL交互库安装
opencv库
总结
ubuntu22.04未提供ros1的维护,noetic只兼容到20.04,故而需要用源码安装,并且其中存在许多问题。从网络上获取了以下两种方法以及安装踩坑以及补充:
方法1:
AutoLabor 官方编译的一个 ROS Noetic Ninjemys 安装包可以直接使用
参见:
chttps://zhuanlan.zhihu.com/p/679914618
添加源
echo "deb [trusted=yes arch=amd64] http://deb.repo.autolabor.com.cn jammy main" | sudo tee /etc/apt/sources.list.d/autolabor.list
更新源
sudo apt update
安装
sudo apt install ros-noetic-autolabor
利用此方法可以便捷安装noetic。
经测试,该方法确实可以运行roscore和rviz,并实现工作空间的编译,但是运行原有ros代码,会出现诸多依赖问题,例如22.04同样不维护cv_bridge、安装pcl依赖库较为麻烦。总之若想用该方法直接运行开源的SLAM等已有代码工程十分麻烦,仍然需要从源码下载依赖并安装。
方法2:
参见
https://gist.github.com/Meltwin/fe2c15a5d7e6a8795911907f627255e0
此方法直接从源码安装,注意最好有科学上网方法,否则难以下载源码,暂时不知道有无国内源。
按照该链接所述步骤执行即可,下述安装过程中个人记录的问题和值得注意的点。
安装踩坑
- 在步骤1.1中,还需要安装rospkg,rospkg-modules的依赖,建议执行
sudo apt-get install python3-rosdep python3-rosinstall-generator python3-vcstools python3-vcstool build-essential python3-rospkg python3-rospkg-modules
在这里,可能遭遇的问题是python3-catkin-pkg-modules、python3-rosdistro-modules、python3-rosdep-modules等包出现循环依赖等问题导致无法安装,按照系统提示使用“apt –fix-broken install”。若仍无法解决,参考解决ROS 1安装过程中出现的“有未满足的依赖关系”问题_安装ros时缺少依赖关系-CSDN博客
直接在终端强制安装这些包:
sudo dpkg -i –force-overwrite /var/cache/apt/archives/python3-catkin-pkg-modules_1.0.0-1_all.deb
- 在步骤2.1中, 执行
vcs import –input noetic-desktop.rosinstall ./src
时,如果你科学上网的网络不稳定,可能无法一次性把所有包全部下载下来,下一次如果下载包未成功会把之前成功下载的覆盖变成空文件夹。因此建议把每一次下载的src中的文件存下来,然后多次下载获得全部包。
补充:做多传感器融合、slam需要用到的库
-
ROS-PCL交互库安装
提供的ros源码中不包括ROS-PCL交互库:pcl_ros、pcl_msgs、pcl_conversions。不能直接用apt安装,因为它们适配的依然是ros2,若要安装ros-pcl仍要从源码安装。
git clone https://github.com/ros-perception/perception_pcl.git -b melodic-devel
git clone https://github.com/ros-perception/pcl_msgs.git -b noetic-devel
解压后放在src下。
pcl依赖:从https://github.com/ros/geometry2下载noetic-devel分支下的geometry2库,替代noetic_ws/src/geometry2,若未安装bullet,需将test_tf2、tf2_bullet删除。
-
opencv库
ubuntu22.04自带的是opencv4,出现
fatal err: opencv/cv.h: No such file or directory
报错,可以将代码中的#include <oencv/cv.h>替换为#include <opencv2/opencv.hpp>,不过部分工程可能要求特定的opencv版本,如ORB SLAM要求OpenCV 3.0,编译仍可能失败,需要从源码下载安装。
- !你的所有源码的cmakelist都要经过2.1.2的change_cpp.py处理或手动修改CMakelist中的C++版本。
按照上述步骤执行完后,最后添加ros环境配置到~/.bashrc中即可
source <your_dir>/setup.bash
总结
两种方法可按照需求选择,建议开发者选择第二种能处理更多兼容性问题。



