原来用别人的博客写的,现在全搬过来
参考: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
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环境下,节省时间,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
dpkg --configure -a
printf "nameserver 8.8.8.8" > /etc/resolv.conf
ping google.com
apt-get update成功则证明一切都设置好了
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
主要参考http://wiki.ros.org/groovy/Installation/Source
source /opt/ros/groovy/setup.bash
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,避免不必要的重复安装
检查依赖包并安装,有错误也继续安装其他包
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文件中将依赖包所在的行去掉
yaml-cpp包 sudo apt-get install libyaml-cpp-dev opencv包 sudo apt-get install libopencv-dev
'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
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
sudo ./src/catkin/bin/catkin_make_isolated --install --install-space /opt/ros/groovy
最好指定安装地方--install-space /opt/ros/groovy,这样编译好之后就可以删掉源代码包了,否则太占sd卡空间
这一步很耗时,尤其是pcl的安装。寻找安装依赖包的时候容易卡住,只好重新来,只要寻找好,开始安装后则一般不会在寻找安装包时卡住了
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下编译安装