原来用别人的博客写的,现在全搬过来
参考:1 ros官网的arm安装包安装: http://wiki.ros.org/groovy/Installation/UbuntuARM
2源代码编译安装: http://wiki.ros.org/groovy/Installation/Source
3 http://wiki.ros.org/groovy/Installation/Linaro/SourceLinaro系统上源代码编译ros
4 http://wiki.ros.org/groovy/Installation/Raspbian/Source树莓派编译ros
一、pcduino的sd卡镜像
http://yuanboshe.github.io/blog/2013-07-setup_pcduino_for_ros.html
自带的内存太小,必须在sd卡上安装,我的是16g的sd卡
1. 刷Kernel 2 sd卡上刷Lubuntu系统 3 sd卡扩容 4 更新
制作sd卡镜像,dd命令不识别是否使用,所以我的镜像有16g,时间长,很多不必要的浪费,网上有方法减少镜像大小,如分成fat32和utf格式的两个盘,ggzip工具等
为了以防万一,我是16g的无压缩的img文件
参考http://my.oschina.net/daijy/blog/112051
sudo dd if=/dev/sdbof=~/pcDuino.img
从sd卡复制16g到硬盘,时间很长
二、chroot环境建立
最好是在chroot环境下,节省时间,sd卡下直接编译问题:
(1)耗时
(2)pcl编译时显示内存不足
参考这段
parted gumstix.img
(parted) unit
Unit? [compact]? B
(parted) print
Model: (file)
Disk /home/frk1pal/gumstix/gumstix.img: 13958643712B
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 32256B 54525439B 54493184B primary fat32 boot, lba
2 54525952B 13958643711B 13904117760B primary ext3
(parted) quit
挂载
sudo mount -o loop,offset=54525952 gumstix.img /mnt
sudo mount -o bind /proc /mnt/proc
sudo mount -o bind /dev /mnt/dev
sudo mount -o bind /dev/pts /mnt/dev/pts
sudo mount -o bind /sys /mnt/sys
编译器
sudo cp /usr/bin/qemu-arm-static /mnt/usr/bin/
sudo chroot /mnt
dns设置
dpkg --configure -a
printf "nameserver 8.8.8.8" > /etc/resolv.conf
ping google.com
apt-get update成功则证明一切都设置好了
三、apt-get安装
apt-getinstall安装最简单,但由于依赖库冲突问题,许多包不存在,需要自己编译
参考http://wiki.ros.org/groovy/Installation/UbuntuARM进行apt-get安装最基本的包ros_common,ros_base包
sudo sh -c 'echo "deb http://packages.ros.org/ahendrix-mirror/ubuntu precise main" > /etc/apt/sources.list.d/ros-latest.list'
wget http://packages.ros.org/ros.key -O - | sudo apt-key add -
sudo apt-get update
sudo apt-get install ros-groovy-ros-base
apt-cache search ros-groovy命令可以查看有哪些已编译好的包
sudo apt-get install python-rosdep
sudo rosdep init
rosdep update
sudo apt-get install python-rosinstall
四、wet源代码编译安装
主要参考http://wiki.ros.org/groovy/Installation/Source
source /opt/ros/groovy/setup.bash
4.1 安装必要的工具
sudo apt-get install python-rosdep python-rosinstall-generator python-wstool build-essential
4.2下载源代码
生成.rosinstall,指定需要下载的包,分wet包和dry包,wet包用catkin编译,dry包用rosmake编译,因为还没有完全移植到catkin上,目前比较费劲,以后会好的
wet包
rosinstall_generator robot --rosdistro groovy --deps --wet-only > groovy-robot-wet.rosinstall
wstool init -j8 src groovy-robot-wet.rosinstall
根据groovy-robot-wet.rosinstall的内容,在src文件夹中生成.rosinstall文件,其中包含需要下载的网址和版本信息,下载
下面这些是我根据自己的需要下载的
rosinstall_generator mobile --rosdistro groovy --deps --wet-only > groovy-mobile-wet.rosinstall
rosinstall_generator perception --rosdistro groovy --deps --wet-only > groovy-perception-wet.rosinstall
rosinstall_generator openni_launch --rosdistro groovy --deps --wet-only > groovy-openni_launch-wet.rosinstall
rosinstall_generator turtlebot --rosdistro groovy --deps --wet-only > groovy-turtlebot-wet.rosinstall
wstool merge groovy-mobile-wet.rosinstall 是在原来的基础上加入mobile,只更新新加入的包,src/。rosinstall中可以检查
可能有重复,为了避免不必要的编译,可以先自己检查生成的.rosinstall文件,去掉已经安装好的,对于可以使用apt-get安装的尽量使用apt-get安装,source安装真的是费力不讨好
第一次使用wstool init工具,以后可以根据需要随机更改.rosinstall,避免不必要的重复安装
4.3 检查依赖包是否完全安装
检查依赖包并安装,有错误也继续安装其他包
rosdep install --os=ubuntu:precise --from-paths src --ignore-src --rosdistro groovy -yr
检查依赖包
rosdep check --os=ubuntu:precise --from-paths src --ignore-src --rosdistro groovy
检查哪些包依赖出错?
find -type f -name "*.xml" |xargs grep "xxx"
对于自己通过源代码/tar.gz等编译安装的包,rosdep不识别,rosdep只识别apt-get或者dpkg安装的包,没有办法,可在package.xml文件中将依赖包所在的行去掉
4.3.1 源代码安装依赖包
yaml-cpp包 sudo apt-get install libyaml-cpp-dev
opencv包 sudo apt-get install libopencv-dev
(1)Collada包
'moblie' ,perception都需要,从源安装 collada-dom,source http://sourceforge.net/projects/collada-dom/files/latest/download
$ sudo apt-get install libxml2-dev
$ mkdir /opt/ros/collada
$ cd /opt/ros/collada
{download the collada source from the above link and put it in this directory}
$ tar -xf collada*; rm collada*tgz; cd collada*; mkdir build; cd build
$ cmake .. ; make -j1; sudo make install
(2)openni包
(3)PCL
vimsrc/pcl/cmake/pcl_find_sse.cmake 去掉-march=native
Set endian
/commentMarcus: My ARMboard was correctly detected to use little endian.
vim src/pcl/io/include/pcl/io/ply/byte_order.h
设置在if... udif...else...中
,将最后一种可能else下,#error替换成#define PLY_LITTLE_ENDIAN
4.3.2 安装包
sudo ./src/catkin/bin/catkin_make_isolated --install --install-space /opt/ros/groovy
最好指定安装地方--install-space /opt/ros/groovy,这样编译好之后就可以删掉源代码包了,否则太占sd卡空间
这一步很耗时,尤其是pcl的安装。寻找安装依赖包的时候容易卡住,只好重新来,只要寻找好,开始安装后则一般不会在寻找安装包时卡住了
4.4 dry源代码下载,编译,安装
ros_ws包中,使用rosws init初始化
生成.rosinstall,包含了需要下载的代码和地址,一定要自己检查一遍,去掉不必要的安装
rosinstall_generator mobile --rosdistro groovy --deps --dry-only > groovy-mobile-dry.rosinstall
rosinstall_generator perception --rosdistro groovy --deps --dry-only > groovy-perception-dry.rosinstall
rosinstall_generator openni_launch --rosdistro groovy --deps --dry-only > groovy-openni_launch-dry.rosinstall
rosinstall_generator turtlebot --rosdistro groovy --deps --dry-only > groovy-turtlebot-dry.rosinstall
rosws merge groovy-mobile-dry.rosinstall 是在原来的基础上加入mobile,只更新新加入的包,.rosinstall中可以检查 rosws update下载
最后需要自己编译的只有一些laser包,navigation包,slam_gmapping包,turtlebot包
sourcesetup.bash
rosmake-a
我没有找到安装到/opt/ros/groovy的命令,只能就放在ros_ws下了,当成自己的包来用,记得将setup.bash写入.bashrc下
也可以将源代码包拷贝到/opt/ros/groovy/stacks下编译安装