Ubuntu18.04安装ROS melodic下面安装Cartographer,cartographer_ros,ceres-solver遇到的问题与解决方案
2020年12月12日 亲测有效!!!
#Ubuntu18.04ROS melodic安装cartographer,cartographer_ros,ceres-solver
注意:这里是18.04 ROS melodic的下载cartographer方法
不是16.04的kinetic 大概应该是一样的安装与编译的方法 只是在编译出prof不一样的方法
先创建工作环境
1、安装工具
$ sudo apt-get update
$ sudo apt-get install -y python-wstool python-rosdep ninja-build stow
2、初始化工作空间(创建工作空间)
$ mkdir -p ~/carto_ws
$ cd carto_ws
$ wstool init src
3、加入cartographer、cartographer_ros、ceres-solver的功能包并更新依赖
$ wstool merge -t src https://raw.githubusercontent.com/cartographer-project/cartographer_ros/master/cartographer_ros.rosinstall
$ wstool update -t src
!!!注意:
如果你要添加ceres-solver;如果你输入了$ wstool update -t src也没事,克隆完cartographer,cartographer_ros,在重新在添加ceres-solver,直接跳到到博主后面去安装ceres-solver,进行编译进行.
方法一:
$ cd carto_ws/src
获取源码:$ wget ceres-solver.org/ceres-solver-1.13.0.tar.gz
2、解压:$ tar xvf ceres-solver-1.13.0.tar.gz
3、切换到源目录:$ cd ceres-solver-1.13.0
4、编译:$ mkdir build
$ cd build
$ cmake …
$ make
5、安装:
$sudo make install
$ cd ~/carto_ws
$ sudo rosdep init
$ rosdep update
$ rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y
使用需要使用此脚本手动安装的abseil-cpp库,在carto_ws路径下输入:
src/cartographer/scripts/install_abseil.sh
$ catkin_make_isolated --install --use-ninja
$ echo source install_isolated/setup.bash
以下是博主遇到的问题与解决方法.
1.下面是添加ceres-solver的编译的包进来
注意:添加的版本一定是Ceres-solver-1.13.0,不然会出现博主后面的报错的情况.博主下面使用的Ceres-solver-1.14.0报错讲解情况,后面是博主添加报错的步骤与解决情况
$
sudo gedit /home/ros/carto_ws/src/.rosinstall
2.可以手动添加下载(克隆)ceres-solver网址:
- git:
local-name: ceres-solver
uri: https://github.com/ceres-solver/ceres-solver.git
version: master
或者复制下面全面替换你的/home/ros/carto_ws/src/.rosinstall文件
# THIS IS AN AUTOGENERATED FILE, LAST GENERATED USING wstool ON 2020-12-12
- git:
local-name: cartographer
uri: https://github.com/cartographer-project/cartographer.git
version: master
- git:
local-name: cartographer_ros
uri: https://github.com/cartographer-project/cartographer_ros.git
version: master
- git:
local-name: ceres-solver
uri: https://github.com/ceres-solver/ceres-solver.git
version: master
$ wstool update -t src
(这里需要小漫长的等待的过程,说明你距离安装成功又进了一步)
安装完成之后出现运行
4安装依赖并下载cartographer相关的功能包
需要安装cartographer_ros依赖项。首先,我们使用安装所需的包。如果自安装 ROS 以来已执行该命令,则命令"sudo rosdep init"将打印错误。(可以忽略此错误)
$ sudo rosdep init
$ rosdep update
但是我这个人要求完美,遇到问题就喜欢干他。
在安装18.04 ROS meldioc系统的时候,很多人都掉进这个坑,博主也不例外,有的人说,用了手机开热点,就能解决问题。还有的人说,开热点移动解决不了,换了电信就解决了,其实,说白了就是网络信号的问题;博主连接学校的校园WiFi搞定的,多输入几次 $rosdep update
最终还是解决问题,如果你们没搞定,可以忽略。不影响后面操作。
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
$ sudo gedit /etc/hosts
在文件尾部添加:
151.101.84.133 raw.githubusercontent.com
保存退出就行,如果还出现,多次输入$ sudo rosdep init
就能解决这个问题
如果出现下面的报错,产生了相同的文件20-default.list,二者发生冲突,用下面这条命令删除一个进行了
$ sudo rm /etc/ros/rosdep/sources.list.d/20-default.list
ERROR: default sources list file already exists:
/etc/ros/rosdep/sources.list.d/20-default.list
Please delete if you wish to re-initialize
后再重新运行命令$ sudo rosdep init
,就成功解决后出现下面的问题,直接输入rosdep update
。
Wrote /etc/ros/rosdep/sources.list.d/20-default.list
Recommended: please run
rosdep update
$rosdep update
如果出现下面的情况,重复输入
$rosdep update
就可以解决问题了
reading in sources list data from /etc/ros/rosdep/sources.list.d
Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml
ERROR: error loading sources list:
('The read operation timed out',)
成功实现的图片
$ rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y
使用需要使用此脚本手动安装的abseil-cpp库,在carto_ws路径下输入:
src/cartographer/scripts/install_abseil.sh
!!!注意别又掉坑哈!!!
只有 Ubuntu 16 / ROS Kinetic才输入下面的这条指令: src/cartographer/scripts/install_proto3.sh
但是博主是18.04Ubuntu ROS melodic系统,所以16.04 Ubuntu 的小伙伴注意了!!!
由于版本冲突,您可能需要使用:
$ sudo apt-get remove ros-${ROS_DISTRO}-abseil-cpp
5、编译并安装
$ catkin_make_isolated --install --use-ninja
会出现以下问题:
c++: internal compiler error: 已杀死 (program cc1plus)
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-7/README.Bugs> for instructions.
[11/43] Building CXX object CMakeFiles/cartographer_ros.dir/cartographer_ros/msg_conversion.cc.o
ninja: build stopped: subcommand failed.
<== Failed to process package 'cartographer_ros':
Command '['/home/ros/carto_ws/install_isolated/env.sh', 'ninja', '-j2', '-l2']' returned non-zero exit status 1
Reproduce this error by running:
==> cd /home/ros/carto_ws/build_isolated/cartographer_ros && /home/ros/carto_ws/install_isolated/env.sh ninja -j2 -l2
Command failed, exiting.
<font color="#729FCF"><b>==></b></font><b> Building with env: '/home/ros/carto_ws/install_isolated/env.sh'</b>
build.ninja exists, skipping explicit cmake invocation...
<font color="#729FCF"><b>==></b></font><b> ninja build.ninja</b> <font color="#555753"><b>in</b></font> '<b>/home/ros/carto_ws/build_isolated/ceres-solver/install</b>'
ninja: no work to do.
<font color="#729FCF"><b>==></b></font><b> ninja -j2 -l2</b> <font color="#555753"><b>in</b></font> '<b>/home/ros/carto_ws/build_isolated/ceres-solver/install</b>'
[1/5] Building CXX object examples/CMakeFiles/nist.dir/nist.cc.o
FAILED: examples/CMakeFiles/nist.dir/nist.cc.o
/usr/bin/c++ -DCERES_EXPORT_INTERNAL_SYMBOLS -DGFLAGS_IS_A_DLL=0 -Iconfig -I/home/ros/carto_ws/src/ceres-solver/include -isystem /usr/include/eigen3 -Wmissing-declarations -Wno-unknown-pragmas -Wno-sign-compare -Wno-unused-parameter -Wno-missing-field-initializers -O3 -DNDEBUG -std=gnu++14 -MD -MT examples/CMakeFiles/nist.dir/nist.cc.o -MF examples/CMakeFiles/nist.dir/nist.cc.o.d -o examples/CMakeFiles/nist.dir/nist.cc.o -c /home/ros/carto_ws/src/ceres-solver/examples/nist.cc
c++: internal compiler error: 已杀死 (program cc1plus)
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-7/README.Bugs> for instructions.
ninja: build stopped: subcommand failed.
<font color="#EF2929"><b><==</b></font> Failed to process package '<font color="#729FCF"><b>ceres-solver</b></font>':
Command '['/home/ros/carto_ws/install_isolated/env.sh', 'ninja', '-j2', '-l2']' returned non-zero exit status 1
<font color="#CC0000">Reproduce this error by running:</font>
<font color="#8AE234"><b>==> </b></font>cd /home/ros/carto_ws/build_isolated/ceres-solver && /home/ros/carto_ws/install_isolated/env.sh ninja -j2 -l2
试过很多方法,更改G++版本,使得G++版本更高了,或者使用ceres-solver.tar文件均发生该错误,均无法解决。原来是博主在前面Ubuntu18.04安装的是Ceres-solver-1.14.0-版本,后来直接下载Ceres-solver-1.13.0版本,安装和编译成功了
1.先到carto_ws删掉把bulid_isolated,devel_isolated,inatall_isolated这三个文件.删除前:
删除后:
2.再到carto_ws/src把下面删除ceres-solver这个文件
删除后:
$ cd ~/carto_ws/src
获取源码:$ wget ceres-solver.org/ceres-solver-1.13.0.tar.gz
2、解压:$ tar xvf ceres-solver-1.13.0.tar.gz
3、切换到源目录:$ cd ceres-solver-1.13.0
4、编译:$ mkdir build
$ cd build
$ cmake …
$ make
5、安装:$sudo make install
$ cd ~/carto_ws
$ catkin_make_isolated --install --use-ninja
$ source install_isolated/setup.bash
(注:为了避免以后操作麻烦,可以直接添加环境变量的配置脚本到终端的配置文件中:
$echo "source ~/catkin_ws/install_isolated/setup.bash" >> ~/.bashrc
$ source ~/.bashrc
查询终端的环境:$gedit ~/.bashrc
下载并启动 2D 背包演示(内存500M):
wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/backpack_2d/cartographer_paper_deutsches_museum.bag
roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=${HOME}/Downloads/cartographer_paper_deutsches_museum.bag
如果运行上面这条指令出现下面的报错,说明你没有添加工作环境。需要重新添加工作环境就行。$:source install_isolated/setup.bash
RLException: [demo_backpack_2d.launch] is neither a launch file in package [cartographer_ros] nor is [cartographer_ros] a launch file name The traceback for the exception was written to the log file
下载并启动 3D 背包演示(内存2G):
wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/backpack_3d/with_intensities/b3-2016-04-05-14-14-00.bag
roslaunch cartographer_ros demo_backpack_3d.launch bag_filename:=${HOME}/Downloads/b3-2016-04-05-14-14-00.bag
这个3D建图就不搞了,2G内存.
有错的话 可以评论区交流,第一次写,不足之处,多多交流 希望对有需要的朋友有用
欢迎给予评论 加油 小伙子
[1] http://meta.math.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference