赞
踩
解决一下github克隆慢的问题(网上很多帖子,不能fq的话考虑使用修改hosts)
sudo gedit /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4
然后保存并关闭文件。这里是为了以后的wstool merge -t src https://raw.githubusercontent.com/googlecartographer/cartographer_ros/master/cartographer_ros.rosinstall
这一行命令做铺垫的。(否则会很慢,这个以后再说)
安装一些必要的依赖包:
sudo apt-get install -y \ cmake \ g++ \ git \ google-mock \ libboost-all-dev \ libcairo2-dev \ libeigen3-dev \ libgflags-dev \ libgoogle-glog-dev \ liblua5.2-dev \ libsuitesparse-dev \ libwebp-dev \ ninja-build \ protobuf-compiler \ python-sphinx
安装依赖:
sudo apt-get install autoconf automake libtool curl make g++ unzip
方法一(Ubuntu命令安装)
sudo apt-get install libprotoc-dev
方法二:(源码安装)
接下来克隆源码,注意,git submodule update --init --recursive
这一步克隆子模块必须有,否则后面会报错(报找不到文件的错),当然,之前如果你没有解决github下载慢的问题,这里可能就要慢的绝望了。
git clone -b v3.6.0 https://github.com/protocolbuffers/protobuf.git
#上述命令表示克隆版本为3.6.0的protobuf源码
cd protobuf
git submodule update --init --recursive
#该命令表示克隆protobuf的子模块,主要是gtest
编译并安装
#进入到克隆的protobuf目录,当然,如果之前就在这个目录下不必再次cd
cd protobuf
./autogen.sh
./configure
make
#如果没有克隆子模块,make check会失败但是可以继续make install,但是使用某些功能时可能会出错
make check
sudo make install
sudo ldconfig
#输出protobuf版本信息则表示安装成功
protoc --version
最后,查看安装位置:
which protoc
其默认下载位置为 /usr/local/bin/protoc
这是我们不想要的,因为carto的搜索protoc的路径为/usr/bin/protoc
直接copy过去
sudo cp /usr/local/bin/protoc /usr/bin
最终,安装完毕protobuf3.6的版本,并完成位置的调整。
见博文 01.初识ROS https://blog.csdn.net/weixin_42214178/article/details/108376667
mkdir -p ~/sx_ws/src
cd ~/sx_ws/src/
catkin_init_workspace
激活环境变量,并查看当前工作空间路径,确认环境变量是否设置成功:
# 仅当前终端
source ~/sx_ws/devel/setup.bash
# 所有终端
echo "source ~/sx_ws/devel/setup.bash " >> ~/.bashrc
#查看当前功能包的路径
echo $ROS_PACKAGE_PATH
显示如下,说明环境变量设置成功:
图1-1 查看ROS功能包相关的环境变量
把给的src文件内的功能包全部复制到本地工作空间的src文件夹下:
~/sx_ws/src
图1-2 放置好功能包后的工作空间内的src文件夹
由于工作需要,暂时将以下文件移出src文件:
图1-3 暂时不编译的功能包
现在,开始编译,由于是在新的主机(中控机)上进行操作,必然会缺少许多相关的依赖,在编译过程中会报错,需要通过报错消息安装相关依赖,直到编译成功:
报错1:
This workspace contains non-catkin packages in it
图1-4 报错1
解决:该工作空间包含了非catkin类型的package,并且catkin不能编译一个“非同步的工作空间”:
'catkin_make_isolated' command instead
使用‘catkin_make_isolated
’代替‘catkin_make
’进行编译
报错2:
Failed to process package ‘ceres-solver’
解决:安装 ‘ceres-solver’
# CMake sudo apt-get install cmake # google-glog + gflags sudo apt-get install libgoogle-glog-dev # BLAS & LAPACK sudo apt-get install libatlas-base-dev # Eigen3 sudo apt-get install libeigen3-dev # SuiteSparse and CXSparse (optional) # - If you want to build Ceres as a *static* library (the default) # you can use the SuiteSparse package in the main Ubuntu package # repository: sudo apt-get install libsuitesparse-dev # - However, if you want to build Ceres as a *shared* library, you must # add the following PPA: sudo add-apt-repository ppa:bzindovic/suitesparse-bugfix-1319687 sudo apt-get update sudo apt-get install libsuitesparse-dev
tar zxf ceres-solver-1.14.0.tar.gz
mkdir ceres-bin
cd ceres-bin
cmake ../ceres-solver-1.14.0
make -j4
make test
# Optionally install Ceres, it can also be exported using CMake which
# allows Ceres to be used without requiring installation, see the documentation
# for the EXPORT_BUILD_DIR option for more information.
make install
报错3:
Could not find a package configuration file provided by
“jsk_recognition_msgs” with any of the following names。
解决:缺少相应的功能包,类似问题都安装缺少的功能包。
图1-5 报错3
sudo apt install ros-melodic-jsk-recognition-msgs
报错4:
在处理时有错误发生:
/var/cache/apt/archives/ros-melodic-libphidget21_0.7.10-1bionic.20200801.013518_amd64.deb
/var/cache/apt/archives/ros-melodic-lvr2_20.7.1-1bionic.20200710.132440_amd64.deb
/var/cache/apt/archives/ros-melodic-mrpt2_2.0.4-1bionic.20200622.141446_amd64.deb
解决:
更名 mv /var/lib/dpkg/info /var/lib/dpkg/info_old
新建 mkdir /var/lib/dpkg/info
重新安装文件:sudo apt --fix-broken install
将新生成的软件包配置文件覆盖旧的文件:
mv /var/lib/dpkg/info/* /var/lib/dpkg/info_old/
恢复软件包配置文件里表
rm -rf /var/lib/dpkg/info
mv /var/lib/dpkg/info_old /var/lib/dpkg/info
因为未知原因,现在先在新建的工作空间中编译安装cartographer,然后将其他功能包放入src
文件夹,并编译。
sudo apt-get update
sudo apt-get install -y python-wstool python-rosdep ninja-build
cd ~/sx_ws/
wstool init src
wstool merge -t src https://raw.githubusercontent.com/googlecartographer/cartographer_ros/master/cartographer_ros.rosinstall
wstool update -t src
报错:ERROR in config: Error processing 'ceres-solver' : [ceres-solver] Checkout of https://ceres-solver.googlesource.com/ceres-solver.git version 1.13.0 into /home/lxr/sx_ws/src/ceres-solver failed.
图1-5 更新报错
解决:
如果你挂了 VPN ,一般不会出错。
如果你没有翻墙,会出现无法下载 ceres-solver 的问题,我们可以修改其下载地址:
1) 修改 <工作空间>/src/.rosinstall
文件
2) 修改 <工作空间>/src/cartographter_ros/cartographter_ros.rosinstall
文件
将两个文件中的 ceres-solver 路径改为从 github 下载
https://github.com/ceres-solver/ceres-solver.git
以上是其他博主的解决方案,实测只需修改google_carto_ws/src/.rosinstall
文件,即可更新完成。
使用快捷键“Ctrl + h”显示隐藏文件。
我的修改后的<工作空间>/src/.rosinstall 文件。
# THIS IS AN AUTOGENERATED FILE, LAST GENERATED USING wstool ON 2020-09-09
- git:
local-name: cartographer
uri: https://github.com/cartographer-project/cartographer.git
version: 1.0.0
- git:
local-name: cartographer_ros
uri: https://github.com/cartographer-project/cartographer_ros.git
version: 1.0.0
- git:
local-name: ceres-solver
# 修改部分
uri: https://github.com/ceres-solver/ceres-solver.git
version: 1.13.0
#
#sudo rosdep init
rosdep update
rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y
catkin_make_isolated --install --use-ninja
echo "source ~/sxc_ws/devel/setup.bash" >> ~/.bashrc
先编译安装cartographer功能包,然后将其余功能包放入src文件夹,进行编译。如果报错,可以考虑删除除了src文件夹以外的所有文件,然后再次进行整个工作空间的编译。
[1] Ceres Solver安装与入门使用
[2] ROS环境下部分编译异常解决方案
[3] 官网安装教程
[4] 问题解决方案2-------------ros的 Cartographer,ninja,ceres-solver,cartographer_ros安装及其问题,附上最好的安装方法(亲测有效)
[5] dpkg 处理 xx 时出错
[6] Cartographer安装教程及踩坑实录
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。