EHub_tx1_tx2_E100 Cartographer 完美部署安装

13 篇文章 1 订阅
2 篇文章 0 订阅

目录

    

1.1 安装必要的依赖包

1.2 protobuf安装

1.3 ceres 1.13.0安装

1.4 abseil 安装

1.5 carographer 安装

特别的错误解决:

1.6 carographer 测试


    

        目前机器人使用中需要进行SLAM建图,因为移动机器人想要实现自主行走,核心在于实现自主定位导航,在自主定位导航技术中会涉及到定位、建图、路径规划等问题,而地图构建的好坏将直接影响机器人的行走路径。机器人想要到达某个目的地,需要和人类绘制地图一样,描述环境、认识环境的过程主要就是依靠地图。

        而目前建图方式有激光雷达、视觉建图、还有深度学习等。今天介绍的cartographer就属于激光slam。主流的激光SLAM算法有hector、gmapping、karto、cartographer等。

        cartographer是google开发的实时室内SLAM项目,cartographer采用基于google自家开发的ceres非线性优化的方法,cartographer的亮点在于代码规范与工程化,非常适合于商业应用和再开发。并且cartographer基于submap子图构建全局地图的思想,能有效的避免建图过程中环境中移动物体的干扰。并且cartographer支持多传感器数据(odometry、IMU、LaserScan等)建图,支持2D_SLAM和3D_SLAM建图。

        cartographer算法并没有给人惊艳的感觉,但该算法的主要目标是实现低计算资源消耗,达到实时SLAM的目的,所以很适合嵌入式端的使用。

        这篇文章是介绍cartographer在EHub_tx1_tx2_E100载板,TX1核心模块环境(Ubuntu18.04)下进行源码下载进行demo测试的教程,本文的前提条件是你的TX1里已经安装了ROS版本:Melodic。

        将cartographer_ws.tgz 拷贝到系统中,并切解压后,我已经将所有难下载的关联依赖包,全部下载打包到了一起,方便后续安装。

cartographer-ws-机器学习文档类资源-CSDN下载 可以到这个对应位置下载。

将文件拷贝到系统内后,开始安装支持包:

cd /home/nvidia/Workspace/cartographer_ws/src/cartographer/scripts

1.1 安装必要的依赖包

#安装ninja-build 
sudo apt-get install -y    ninja-build 
​#安装其它
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 \
    libprotobuf-dev \
    libsuitesparse-dev \
    libwebp-dev \
    ninja-build \
    protobuf-compiler \
    python-sphinx 
​#安装stow  
sudo apt-get install -y   stow

1.2 protobuf安装

#进入脚本目录
cd /home/nvidia/Workspace/cartographer_ws/src/cartographer/scripts
#脚本自动安装proto3
./install_proto3.sh 
#查看版本验证
protoc --version

install_proto3.sh 内容

set -o errexit
set -o verbose
​
VERSION="v3.4.1"
​
# Build and install proto3.
#git clone https://github.com/google/protobuf.git
#git clone https://gitee.com/nfengjing/protobuf.git
cd protobuf
#cd protobuf-3.4.0
git checkout tags/${VERSION}
mkdir build
cd build
cmake -G Ninja \
  -DCMAKE_POSITION_INDEPENDENT_CODE=ON \
  -DCMAKE_BUILD_TYPE=Release \
  -Dprotobuf_BUILD_TESTS=OFF \
  ../cmake
ninja
sudo ninja install

等待编译安装结束,后验证

1.3 ceres 1.13.0安装

#进入脚本目录
cd  /home/nvidia/Workspace/cartographer_ws/src/cartographer/scripts
#脚本自动化编译安装
./install_ceres.sh

等待编译结束

install_ceres.sh 内容

set -o errexit
set -o verbose
​
VERSION="1.13.0"
​
# Build and install Ceres.
#git clone https://ceres-solver.googlesource.com/ceres-solver
cd ceres-solver-1.13.0
#git checkout tags/${VERSION}
#mkdir build
cd build
cmake .. -G Ninja -DCXX11=ON
ninja
CTEST_OUTPUT_ON_FAILURE=1 ninja test
sudo ninja install

1.4 abseil 安装

​
​
cd  /home/nvidia/Workspace/cartographer_ws/src/cartographer/scripts
#脚本自动化编译安装
./install_abseil.sh

install_abseil.sh 内容

set -o errexit
set -o verbose
​
#git clone https://github.com/abseil/abseil-cpp.git
cd abseil-cpp
#git checkout d902eb869bcfacc1bad14933ed9af4bed006d481
mkdir build
cd build
cmake -G Ninja \
  -DCMAKE_BUILD_TYPE=Release \
  -DCMAKE_POSITION_INDEPENDENT_CODE=ON \
  -DCMAKE_INSTALL_PREFIX=/usr/local/stow/absl \
  ..
ninja
sudo ninja install
cd /usr/local/stow
sudo stow absl

1.5 carographer 安装

#进入工作目录
cd /home/nvidia/Workspace/cartographer_ws
#编译
catkin_make_isolated --install --use-ninja   
#source
source install_isolated/setup.bash

编译结束。

特别的错误解决:

c++: internal compiler error: Segmentation fault (program cc1plus)
Please submit a full bug report

有时候系统编译一些程序会报上面的错误,但是未必是内存不足,也可能是系统默认stack 和打开文件句柄个数不足导致的

#查看系统本身设置限制参数
nvidia@nvidia-desktop:~$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 13930
max locked memory       (kbytes, -l) 65536
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 1024
cpu time               (seconds, -t) unlimited
max user processes              (-u) 13930
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

修改open files 和stack size

sudo gedit /etc/security/limits.conf 
增加
nvidia hard nofile 65535
nvidia soft nofile 65535
root hard nofile 65535
root soft nofile 65535
ubuntu hard nofile 65535
ubuntu soft nofile 65535
修改
ubuntu hard stack 2024
ubuntu soft stack 2024
nvidia hard stack 2024
nvidia soft stack 2024

保存退出,后需要重启系统生效

#重启
sudo reboot
​
#重启后查看配置
ulimit -a
​
nvidia@nvidia-desktop:~$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 13930
max locked memory       (kbytes, -l) 65536
max memory size         (kbytes, -m) unlimited
open files                      (-n) 65535
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 2024
cpu time               (seconds, -t) unlimited
max user processes              (-u) 13930
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

1.6 carographer 测试

测试推荐使用nomachine切换有桌面系统去验证。

cd /home/nvidia/Workspace/cartographer_ws
source install_isolated/setup.bash
roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=/home/nvidia/Workspace/cartographer_ws/bags/cartographer_paper_deutsches_museum.bag

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机器人虎哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值