2015-09-23 17:55:34 +08:00
|
|
|
This is a layer to provide ROS Indigo Igloo in an OpenEmbedded Linux system.
|
2014-04-25 14:07:20 +08:00
|
|
|
It provides a stable cross-compilation build system for many common ROS packages.
|
|
|
|
Currently, this layer is still under continuous development.
|
2012-11-29 15:18:45 +08:00
|
|
|
|
2014-05-03 15:24:27 +08:00
|
|
|
## IMPORTANT RESOURCES ##
|
|
|
|
|
|
|
|
* Source Code Repository: https://github.com/bmwcarit/meta-ros.git
|
|
|
|
* Issue Tracker: https://github.com/bmwcarit/meta-ros/issues
|
2016-10-26 15:02:34 +08:00
|
|
|
* Discussion Forum: http://discourse.ros.org/c/openembedded
|
2015-08-28 15:38:25 +08:00
|
|
|
* Installation Guide: http://wiki.ros.org/hydro/Installation/OpenEmbedded
|
2014-05-03 15:24:27 +08:00
|
|
|
* Development Guides:
|
|
|
|
* https://github.com/bmwcarit/meta-ros/wiki/Guidelines-for-ROS-recipes
|
|
|
|
* https://github.com/bmwcarit/meta-ros/wiki/Developer-Guidelines
|
|
|
|
|
2016-10-26 15:02:34 +08:00
|
|
|
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.
|
|
|
|
|
2014-05-03 15:24:27 +08:00
|
|
|
|
2013-10-17 15:31:03 +08:00
|
|
|
## MAINTAINERS ##
|
|
|
|
|
|
|
|
* Lukas Bulwahn, BMW Car IT GmbH <lukas.bulwahn@oss.bmw-carit.de>
|
|
|
|
* Stefan Herbrechtsmeier, Bielefeld University <stefan@herbrechtsmeier.net>
|
2014-04-25 14:07:20 +08:00
|
|
|
* Kristof Robot <krirobo@gmail.com>
|
2017-04-10 19:47:24 +08:00
|
|
|
* Dmitry Rozhkov, Intel <dmitry.rozhkov@linux.intel.com>
|
2013-10-17 15:31:03 +08:00
|
|
|
|
|
|
|
|
|
|
|
## 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>
|
2013-11-05 16:05:20 +08:00
|
|
|
* Kristof Robot <krirobo@gmail.com>
|
2014-01-24 00:33:47 +08:00
|
|
|
* Khem Raj <raj.khem@gmail.com>
|
2014-04-25 14:07:20 +08:00
|
|
|
* Esteve Fernandez <esteve@apache.org>
|
|
|
|
* Jonas Sticha <jonas.sticha@bmw-carit.de>
|
2015-02-23 14:08:01 +08:00
|
|
|
* 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>
|
2017-04-10 19:47:24 +08:00
|
|
|
* Dmitry Rozhkov, Intel <dmitry.rozhkov@linux.intel.com>
|
2013-11-05 16:05:20 +08:00
|
|
|
|
2013-10-17 15:31:03 +08:00
|
|
|
|
|
|
|
## HOW TO CONTRIBUTE ##
|
2013-01-02 17:09:13 +08:00
|
|
|
|
2013-05-14 13:19:35 +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
|
|
|
|
|
|
|
|
2013-10-17 15:31:03 +08:00
|
|
|
## DEPENDENCIES ##
|
2012-12-20 23:34:14 +08:00
|
|
|
|
2013-05-14 13:19:35 +08:00
|
|
|
This layer depends on:
|
2013-01-02 18:43:49 +08:00
|
|
|
|
2014-08-19 14:36:43 +08:00
|
|
|
**openembedded-core**
|
2013-10-17 15:31:03 +08:00
|
|
|
URI: git://git.openembedded.org/openembedded-core
|
2014-08-19 14:36:43 +08:00
|
|
|
subdirectory: meta
|
2013-10-17 15:31:03 +08:00
|
|
|
branch: master
|
|
|
|
revision: HEAD
|
|
|
|
|
2014-08-19 14:36:43 +08:00
|
|
|
**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
|
|
|
|
2014-08-19 14:36:43 +08:00
|
|
|
**meta-python** (since a6d7ba92645a112af358efd94ff3aa0c74985a51@meta-openembedded)
|
2013-10-17 15:31:03 +08:00
|
|
|
URI: git://git.openembedded.org/meta-openembedded
|
2014-08-19 14:36:43 +08:00
|
|
|
subdirectory: meta-python
|
2013-10-17 15:31:03 +08:00
|
|
|
branch: master
|
|
|
|
revision: HEAD
|
2015-07-24 22:31:28 +08:00
|
|
|
|
|
|
|
**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
|
|
|
|
2017-02-27 17:51:01 +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.
|
|
|
|
|
2014-08-19 14:36:43 +08:00
|
|
|
**bitbake** > 1.20
|
2014-01-24 00:33:47 +08:00
|
|
|
|
2014-10-26 17:14:09 +08:00
|
|
|
|
2013-10-17 15:31:03 +08:00
|
|
|
## DEPENDENCIES ON RECENT COMMITS ##
|
2013-09-26 13:09:28 +08:00
|
|
|
|
2014-05-03 18:31:43 +08:00
|
|
|
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.
|
|
|
|
|
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.
|
|
|
|
|
2014-01-24 00:33:47 +08:00
|
|
|
Using wildcards in bbappend versions part in name depends on
|
|
|
|
31bc9af9cd56e7b318924869970e850993fafc5f@bitbake and
|
2014-02-26 02:12:40 +08:00
|
|
|
991cbeedbde8bd25ce08c669b1bfac8b99e33149@bitbake.
|
|
|
|
|
|
|
|
octomap-ros and collada-urdf depend on
|
|
|
|
43073569cb67d98c11aa71211d77b566b64f9145@openembedded-core and
|
|
|
|
783fb88f476c94d5d4f4b954f7053464d9a6dff5@openembedded-core.
|
2013-04-25 19:34:15 +08:00
|
|
|
|
2014-08-19 14:36:43 +08:00
|
|
|
urdfdom-py depends on the meta-python layer since
|
|
|
|
a6d7ba92645a112af358efd94ff3aa0c74985a51@meta-openembedded.
|
|
|
|
|
2016-06-07 21:30:54 +08:00
|
|
|
Since 3edf08b38b0af93cef0933b061349264dc86d54c@openembedded-core,
|
|
|
|
recipes relying on opencv need to activate the DISTRO\_FEATURE
|
|
|
|
opengl.
|
|
|
|
|
2016-09-13 16:24:46 +08:00
|
|
|
rosbridge-library depends on python-six, which is provided in meta-python
|
|
|
|
since a36869c700bed940f7f0aa4b9703ae630dc84eac@meta-openembedded.
|
|
|
|
|
2013-10-17 15:31:03 +08:00
|
|
|
## INSTALLATION ##
|
2013-05-14 13:19:35 +08:00
|
|
|
|
|
|
|
The repository contains a layer for ROS that builds on top of the
|
|
|
|
OpenEmbedded Core layer and the meta-oe layer.
|
|
|
|
|
2014-05-03 14:46:55 +08:00
|
|
|
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.
|
2013-03-20 15:07:39 +08:00
|
|
|
|
|
|
|
|
2013-10-17 15:31:03 +08:00
|
|
|
## USAGE ##
|
2013-03-20 15:07:39 +08:00
|
|
|
|
2014-10-26 17:14:09 +08:00
|
|
|
Initialize the build environment:
|
2013-10-17 15:31:03 +08:00
|
|
|
|
2013-05-14 13:19:35 +08:00
|
|
|
source oe-init-build-env
|
2014-10-26 17:14:09 +08:00
|
|
|
|
|
|
|
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 \
|
2015-07-24 22:31:28 +08:00
|
|
|
/home/me/devel/meta-openembedded/meta-multimedia \
|
2014-10-26 17:14:09 +08:00
|
|
|
/home/me/devel/meta-ros \
|
|
|
|
"
|
|
|
|
|
2017-04-10 19:47:24 +08:00
|
|
|
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"
|
|
|
|
|
2014-10-26 17:14:09 +08:00
|
|
|
Compile package:
|
|
|
|
|
2013-05-14 13:19:35 +08:00
|
|
|
bitbake <package-name>
|
2013-03-20 15:07:39 +08:00
|
|
|
|
2013-08-03 18:21:05 +08:00
|
|
|
The recipe core-image-ros-roscore provides a minimal Linux system that runs
|
|
|
|
roscore.
|
2012-11-29 15:18:45 +08:00
|
|
|
|
2013-05-14 13:19:35 +08:00
|
|
|
You can compile the minimal Linux system with
|
2013-10-17 15:31:03 +08:00
|
|
|
|
2013-08-03 18:21:05 +08:00
|
|
|
bitbake core-image-ros-roscore
|
|
|
|
|
|
|
|
Then for example, you start this system in the qemu virtual machine with
|
2013-10-17 15:31:03 +08:00
|
|
|
|
2013-08-03 18:21:05 +08:00
|
|
|
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>
|
2012-12-21 17:20:54 +08:00
|
|
|
|
2013-08-03 18:21:05 +08:00
|
|
|
to the /etc/hosts file, and set up the environment with
|
2013-01-23 22:11:15 +08:00
|
|
|
|
2016-10-28 17:03:52 +08:00
|
|
|
export ROS_ROOT=/opt/ros
|
2015-09-23 18:07:05 +08:00
|
|
|
export ROS_DISTRO=indigo
|
2015-09-23 18:21:22 +08:00
|
|
|
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
|
2013-05-14 13:19:35 +08:00
|
|
|
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
|
2012-12-21 17:20:54 +08:00
|
|
|
|
2013-05-14 13:19:35 +08:00
|
|
|
Finally, you can start roscore with
|
2013-10-17 15:31:03 +08:00
|
|
|
|
2013-05-14 13:19:35 +08:00
|
|
|
roscore
|
2013-01-23 22:11:15 +08:00
|
|
|
|
2016-10-28 17:17:36 +08:00
|
|
|
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.
|
|
|
|
|
2015-02-18 17:31:13 +08:00
|
|
|
|
|
|
|
## 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.
|
|
|
|
|
|
|
|
|
2013-10-17 15:31:03 +08:00
|
|
|
## LICENSE ##
|
2012-12-20 23:34:14 +08:00
|
|
|
|
2013-05-14 13:19:35 +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
|
|
|
|
2013-05-14 13:19:35 +08:00
|
|
|
This README document is Copyright (C) 2012 BMW Car IT GmbH.
|
2012-12-20 23:34:14 +08:00
|
|
|
|
|
|
|
|
2013-10-17 15:31:03 +08:00
|
|
|
## REDISTRIBUTIONS ##
|
2012-12-20 23:34:14 +08:00
|
|
|
|
2013-05-14 13:19:35 +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.
|
2013-10-17 15:31:03 +08:00
|
|
|
|
2013-07-19 17:03:50 +08:00
|
|
|
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.
|
2013-10-17 15:31:03 +08:00
|
|
|
|
2013-05-14 13:19:35 +08:00
|
|
|
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.
|
|
|
|
|
2013-05-24 13:05:46 +08:00
|
|
|
The original or modified files are redistributed here under the same MIT License.
|