Ubuntu 16.04 kinetic上移植安装嵌入式版本cartographer

**基本环境:
xubuntu 16.04 xenial kinetic ros
硬件:嵌入式rk3288 板子**

ROS kinetic的安装

基本按照官网的操作即可,参考官方网站:http://wiki.ros.org/kinetic/Installation/Ubuntu

唯一修改的是把ubuntu机器里的源 /etc/apt/sources.list中的内容改成如下:



deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-updates main restricted universe multiverse 
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-updates main restricted universe multiverse 
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-security main restricted universe multiverse 
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-security main restricted universe multiverse 
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-backports main restricted universe multiverse 
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-backports main restricted universe multiverse 
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial main universe restricted 
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial main universe restricted 
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial-updates main restricted universe multiverse 
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial-updates main restricted universe multiverse 
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial-security main restricted universe multiverse 
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial-security main restricted universe multiverse 
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial-backports main restricted universe multiverse 
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial-backports main restricted universe multiverse 
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial main universe restricted 
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial main universe restricted 

当然如果你不改也可以安装成功,那么最好不过了,我这里安装的是:

sudo apt-get install ros-kinetic-desktop

桌面版。

移植安装cartographer

1.安裝wstool和rosdep:

sudo apt-get install -y Python-wstool python-rosdep ninja-build

2.新建工作空間,這裏使用catkin_ws:

mkdir catkin_ws
cd catkin_ws
wstool init src

3.下载

wstool merge -t src https://raw.githubusercontent.com/googlecartographer/cartographer_ros/master/cartographer_ros.rosinstall  

wstool update -t src

在update的时候,下载cere-solver失败,可能是没有的原因,不过cartographer和cartographer_ros都行下载成功了,ceres-solver手动下载即可:

https://github.com/ceres-solver/ceres-solver.git

下载下来之后我使用zip的方式下到电脑上,然后解压得到ceres-solver-master文件夹,改名为ceres-solver后放到catkin工作空间的src下面,然后:

rosdep install --from-paths src --ignore-src --rosdistro=${kinetic} -y

就会开始安装一些东西,可能前面会有关于ceres-solver的警告,不过不影响后面的进度。 接下来开始安装:

catkin_make_isolated --install --use-ninja

在编译过程中,编译cartographer的时候,遇到 字符编码错误?提示locale error,为en。看来没装en的编码:
先安装:

locale-gen en_US.UTF-8  

vim /etc/default/locale  
改成:  
LANG=en_US.UTF-8  
LANGUAGE=en_US:en  
LC_ALL=en_US.UTF-8  
然后保存后退出,安装    

update-locale
locale
locale -a

都可以查看下信息,记得重启。

最后嵌入式机器上可能在编译cc的时候一直提示c++ 错误,大概是内存不够的意思,这个时候建议切换到具体源码下,直接用ninja来编译,出错就重启,重复此操作,直到单一源码编译通过,,不过后来网上查了下有个方法可增加虚拟内存,亲测有效:

1. 创建分区文件,大小 2G
dd if=/dev/zero of=/swapfile bs=1k count=2048000
2. 生成 swap 文件系统
mkswap /swapfile
3. 激活 swap 文件
swapon /swapfile
4. 修改 /etc/fstab 文件,新增如下内容:
/swapfile swap swap defaults 0 0
catkin_make_isolated --install --use-ninja

这命令并不会重复编译所以不必担心之前编译的被忽略。

看到这个命令圆满执行成功,心里终于踏实了,下面准备开始运行demo。

可以用命令下载:

wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/backpack_2d/cartographer_paper_deutsches_museum.bag

我是在PC上直接下载,速度够快,在网页中直接输入:
https://storage.googleapis.com/cartographer-public-data/bags/backpack_2d/cartographer_paper_deutsches_museum.bag

上面是个2d的demo大概400m多,下完之后放到/home/ubuntu/slam 下面,目录自定,然后运行:

roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=/home/ubuntu/slam/cartographer_paper_deutsches_museum.bag  

后面就会有图形界面出来了,一运行就开始在slam了,就像之前视频里看到其他大神的那样。下面是截图:

Ubuntu 16.04 kinetic上移植安装嵌入式版本cartographer_第1张图片

你可能感兴趣的:(ROS,机器人操作系统,slam)