EHub_tx1_tx2_E100 Cartographer 完美部署安装

news/2025/3/4 8:12:35/

目录

    

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


http://www.ppmy.cn/news/585101.html

相关文章

ROS机器人 RIA-E100使用

E100 以下内容源自 原E100文档: Demo Applications — Gaitech EDU 2.5 documentation https://edu.gaitech.hk/ria_e100/demo-apps.html 克隆git&编译 mkdir –p ~/catkin_ws/src cd ~/catkin_ws/src git clone https://github.com/gaitech-robotics/RIA-E100…

e1000e网卡驱动分析笔记

驱动中有e1000的e1000e两个版本, 差别不大, e1000e使用了msix, 更先进一点点. 比较难懂的都是一些基础系的东西, 如下 1) PCIE的配置空间初始化 2) msix机制及初始化 3) napi机制 4) dma机制 下面一个个回答这些问题, 因为内容实在太多, 没法每个问题将的很清楚, 而且我…

e100网卡收包流程分析

四、网卡的数据接收内核如何从网卡接受数据,传统的经典过程: 1、数据到达网卡; 2、网卡产生一个中断给内核; 3、内核使用I/O指令,从网卡I/O区域中去读取数据; 我们在许多网卡驱动中,都可以在网卡…

E100.C简析(~/drivers/net/ethernet/intel/e100.c)

2019独角兽企业重金招聘Python工程师标准>>> 支持网络协议栈的底层网卡驱动是一个怎么也绕不过去的话题,以Intel PRO/100网卡驱动为例,分析一下Linux下网卡驱动的实现。同时也兼谈一些pci总线的问题。PCI总线的框架系统只提供对PCI总线系统的…

Intel E100 网卡驱动实例分析

本来是做zero-copy的,顺便把分析记录写下来,供大家参考,如果有错误清大家多包涵。只挑重要的来说,一些细节的地方我也不大懂,要看芯片手册才行,我们作软件的就别看那么细了,最重要是把主要流程弄…

Java获取文件的hash值(SHA256)

目录 简介 获取网络文件的sha256值(方式一) 获取本地文件的sha256值(方式二) 简介 在工作开发当中需求要通过文件的hash值比对文件是否被篡改过,于是通过使用了(sha256)hash值进行比对&#x…

【STL】容器适配器

放在专栏【C知识总结】,会持续更新,期待支持 1、什么是适配器? 我们生活中就存在大量的适配器,最常见的莫过于我们常见的电源适配器,它的作用就是将交流电源转化为直流电源进行输出,可以说电源适配器在电流…

[算法前沿]--022-Pytorch从0编写Transformer算法

文章目录 预备工作背景模型架构Encoder部分和Decoder部分EncoderDecoderAttention模型中Attention的应用基于位置的前馈网络Embeddings and Softmax位置编码完整模型训练批处理和掩码Training Loop训练数据和批处理硬件和训练时间Optimizer正则化标签平滑实例<