Ken Conley wrote: > Hi Cedric, > > You can create your own account on the wiki. > > - Ken > OK. It is done and uploaded. We now have 3 different way to cross-compile for the gumstix overo/verdex. It would be nice if some people could read the 3 approaches and comment on the one they find more appropriate, or the one that just work for them. I think that would help prospective reader to select the best method for them. It would also help removing the duplicates (incl. my update if necessary) Best > > On Wed, May 5, 2010 at 4:44 PM, Cedric Pradalier > > > wrote: > > Radu Bogdan Rusu wrote: > > Cedric, > > > > Thanks for sharing your experiences with ROS on gumstix! There's > a lot of valuable information here, and in order for it > > to "live on", would you mind setting up a wiki page? I know > there's other people out there working on the same thing, so > > if we could centralize this information, that would be great! :) > Thank you in advance. > > > > Cheers, > > Radu. > > > Hi Radu, > > I'd be happy to create/update the wiki page (I've actually > preformatted > the email to make it easy to integrate as wiki page). Can anybody > contribute to the pages, or do I need a specific account? > > Thanks for your positive feedback. > > > Cedric Pradalier wrote: > > > >> Hi all, > >> > >> I have been spending some effort on making ROS compiling for > the gumstix > >> and I'd like to share the experience: > >> > >> First of all, I have tried the approach listed on the wiki, and > they are > >> not my favourite but they provide a good basis. > >> > >> The first thing I have done is installing ubuntu on the gumstix > (a guide > >> for that can be found on > >> > http://johnwoconnor.blogspot.com/2009/04/installing-ubuntu-on-gumstix-overo.html) > >> This simplifies a lot the process of getting all the 3rd party > libraries > >> compiled (in particular boost, xmlrpc++, log4cxx, apr can then > just be > >> obtained using an apt-get call). > >> > >> Once you have installed ubuntu on the gumstix, you could in theory > >> install all the -dev packages and gcc/g++ and compile everything > >> natively. Needless to say that it might be a little bit long > given the > >> performances of the gumstix. However, this is a working solution. > >> > >> The second solution is to run a gumstix image using qemu and in > >> particular qemu-system-arm (package qemu-kvm-extras in ubuntu > 9.10). To > >> this end, you first need to setup a disk image, mount it, copy > the file > >> system created using the link above. > >> #> qemu-img create overo-ros.img 2G > >> #> mkdir overo-ros > >> #> mount -o loop overo-ros.img overo-ros > >> #> cd overo-ros > >> #> sudo tar -zxvf /path/to/armel-rootfs-YYYYMMDDhhmm.tgz > >> > >> At this point the file system can be umounted and launched with > qemu > >> (get the kernel by following the instruction at > >> http://people.canonical.com/~ogra/arm/qemu/README > ) > >> > >> #> umount overo-ros > >> #> sudo qemu-system-arm -M versatilepb -kernel > vmlinuz-2.6.28-versatile > >> -hda overo-ros.img -m 256M -append "root=/dev/sda" -net nic > -net user > >> > >> I have not tried booting the image while it is still mounted. I > suspect > >> it does not work so well. > >> > >> Once qemu has started the image, one can easily apt-get arm > packages and > >> update the image to get all the -dev packages. It is also > possible to > >> install gcc and compile all ros in the virtual gumstix. > However, this > >> takes forever, even longer than on the real system. > >> > >> However, getting qemu running is not a loss of time. Once all > the -dev > >> packets have been installed, the ubuntu image can be used to > >> cross-compile. To this end, I first quit qemu, and remount > overo-ros. > >> > >> The following will assume you have a a cross compiler > installed, for > >> instance through buildroot or open-embedded (check the gumstix > wiki). We > >> can then use the -sysroot option of gcc to compile using the > overo-ros > >> directory as the root of the filesystem (where /usr/include and > /usr/lib > >> are looked for). However, at the time of this writing libtool > is not > >> able to pass a -sysroot option to gcc, so I write a set of > scripts for > >> gcc, g++ and cpp, respectively called gcc-sysroot, g++-sysroot, and > >> cpp-sysroot. The scripts are as follows: > >> > >> #!/bin/bash > >> if test -n "$ARM_SYSROOT" > >> then > >> SYSROOT=--sysroot=$ARM_SYSROOT > >> fi > >> exec ${0/-sysroot/} $SYSROOT $* > >> > >> The same script can be used for all the executable as it find which > >> binary to call based on how it was called. > >> > >> Once the scripts are defined, I have a special gumstix compilation > >> environment: > >> export GUMSTIXTOP=$HOME/overo-oe/ > >> export OVEROROOT=$HOME/overobuntu/overo-ros > >> export > >> > PKG_CONFIG_PATH=$OVEROROOT/usr/local/lib/pkgconfig:$OVEROROOT/usr/lib/pkgconfig > >> > >> export ARM_SYSROOT=$OVEROROOT > >> export > CROSSBIN=$GUMSTIXTOP/tmp/cross/armv7a/arm-angstrom-linux-gnueabi/bin > >> export PATH=$CROSSBIN:$PATH > >> export AR=$CROSSBIN/ar > >> export CPP=$CROSSBIN/cpp-sysroot > >> export CXX=$CROSSBIN/g++-sysroot > >> export CC=$CROSSBIN/gcc-sysroot > >> > >> > >> Once this is sourced in the current shell, you can call rosmake > >> normally, and everything should be able to compile. Obviously, > rosdep > >> install does not work (you have to restart the qemu thing and call > >> apt-get from there, or at least that the easy solution I > found). I have > >> all the laser and image processing stack working in particular, > even > >> libdc1394 with the usb drivers for the pointgrey cameras. > >> > >> Please note that you need to recall "cmake ." in all the > directories. > >> This can be done for instance with a script such as: (not fully > tested) > >> > >> roscd > >> find . -name "CMakeCache.txt" | while read line > >> do > >> cd ${line/build\/CMakeCache.txt/} > >> cmake . > >> cd - > >> done > >> > >> Beware that a couple of binary must be compiled native and crossed > >> (rospack, rosstack and rosmsg). To this end, compile them first > native, > >> save them (for instance renaming it rospack.intel), then > compile them > >> crossed, save the crossed compilation for later installation (for > >> instance renaming it rospack.arm), then make a link to the correct > >> executable for the current architecture, and mark these directory > >> ROS_NOBUILD (touch ROS_NOBUILD). This also applies to libraries > such as > >> librospack.so and librosstack.so. I hope the WillowGarage team > finds a > >> way to decouple these libraries for cross-compilation. > >> > >> It might also be necessary to delete all the .la files > installed with > >> the -dev package in ubuntu on the arm image. These files refers > libtool > >> to some libraries in /usr/include and /usr/lib, without using the > >> -sysroot option. gcc/g++ sees the risk and does not accept to > compile > >> then. This is a problem in particular for libjpeg (compressed image > >> transport). > >> > >> Using all the above, I have ros working on both the gumstix > overo and > >> verdex. On the overo, using wifi G, the gumstix can downstream > telemetry > >> data and video data from an helicopter, using either raw images or > >> jpeg-compressed images (not much framerate gain). > >> > >> On the verdex, I need to change the timeout in rospy/client.py > (TBC) to > >> 20seconds as it is the time the systems needs to get roscore up and > >> running (The disk access performance are extremely bad on this > older > >> board). If someone wants to run ROS on a verdex, please contact > me, and > >> I'll check exactly what I had to change to make it happen. Not > that the > >> file system mentioned above works for a verdex. > >> > >> Check on http://support.skybotix.com/downloads.php for a full > filesystem > >> for the gumstix overo, with ros pre-compiled (Skybotix is a company > >> selling micro-helicopter with an embedded gumstix, but the file > system > >> should be a good starting point for any gumstix application) > >> > >> I hope all this information helps... > >> > >> > > > > > > > -- > Dr. Cedric Pradalier > http://www.asl.ethz.ch/people/cedricp > > _______________________________________________ > ros-users mailing list > ros-users@code.ros.org > https://code.ros.org/mailman/listinfo/ros-users > > > ------------------------------------------------------------------------ > > _______________________________________________ > ros-users mailing list > ros-users@code.ros.org > https://code.ros.org/mailman/listinfo/ros-users > -- Dr. Cedric Pradalier http://www.asl.ethz.ch/people/cedricp