Skip to content
Snippets Groups Projects
README 8.11 KiB
Newer Older
This is a layer to provide ROS in an openembedded linux system.
Lukas Bulwahn's avatar
Lukas Bulwahn committed
Currently, this layer is still under development and not fully functional.
Lukas Bulwahn's avatar
Lukas Bulwahn committed
AUTHOR
  Lukas Bulwahn, BMW Car IT GmbH <lukas.bulwahn@oss.bmw-carit.de>
Lukas Bulwahn's avatar
Lukas Bulwahn committed

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.


Lukas Bulwahn's avatar
Lukas Bulwahn committed
PURPOSE of this document:
Lukas Bulwahn's avatar
Lukas Bulwahn committed
  This document describes
  - the state of the current work
Lukas Bulwahn's avatar
Lukas Bulwahn committed
  - 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

Lukas Bulwahn's avatar
Lukas Bulwahn committed

STATE OF THIS WORK:

  This repository provides
  - Native compilation of ROS-fuerte
  - Native compilation of ROS-groovy
  - Attempt of cross-compilation of ROS-fuerte (in development)
  - Attempt of cross-compilation of catkin 0.5.58 (shipped with ROS-groovy) (in development)
  - Attempt of cross-compilation of ROS-groovy (in development)

Lukas Bulwahn's avatar
Lukas Bulwahn committed
INSTALLATION:
  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.
Lukas Bulwahn's avatar
Lukas Bulwahn committed
  To install, unpack http://downloads.yoctoproject.org/releases/yocto/yocto-1.3/poky-danny-8.0.tar.bz2 into a directory <dir>.
  
  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.

Lukas Bulwahn's avatar
Lukas Bulwahn committed
USE for native compilation on the VM (milestone M1):
  The commands
    source oe-init-build-env
Lukas Bulwahn's avatar
Lukas Bulwahn committed
    bitbake core-image-ros
  builds our specifically configured linux image.
  
Lukas Bulwahn's avatar
Lukas Bulwahn committed
  With `runqemu qemux86-64 qemuparams="-m 2048" core-image-ros` 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-64 architecture. For other architectures, some settings must be adjusted.
Lukas Bulwahn's avatar
Lukas Bulwahn committed
  On the host system, run fetch_ros.sh in a fresh directory, e.g. ~/ros-repos/.
  It clones all ros repositories locally.
  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.sh .

  Adjust configuration in install.sh and then run

  
  The installation script installs ros and starts roscore.

USE for cross-compilation (milestone M2):
   
  source oe-init-build-env
  bitbake ros

  momentarily fails at some point (see CURRENT STATE)
CONTENT of the repository:

Lukas Bulwahn's avatar
Lukas Bulwahn committed
  README                                                   this README file, which contains all important information
Lukas Bulwahn's avatar
Lukas Bulwahn committed
  COPYING.MIT
  conf/layer.conf                                          configuration file for this layer
Lukas Bulwahn's avatar
Lukas Bulwahn committed
  install.sh                                               installation script that runs within the virtual machine
Lukas Bulwahn's avatar
Lukas Bulwahn committed
  recipes-core/images/core-image-ros.bb                    recipe for our own core image (derived from core-image-minimal)
Lukas Bulwahn's avatar
Lukas Bulwahn committed
  recipes-devtools/python/python-pyyaml_3.10.bb            recipe for pyyaml python library
  recipes-devtools/python/python-rospkg_1.0.15.bb          recipe for rospkg tool
  recipes-devtools/python/python-empy_3.3.bb               recipe for empy python library
  recipes-devtools/python/python-nose_1.2.1.bb             recipe for nose python library
  recipes-devtools/python/python-rosinstall_0.6.21.bb      recipe for rosinstall tool
Lukas Bulwahn's avatar
Lukas Bulwahn committed
  recipes-devtools/python/python-vcstools_0.1.26.bb        recipe required by rosinstall tool
  recipes-devtools/python/python-dateutil_1.5.bb           recipe required by rosinstall tool
