前提:首先完成ubuntu20.04 ros-neotic的安装
参考官方安装过程
安装步骤
1、ROS Noetic版本使用如下命令安装
sudo apt-get update
sudo apt-get install -y python3-wstool python3-rosdep ninja-build stow
2、创建工作空间catkin_ws
mkdir catkin_ws
cd catkin_ws
wstool init src
wstool merge -t src https://raw.githubusercontent.com/cartographer-project/cartographer_ros/master/cartographer_ros.rosinstall
wstool update -t src
此步骤中也可以收到github下载对应功能包,放到catkin_ws/src下
ceres-solver
cartographer
cartographer_ros
3、安装cartographer_ros 依赖
sudo rosdep init //已经完成ros安装并执行过改行可以不执行该行
rosdep update
rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y
问题一:
sudo rosdep init
出现当前错误时
ERROR: cannot download default sources list from:
https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list
Website may be down.
以下方法摘自Ubuntu20.04-ROS-Noetic安装教程及python兼容性解决办法
3.1 方案1(自测可以解决)
a. 安装python依赖
sudo apt-get install python3-rosdep
sudo apt-get install python3-rosinstall
b. 下载依赖包
cd ~
git clone https://github.com/ros/rosdistro.git
c.修改20-default.list(xxx改为自己的用户名)
sudo gedit /home/xxx/rosdistro/rosdep/sources.list.d/20-default.list
替换为:
# os-specific listings first
yaml file:///home/xxx/rosdistro/rosdep/osx-homebrew.yaml osx
# generic
yaml file:///home/xxx/rosdistro/rosdep/base.yaml
yaml file:///home/xxx/rosdistro/rosdep/python.yaml
yaml file:///home/xxx/rosdistro/rosdep/ruby.yaml
gbpdistro file:///home/xxx/rosdistro/releases/fuerte.yaml fuerte
# newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead
d.修改sources_list.py文件
sudo gedit /usr/lib/python3/dist-packages/rosdep2/sources_list.py
将DEFAULT_SOURCES_LIST_URL = ‘https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list’
修改为:
DEFAULT_SOURCES_LIST_URL = 'file:///home/xxx/rosdistro/rosdep/sources.list.d/20-default.list'
e. 修改__init__.py文件
sudo gedit /usr/lib/python3/dist-packages/rosdistro/__init__.py
将DEFAULT_INDEX_URL = ‘https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml’
修改为:
DEFAULT_INDEX_URL = 'file:///home/xxx/rosdistro/index-v4.yaml'
f. 修改rep3.py 文件
sudo gedit /usr/lib/python3/dist-packages/rosdep2/rep3.py
将REP3_TARGETS_URL = ‘https://raw.githubusercontent.com/ros/rosdistro/master/releases/targets.yaml’
修改为:
REP3_TARGETS_URL = 'file:///home/xxx/rosdistro/releases/targets.yaml'
g. 完成依赖安装
sudo rosdep init
rosdep update
3.2 方案2(未测试)
a.安装rosdepc
sudo apt-get install python3-pip
pip install rosdepc
b. pip加速
cd ~
mkdir .pip
sudo vim ~/.pip/pip.conf
粘贴以下内容:
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple/
[install]
trusted-host = pypi.tuna.tsinghua.edu.cn
重启电脑sudo reboot,重启才能加载刚刚的rosdepc
使用rosdepc代替rosdep完成依赖安装,以后每次使用rosdep都替换
sudo rosdepc init
rosdepc update
问题二:
使用`rosdep install --from-paths src --ignore-src --rosdistro=noetic -y
出现如下错误提示:
ERROR: the following packages/stacks could not have their rosdep keys resolved
to system dependencies:
cartographer: [libabsl-dev] defined as "not available" for OS version [focal]
解决方案摘自ROS(Noetic) Cartographer 安装一遍过参考
分析:Ubuntu 20.04 系统不支持包 libabsl-dev
修正:在文件 ws_carto/src/cartographer/package.xml 下修改,注释掉 libabsl-dev 并重新执行指令。
<depend>libboost-iostreams-dev</depend>
<depend>eigen</depend>
<!-- <depend>libabsl-dev</depend> -->
<depend>libcairo2-dev</depend>
<depend>libceres-dev</depend>
<depend>libgflags-dev</depend>
<depend>libgoogle-glog-dev</depend>
<depend>lua5.2-dev</depend>
<depend>protobuf-dev</depend>
4、安装abseil-cpp 和protoc库
src/cartographer/scripts/install_abseil.sh
src/cartographer/scripts/install_proto3.sh
5、 编译安装
catkin_make_isolated --install --use-ninja
编译过程遇到问题可以查看cartographer问题处理
6、配置环境变量
cd catkin_ws
source install_isolated/setup.bash