2012-12-21 17:20:54 +08:00
This is a layer to provide ROS in an openembedded linux system.
2012-12-20 22:27:02 +08:00
Currently, this layer is still under development and not fully functional.
2012-11-29 15:18:45 +08:00
2013-01-02 17:09:13 +08:00
AUTHOR
2013-01-09 15:07:40 +08:00
Lukas Bulwahn, BMW Car IT GmbH <lukas.bulwahn@oss.bmw-carit.de>
2013-01-02 17:09:13 +08:00
HOW TO CONTRIBUTE
We are still working on this development and are interested in other use cases.
If you are interested in this project, please contact us via email.
The more people are interested, the more we will be pushing this project.
If you want to contribute, please contact us and we can discuss open issues
and how we could join forces.
2012-12-20 22:27:02 +08:00
PURPOSE of this document:
2012-12-20 23:34:14 +08:00
This document describes
2013-01-09 15:07:40 +08:00
- the state of the current work
2012-12-20 23:34:14 +08:00
- the installation, use and content of the git repository meta_ros
- milestones, the open issues and how some issues have been resolved.
- license information and origin of redistributed files
2013-01-02 18:43:49 +08:00
2013-01-09 15:07:40 +08:00
STATE OF THIS WORK:
This repository provides
- Native compilation of ROS-fuerte
- Native compilation of ROS-groovy
2013-02-01 22:02:05 +08:00
- Attempt of cross-compilation of ROS-fuerte (discontinued)
- Cross-compilation of catkin 0.5.58 (shipped with ROS-groovy)
- catkin 0.5.58 setup for cross-compiling catkin packages
2013-01-09 15:07:40 +08:00
- Attempt of cross-compilation of ROS-groovy (in development)
2012-12-20 22:27:02 +08:00
INSTALLATION:
2012-11-29 15:18:45 +08:00
2012-12-21 17:20:54 +08:00
The repository only contains a layer for ros that builds on top of the existing openembedded core layer.
You can download the yocto poky-danny-8.0 archive, but then you should update the distutils.bbclass,
and maybe also the url of libarchive.
2012-12-20 22:19:11 +08:00
To install, unpack http://downloads.yoctoproject.org/releases/yocto/yocto-1.3/poky-danny-8.0.tar.bz2 into a directory <dir>.
2012-12-21 17:20:54 +08:00
In the directory of the layers, clone this repository into the subdirectory meta-ros.
Add the meta-ros directory to your local bblayers.conf file.
2012-11-29 15:18:45 +08:00
2013-01-23 22:11:15 +08:00
USE for native compilation of ROS-fuerte on the qemu VM:
2012-11-29 15:18:45 +08:00
The commands
source oe-init-build-env
2013-01-23 22:11:15 +08:00
bitbake core-image-ros-fuerte
2012-11-29 15:18:45 +08:00
builds our specifically configured linux image.
2013-01-23 22:11:15 +08:00
With `runqemu qemux86 qemuparams="-m 2048" core-image-ros-fuerte` the linux image runs within a virtual machine with 2048 MB of memory.
We assumed that this is running on and compiled for an x86 architecture. For other architectures, some settings must be adjusted.
2012-12-05 01:19:09 +08:00
2013-01-23 22:11:15 +08:00
On the host system, run fetch-ros-fuerte.sh in a fresh directory, e.g. ~/ros-repos/.
2012-12-20 23:34:14 +08:00
It clones all ros repositories locally.
2012-12-21 17:20:54 +08:00
After starting the virtual machine, copy the installation script from the host system to the home directory with scp.
2012-12-05 01:19:09 +08:00
2013-01-23 22:11:15 +08:00
scp lukas@192.168.7.1:/<location of repository>/install-fuerte.sh .
2012-12-21 17:20:54 +08:00
2013-01-23 22:11:15 +08:00
Adjust configuration in install-fuerte.sh and then run
2013-02-01 22:02:05 +08:00
2013-01-23 22:11:15 +08:00
sh ./install-fuerte.sh
The installation script installs ros and starts roscore.
USE for native compilation of ROS-groovy on the qemu VM:
The commands
source oe-init-build-env
bitbake core-image-ros-groovy
builds our specifically configured linux image.
With `runqemu qemux86 qemuparams="-m 2048" core-image-ros-groovy` the linux image runs within a virtual machine with 2048 MB of memory.
We assumed that this is running on and compiled for an x86 architecture. For other architectures, some settings must be adjusted.
2013-02-01 22:02:05 +08:00
On the host system, run mk_srcarchive.sh in some clean temporary directory.
2013-01-23 22:11:15 +08:00
It copies all ros sources from their URLs and puts them into one src.tar.gz archive.
After starting the virtual machine, copy the installation script from the host system to the home directory with scp.
scp lukas@192.168.7.1:/<location of repository>/install-groovy.sh .
2012-12-21 17:20:54 +08:00
2013-01-23 22:11:15 +08:00
Adjust configuration in install-groovy.sh and then run
sh ./install-groovy.sh
2012-12-21 17:20:54 +08:00
The installation script installs ros and starts roscore.
2013-01-23 22:11:15 +08:00
2013-02-01 22:02:05 +08:00
USE for cross-compilation of ROS-fuerte (discontinued):
2012-12-21 17:20:54 +08:00
source oe-init-build-env
bitbake ros
2013-01-23 22:11:15 +08:00
momentarily fails at some point with:
> CMake Error at catkin/cmake/find_program_required.cmake:5 (message):
> check_test_ran.py not found
> Call Stack (most recent call first):
> ../catkin/CMakeFiles/tests.cmake:31 (find_program_required)
> ../catkin/CMakeFiles/tests.cmake:41 (catkin_initialize_tests)
> catkin/cmake/all.cmake:54 (include)
> catkin/CMakeLists.txt:12 (include)
>
>
>
> -- Configuring incomplete, errors occurred!
>
>
> ERROR: Function failed: do_configure (see /home/lukas/NEW/poky-danny-8.0/build/tmp/work/i586-poky-linux/ros-1.0-r0/temp/log.do_configure.9702 for further information)
> ERROR: Logfile of failure stored in: /home/lukas/NEW/poky-danny-8.0/build/tmp/work/i586-poky-linux/ros-1.0-r0/temp/log.do_configure.9702
USE for cross-compilation of ROS-groovy (in development):
2013-02-01 22:02:05 +08:00
Currently, we can cross-compile 4 packages:
ros-cpp-common, rostime, roscpp-traits, roscpp-serialization (packages in roscpp_core)
with the commands:
2013-01-23 22:11:15 +08:00
source oe-init-build-env
2013-02-01 22:02:05 +08:00
bitbake <package-name>
2012-12-20 22:27:02 +08:00
2012-12-20 23:34:14 +08:00
2013-01-23 22:11:15 +08:00
RESOLVED ISSUES for native compilation:
2012-12-05 01:19:09 +08:00
2012-12-03 20:45:25 +08:00
- recipes for python-pyyaml and python-rospkg create invalid shell scripts (header line refers to python-native instead of python.)
2013-01-02 17:09:13 +08:00
RESOLVED by patching distutils class--has been committed to oe-core.
2012-12-05 20:10:33 +08:00
- recipe for log4cxx requires another patch.
RESOLVED by providing patch 0003 in recipe
2012-12-07 21:09:41 +08:00
- Compilation with make fails in the virtual machine because of insufficient memory during compilation.
RESOLVED by increasing memory.
2013-01-02 17:09:13 +08:00
- rospkg modules are not found when runnning python.
RESOLVED by using the dist_utils argument to use traditional packaging mechanism and avoid .egg files at all (suggested by Ross Burton)
2012-12-07 21:09:41 +08:00
2013-01-23 22:11:15 +08:00
OPEN ISSUES for native compilation:
2012-12-05 20:33:42 +08:00
2012-12-20 18:09:44 +08:00
- python-setuptools requires some python-modules at run-time.
2012-12-05 01:19:09 +08:00
TEMPORARILY RESOLVED by adding all python-modules in the image
SHOULD BE RESOLVED by creating an appropriate patch for python-setuptools and contributing to openembedded-core
2012-12-20 18:09:44 +08:00
2013-01-23 22:11:15 +08:00
OPEN ISSUES for cross-compilation of ros-fuerte:
2012-12-20 18:09:44 +08:00
- understand what rosinstall actually does
2012-12-20 23:34:14 +08:00
- how fetch from multiple git repositories in one recipe?
2012-12-19 22:04:35 +08:00
2012-12-21 16:06:37 +08:00
2012-12-20 23:34:14 +08:00
LICENSE
All metadata is MIT licensed unless otherwise stated. Source code included
in tree for individual recipes is under the LICENSE stated in each recipe
(.bb file) unless otherwise stated.
This README document is Copyright (C) 2012 BMW Car IT GmbH.
REDISTRIBUTIONS
The log4cxx recipe originated from the recipe in the OpenEmbedded (Classic) Development
(cf. http://cgit.openembedded.org/openembedded/tree/recipes/log4cxx)
licensed with the MIT License.
The core-image-ros recipe originated from the core-image-minimal recipe in OpenEmbedded Core
(cf. http://cgit.openembedded.org/openembedded-core/tree/meta/recipes-core/images/core-image-minimal.bb)
licensed with the MIT License.
2013-01-04 22:30:08 +08:00
The distutils class originated from the distutils class in OpenEmbedded Core
2012-12-20 23:34:14 +08:00
(cf. http://cgit.openembedded.org/openembedded-core/tree/meta/classes/distutils.bbclass)
licensed with the MIT License.
2013-01-04 22:30:08 +08:00
The libtinyxml recipe originated from the recipe in the OpenEmbedded meta layer
(cf. http://cgit.openembedded.org/meta-openembedded/tree/meta-oe/recipes-support/libtinyxml)
licensed with the MIT License.
2012-12-20 23:34:14 +08:00
The modified files are redistributed here under the same MIT License.