Lukas Bulwahn's avatar
Lukas Bulwahn committed
  recipes-devtools/python/python-pyyaml-native_3.10.bb     native recipes for cross-compilation
  recipes-devtools/python/python-rospkg-native_1.0.15.bb
  recipes-devtools/python/python-empy-native_3.3.bb
  recipes-devtools/python/python-nose-native_1.2.1.bb
  recipes-devtools/log4cxx                                 recipes and patches for log4cxx 0.10.0
  recipes-devtools/log4cxx/log4cxx_0.10.0.bb
  recipes-devtools/log4cxx/log4cxx/0001-log4cxx_0-10-0_add-missing-includes.patch
  recipes-devtools/log4cxx/log4cxx/0003-log4cxx-0.10.0-add_stdio_header.patch
  recipes-devtools/log4cxx/log4cxx/0002-Remove-duplicates-from-makefile.patch
  recipes-ros/ros/ros.bb                                   recipe for ros (incomplete)
  recipes-ros/ros/ros/fuerte-ros-base.rosinstall           the .rosinstall file to download ros
  classes/distutils.bbclass                                distutils recipe originated from oe-core (patch submitted to oe-core and accepted)
Lukas Bulwahn's avatar
Lukas Bulwahn committed
  classes/setuptools.bbclass                               adjustments for python setuptools
Lukas Bulwahn's avatar
Lukas Bulwahn committed

Lukas Bulwahn's avatar
Lukas Bulwahn committed

Lukas Bulwahn's avatar
Lukas Bulwahn committed
MILESTONES
Lukas Bulwahn's avatar
Lukas Bulwahn committed
  M1: basic image with dev-tools (make, cmake, ...) and ROS compiles natively in the virtual machine
  M2: Linux+ROS System can be built completely with bitbake (no compilation and installing in the virtual machine)
Lukas Bulwahn's avatar
Lukas Bulwahn committed
  M3: Linux+ROS System with configured kernel (e.g. RT-Linux, System-D) that meets real-time and safety requirements 
Lukas Bulwahn's avatar
Lukas Bulwahn committed

RESOLVED ISSUES for M1:
Lukas Bulwahn's avatar
Lukas Bulwahn committed
  - recipes for python-pyyaml and python-rospkg create invalid shell scripts (header line refers to python-native instead of python.)
Lukas Bulwahn's avatar
Lukas Bulwahn committed
    RESOLVED by patching distutils class--has been committed to oe-core.
Lukas Bulwahn's avatar
Lukas Bulwahn committed
  - recipe for log4cxx requires another patch.
    RESOLVED by providing patch 0003 in recipe
  - Compilation with make fails in the virtual machine because of insufficient memory during compilation.
    RESOLVED by increasing memory.
Lukas Bulwahn's avatar
Lukas Bulwahn committed
  - 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)
Lukas Bulwahn's avatar
Lukas Bulwahn committed
OPEN ISSUES for M1:

Lukas Bulwahn's avatar
Lukas Bulwahn committed
  - python-setuptools requires some python-modules at run-time.
    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
Lukas Bulwahn's avatar
Lukas Bulwahn committed

OPEN ISSUES for M2:
  - understand what rosinstall actually does
Lukas Bulwahn's avatar
Lukas Bulwahn committed
  - how fetch from multiple git repositories in one recipe?

CURRENT STATE:

`bitbake ros` fails 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
Lukas Bulwahn's avatar
Lukas Bulwahn committed


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.
The distutils class originated from the distutils class in OpenEmbedded Core
Lukas Bulwahn's avatar
Lukas Bulwahn committed
  (cf. http://cgit.openembedded.org/openembedded-core/tree/meta/classes/distutils.bbclass)
  licensed with the MIT License.
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.
Lukas Bulwahn's avatar
Lukas Bulwahn committed

The modified files are redistributed here under the same MIT License.