红联Linux门户
Linux帮助

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

发布时间:2017-01-14 09:45:03来源:linux网站作者:哇小明
基本环境:
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
 
本文永久更新地址:http://www.linuxdiyf.com/linux/27786.html