meta-ros/README.md

313 lines
12 KiB
Markdown
Raw Normal View History

# Rebaseable Branch `morty-draft`
**NOTICE:** This branch may be rebased without warning. You are advised to
specify the `--rebase` option when pulling.
# Under Construction!
This repo has been forked from the original implementation of `meta-ros` for
ROS 1 Indigo Igloo at <https://github.com/bmwcarit/meta-ros>. As of 2019-05-21,
it is in the process of being upgraded to be able to build current ROS 1 and
ROS 2 distros (Crystal Clemmys, Dashing Diademata, and eventually
Melodic Morenia and Bouncy Bolson) from recipes generated by
[superflore](https://github.com/ros-infrastructure/superflore/pull/168)
and will not be usable for a little while. Please see this
[wiki page](https://github.com/ros/meta-ros/wiki/Proposed-Superflore-OE-Recipe-Generation-Scheme)
for details of what is being done.
# Contents of Previous README
2015-09-23 17:55:34 +08:00
This is a layer to provide ROS Indigo Igloo in an OpenEmbedded Linux system.
It provides a stable cross-compilation build system for many common ROS packages.
Currently, this layer is still under continuous development.
## IMPORTANT RESOURCES ##
* Source Code Repository: https://github.com/bmwcarit/meta-ros.git
* Issue Tracker: https://github.com/bmwcarit/meta-ros/issues
* Discussion Forum: http://discourse.ros.org/c/openembedded
* Installation Guide: http://wiki.ros.org/hydro/Installation/OpenEmbedded
* Development Guides:
* https://github.com/bmwcarit/meta-ros/wiki/Guidelines-for-ROS-recipes
* https://github.com/bmwcarit/meta-ros/wiki/Developer-Guidelines
Note: In October 2016, the mailing list at
https://groups.google.com/forum/#!forum/meta-ros has been discontinued and
discussion has moved to http://discourse.ros.org/c/openembedded.
However, the mailing list is still a good resource on issues that have been
resolved in the past.
## MAINTAINERS ##
* Lukas Bulwahn, BMW Car IT GmbH <lukas.bulwahn@oss.bmw-carit.de>
* Stefan Herbrechtsmeier, Bielefeld University <stefan@herbrechtsmeier.net>
* Kristof Robot <krirobo@gmail.com>
* Dmitry Rozhkov, Intel <dmitry.rozhkov@linux.intel.com>
## CONTRIBUTORS ##
* Lukas Bulwahn, BMW Car IT GmbH <lukas.bulwahn@oss.bmw-carit.de>
* Stefan Herbrechtsmeier, Bielefeld University <stefan@herbrechtsmeier.net>
* Tobias Weigl, BMW Car IT GmbH <tobias.weigl@bmw-carit.de>
* Kartik Mohta <kartikmohta@gmail.com>
* Koen Kooi <koen@dominion.thruhere.net>
* Victor Mayoral Vilches <v.mayoralv@gmail.com>
* Sergey 'Jin' Bostandzhyan <jin@dev.digitalstrom.org>
* Andreas Hildisch, BMW Car IT GmbH <andreas.hildisch@bmw-carit.de>
2013-10-21 15:46:17 +08:00
* William <william@friedcircuits.us>
* Kristof Robot <krirobo@gmail.com>
* Khem Raj <raj.khem@gmail.com>
* Esteve Fernandez <esteve@apache.org>
* Jonas Sticha <jonas.sticha@bmw-carit.de>
* Pascal Bach <pascal.bach@siemens.com>
* Andreas Galauner <andreas@galauner.de>
* Peter S. Housel <housel@acm.org>
* Gauthier Monserand <simkim@simkim.net>
* Timo Mueller <timo.mueller@bmw-carit.de>
* Andreas Baak <andreas.baak@bmw-carit.de>
* Dmitry Rozhkov, Intel <dmitry.rozhkov@linux.intel.com>
## HOW TO CONTRIBUTE ##
2013-01-02 17:09:13 +08:00
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 to join forces.
2013-01-02 17:09:13 +08:00
## DEPENDENCIES ##
2012-12-20 23:34:14 +08:00
This layer depends on:
2013-01-02 18:43:49 +08:00
**openembedded-core**
URI: git://git.openembedded.org/openembedded-core
subdirectory: meta
branch: master
revision: HEAD
**meta-openembedded (meta-oe)**
URI: git://git.openembedded.org/meta-openembedded
subdirectory: meta-oe
branch: master
revision: HEAD
2013-01-09 15:07:40 +08:00
**meta-python** (since a6d7ba92645a112af358efd94ff3aa0c74985a51@meta-openembedded)
URI: git://git.openembedded.org/meta-openembedded
subdirectory: meta-python
branch: master
revision: HEAD
**meta-multimedia** (since fe44ac167a2a76531af3519f3889fce92024567b@meta-openembedded)
URI: git://git.openembedded.org/meta-openembedded
subdirectory: meta-multimedia
branch: master
revision: HEAD
2013-01-09 15:07:40 +08:00
**meta-intel-realsense** (since 4a5ba0f20094dd3d07c0a0c1dede2ba40e9d6abf)
URI: https://github.com/IntelRealSense/meta-intel-realsense
branch: master
revision: HEAD
This layer is required only if you need to build realsense-camera driver.
**bitbake** > 1.20
## DEPENDENCIES ON RECENT COMMITS ##
Here, we list which parts of this layer depend on recent commits in the
bitbake, openembedded-core and meta-openembedded repositories. Using
`git blame` on the lines below, you can find the commits in meta-ros that
rely on the remote commits. In case of porting to other versions, you must
possibly revert some of those commits.
ament-cmake-core depends on python3-pyparsing which is available in
meta-python since pyro
1a373a033f482981eb59ff8d9eb7a9437fa18cd4@meta-openembedded and native
version since rocko
06eb9d658e71b6a61f2589d9618ae2ca35eaaf8b@meta-openembedded
python3-pyparsing-native depends on python3-datetime-native,
python3-debugger-native and python3-stringold-native which were added
in oe-core python3-native in pyro:
462ccb35a5de32b52ddb733d1868df6ac5426f20@openembedded-core and
800753069f667cd1664d70b3779150c467e3b3fe@openembedded-core simple
bbappend as shown in:
https://github.com/bmwcarit/meta-ros/pull/607#pullrequestreview-143981126
is enough to resolve this if you're using old pyro unsupported
release.
ros2topic (and few more recipes when ROS_USE_PYTHON3 is set to yes)
depends on python3-pyyaml which was added in
1161ab8f8dda272eb5d09917446cc5b971be1335@meta-openembedded.
2013-10-17 14:53:11 +08:00
cv-bridge and dependent recipes, e.g., the image-transport recipes, depend on
7568bfdd114597956a1da68746f207ec7f93a48d@openembedded-core.
python-numpy: drop now superfluous bbappend file In the meta-ros commit b6080314 (commit date: 2013-11-17) [1], we add python-numpy_1.7.0.bbappend to provide python-numpy as native package, as the version update to cv-bridge 1.10.14 needs that. Coincidentally, Ross Burton added native support to the python-numpy recipe in the meta-openembedded commit c13c5f40 (commit date: 2013-11-18) [2]. However, the existing bbappend in meta-ros was still required for use with releases before commit c13c5f40. On 2014-01-14, the python-numpy recipe was moved from meta-oe to openembedded-core (commit a4415f89 and 9bf355cc [3, 4]). Now, on 2015-12-16, the python-numpy recipe was updated to 1.10.1 (commit 3c3932f3 [5]), and hence, our version-specific bbappend file fails to apply. As the native package addition is now in the recipe for over two years (commit date: 2013-11-18), and we assume all users to work on versions where the change has been included, we simply drop our now superfluous bbappend file. [1] https://github.com/bmwcarit/meta-ros/commit/b6080314504be62c8fbfcb1d583e688448a2f023 [2] http://cgit.openembedded.org/meta-openembedded/commit/?id=c13c5f40160d289bb62538a16900fed30621cb22 [3] http://cgit.openembedded.org/meta-openembedded/commit/?id=a4415f89e533a59ba358f8575d56216d3650e59e [4] http://cgit.openembedded.org/openembedded-core/commit/?id=9bf355cceaec6ebacdcbcc35f9713ff73e1c85da [5] http://cgit.openembedded.org/openembedded-core/commit/?id=3c3932f3560c898e32287c8733b61180685ee539 Signed-off-by: Lukas Bulwahn <lukas.bulwahn@oss.bmw-carit.de>
2015-12-17 16:10:40 +08:00
For native python-numpy support, these recipes also depend on
c13c5f40160d289bb62538a16900fed30621cb22@meta-openembedded or on
9bf355cceaec6ebacdcbcc35f9713ff73e1c85da@openembedded-core.
2013-10-17 14:53:11 +08:00
Some recipes that need the Eigen library, e.g., the pcl-ros recipe, depend on
424e3c1b930c0103c2cedfd4df1671e84a5256d5@meta-openembedded.
Using wildcards in bbappend versions part in name depends on
31bc9af9cd56e7b318924869970e850993fafc5f@bitbake and
991cbeedbde8bd25ce08c669b1bfac8b99e33149@bitbake.
octomap-ros and collada-urdf depend on
43073569cb67d98c11aa71211d77b566b64f9145@openembedded-core and
783fb88f476c94d5d4f4b954f7053464d9a6dff5@openembedded-core.
urdfdom-py depends on the meta-python layer since
a6d7ba92645a112af358efd94ff3aa0c74985a51@meta-openembedded.
Since 3edf08b38b0af93cef0933b061349264dc86d54c@openembedded-core,
recipes relying on opencv need to activate the DISTRO\_FEATURE
opengl.
rosbridge-library depends on python-six, which is provided in meta-python
since a36869c700bed940f7f0aa4b9703ae630dc84eac@meta-openembedded.
## INSTALLATION ##
The repository contains a layer for ROS that builds on top of the
OpenEmbedded Core layer and the meta-oe layer.
We try our best to keep up with the development of the current HEAD
of the layers mentioned above. If you notice any problems with the
current HEAD, please report this in our issue tracker.
You can use this layer with earlier versions of the layers mentioned above
and their release branches, dora and daisy, with a few minor adjustments.
The section "dependencies on recent commits" in this file provides a few
pointers to adjust this layer for other versions.
## USAGE ##
Initialize the build environment:
source oe-init-build-env
Add the required layers (see **DEPENDENCIES**) by modifying ``./conf/bblayers.conf`` (adjust ``/home/me/devel`` as necessary):
BBLAYERS ?= " \
/home/me/devel/openembedded-core/meta \
/home/me/devel/meta-openembedded/meta-oe \
/home/me/devel/meta-openembedded/meta-python \
/home/me/devel/meta-openembedded/meta-multimedia \
/home/me/devel/meta-ros \
"
By default meta-ros uses python2 in all its recipes. If you want ROS packages
to use python3 then add the following line in your `./conf/local.conf` file:
ROS_USE_PYTHON3 = "yes"
Compile package:
bitbake <package-name>
The recipe core-image-ros-roscore provides a minimal Linux system that runs
roscore.
You can compile the minimal Linux system with
bitbake core-image-ros-roscore
Then for example, you start this system in the qemu virtual machine with
runqemu <MACHINE> core-image-ros-roscore
On the Linux system, ensure that the own host's name in resolved by adding
127.0.0.1 <HOSTNAME>.localdomain <HOSTNAME>
to the /etc/hosts file, and set up the environment with
export ROS_ROOT=/opt/ros
export ROS_DISTRO=indigo
export ROS_PACKAGE_PATH=/opt/ros/indigo/share
2015-05-21 02:22:23 +08:00
export PATH=$PATH:/opt/ros/indigo/bin
export LD_LIBRARY_PATH=/opt/ros/indigo/lib
export PYTHONPATH=/opt/ros/indigo/lib/python2.7/site-packages
export ROS_MASTER_URI=http://localhost:11311
2015-05-21 02:22:23 +08:00
export CMAKE_PREFIX_PATH=/opt/ros/indigo
touch /opt/ros/indigo/.catkin
Finally, you can start roscore with
roscore
If you want to use the roswtf utility for diagnostics and experience an
exception like
rospkg.os_detect.OsNotDetected: Could not detect OS, tried ['windows', 'ubuntu', 'slackware', 'rhel', 'qnx', 'osx', 'opensuse', 'opensuse', 'mint', 'linaro', 'gentoo', 'funtoo', 'freebsd', 'fedora', 'elementary', 'debian', 'cygwin', 'centos', 'arch']
then you need to set `ROS_OS_OVERRIDE` to one of the listed OS names, e.g.
export ROS_OS_OVERRIDE=ubuntu
And since Yocto-based distributions are not supported by the `rospkg`
library you have to interpret roswtf's output by translating Ubuntu
package names manually to their corresponding package/recipe names that
were chosen in the meta-ros layer.
## CROSS-COMPILING ALL ROS PACKAGES IN meta-ros
The meta-ros layers only includes a subset of the officially released ROS
packages, available from packages.ros.org. The here provided ROS packages
are mainly driven by the current users' needs.
For ROS packages that depend on cv-bridge, the commercial license flag
must be whitelisted, as cv-bridge depends on opencv, and opencv by
default depends on libav that has special terms and conditions when used
commercially.
This can be done by adding to the local.conf the line:
LICENSE_FLAGS_WHITELIST = "commercial"
Alternatively, the dependency from opencv on libav can be explicit excluded
by modifying the PACKAGECONFIG setting.
## LICENSE ##
2012-12-20 23:34:14 +08:00
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.
The descriptions in the recipes of ROS packages have been extracted from
the ROS wiki (http://www.ros.org/wiki/) and are licensed under
Creative Commons Attribution 3.0 (http://creativecommons.org/licenses/by/3.0/)
unless otherwise noted.
2012-12-20 23:34:14 +08:00
This README document is Copyright (C) 2012 BMW Car IT GmbH.
2012-12-20 23:34:14 +08:00
## REDISTRIBUTIONS ##
2012-12-20 23:34:14 +08:00
The log4cxx recipe originated from the recipe in the OpenEmbedded (Classic) Development
2012-12-20 23:34:14 +08:00
(cf. http://cgit.openembedded.org/openembedded/tree/recipes/log4cxx)
licensed with the MIT License.
The yaml-cpp recipe originated from the recipe in Kartik Mohta's OpenEmbedded layer
(cf. https://github.com/kartikmohta/meta-km/blob/master/recipes-devtools/yaml-cpp/yaml-cpp_0.3.0.bb)
licensed with the MIT License.
The python-ecdsa recipe originated from the recipe in the OpenStack Yocto layer
(cf. http://git.yoctoproject.org/clean/cgit.cgi/meta-cloud-services/tree/meta-openstack/recipes-devtools/python/python-ecdsa_0.13.bb?id=38973e8bc393a4ca36090c58c8b6eb6d093ea69a)
licensed with the MIT License.
The python-pbr recipe originated from the recipe in the meta-python layer
(cf. http://git.openembedded.org/meta-openembedded/tree/meta-python/recipes-devtools/python/python-pbr_3.1.1.bb?id=b3eb3c647dc86306d9346bea621fb4b6994ec461)
licensed with the MIT License.
The core-image-ros-* recipes originated from the core-image-minimal recipe in OpenEmbedded Core
2012-12-20 23:34:14 +08:00
(cf. http://cgit.openembedded.org/openembedded-core/tree/meta/recipes-core/images/core-image-minimal.bb)
licensed with the MIT License.
The original or modified files are redistributed here under the same MIT License.