Skip to content
This repository was archived by the owner on Aug 5, 2022. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -38,3 +38,6 @@
[submodule "meta-yocto"]
path = meta-yocto
url = https://git.yoctoproject.org/git/meta-yocto
[submodule "meta-ros"]
path = meta-ros
url = https://github.com/bmwcarit/meta-ros.git
67 changes: 67 additions & 0 deletions doc/industrial-profile.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
Industrial Robotics profile
###########################

Introduction
============

The purpose of the industrial profile is to provide a solid base for
developing robotics applications that can be used for labour automation in
manufacturing, logistics and other domains.

Target audience
===============

The profile is for anybody who is interested in developing such applications
on top of Intel hardware. The main use cases are:

#. Welding/Soldering;
#. Material handling;
#. Dispensing/Coating;
#. Pick and place.

However combined with the computer vision profile they can be extended to
other applications like drones, self-driving cars, agricultural robots etc.

Value proposition
=================

Industrial Robotics profile is made to simplify creation of products using
robotics technologies and is tailored for embedded hardware. Being a part of
Yocto layer it provides full control over build configuration. Unlike
other robotics projects the profile is independent from external binary
package streams.

Key components
==============

So far the `ROS Industrial`_ (ROS-I) project has been identified as a starting
point for the base and this profile includes core packages from the project
and their direct dependencies.

ROS-I is a layer between `ROS`_ (a set of software libraries and tools used
in robot applications) and industrial hardware equipment converting
messages in ROS formats to something understandable by actual hardware.
Although no vendor specific packages are included at the moment.

Currently the profile includes:

- core ROS components,
- libraries for handling geometry and kinematics models of robots in
the URDF format,
- components from the `MoveIt!`_ framework responsible for a robot's
joints movement planning,
- core ROS-I components used for interfacing with real robot hardware.

Due to the embedded nature of IoT Refkit no GUI components have been included
in the profile. Users are expected to run ROS GUI nodes (e.g. Rviz) on
their workstations if there's such a need.

For detailed usage instructions please refer `ROS Industrial tutorials`_

The ``meta-refkit-extra`` layer contains example ROS applications and
detailed instructions on how to run them.

.. _ROS Industrial: http://rosindustrial.org
.. _ROS: http://ros.org
.. _MoveIt!: http://moveit.ros.org
.. _ROS Industrial tutorials: http://wiki.ros.org/Industrial/Tutorials
1 change: 1 addition & 0 deletions doc/profiles.rst
Original file line number Diff line number Diff line change
Expand Up @@ -61,3 +61,4 @@ Profile Summary
#. refkit-image-common: A configuration with interactive tools but without any special software in it. Recommended target if you are not interested in any given profile.
#. refkit-image-computervision: A profile with tools and configuration for computer vision use cases.
#. refkit-image-gateway: A profile with tools and configuration for acting as an IoT sensor.
#. refkit-image-industrial: A profile with tools for industrial use cases, i.e. ROS Industrial packages intended to be used in industrial robotics applications.
3 changes: 3 additions & 0 deletions meta-refkit-core/conf/distro/include/refkit-config.inc
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,9 @@ REFKIT_DEFAULT_DISTRO_FEATURES += "refkit-firewall"
# Reconfigure several upstream recipes for the computer vision profile.
REFKIT_DEFAULT_DISTRO_FEATURES += "refkit-computervision"

# Reconfigure several upstream recipes for the industrial profile.
REFKIT_DEFAULT_DISTRO_FEATURES += "refkit-industrial"

# Misc recipe changes for the Refkit distro. May also be useful
# for distros not called "refkit" and thus has its own DISTRO_FEATURE and
# "refkit-config" override.
Expand Down
1 change: 1 addition & 0 deletions meta-refkit-core/conf/distro/include/refkit-overrides.inc
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ DISTROFEATURES2OVERRIDES += " \
refkit-firewall \
refkit-computervision \
refkit-gateway \
refkit-industrial \
"

INHERIT += "distrooverrides"
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,11 @@ SECURITY_CFLAGS_pn-tbb = "${SECURITY_NO_PIE_CFLAGS} ${SECURITY_PIC_CFLAGS}"
SECURITY_CFLAGS_pn-protobuf = "${SECURITY_NO_PIE_CFLAGS} ${SECURITY_PIC_CFLAGS}"
SECURITY_CFLAGS_pn-glog = "${SECURITY_NO_PIE_CFLAGS} ${SECURITY_PIC_CFLAGS}"
SECURITY_CFLAGS_pn-clang = "${SECURITY_NO_PIE_CFLAGS} ${SECURITY_PIC_CFLAGS}"
SECURITY_CFLAGS_pn-log4cxx = "${SECURITY_NO_PIE_CFLAGS} ${SECURITY_PIC_CFLAGS}"
SECURITY_CFLAGS_pn-python3-lxml = "${SECURITY_NO_PIE_CFLAGS} ${SECURITY_PIC_CFLAGS}"
SECURITY_CFLAGS_pn-python3-netifaces = "${SECURITY_NO_PIE_CFLAGS} ${SECURITY_PIC_CFLAGS}"
SECURITY_CFLAGS_pn-python3-pyyaml = "${SECURITY_NO_PIE_CFLAGS} ${SECURITY_PIC_CFLAGS}"
SECURITY_CFLAGS_pn-moveit-ros-perception = "${SECURITY_NO_PIE_CFLAGS} ${SECURITY_PIC_CFLAGS}"

# openjdk-8 ends up linking with "-shared -pie -fpie" in some cases (see
# hotspot/make/linux/makefiles/saproc.make) which then tries (and fails) to
Expand All @@ -30,3 +35,4 @@ SECURITY_STRINGFORMAT_pn-giflib = ""
SECURITY_STRINGFORMAT_pn-gsignond = ""
SECURITY_STRINGFORMAT_pn-openjdk-8 = ""
SECURITY_STRINGFORMAT_pn-openjre-8 = ""
SECURITY_STRINGFORMAT_pn-qhull = ""
Original file line number Diff line number Diff line change
@@ -1,12 +1,26 @@
caffe@refkit-extra
household-objects-database-msgs@ros-layer
hdf5@refkit-extra
leveldb@openembedded-layer
lmdb@refkit-extra
manipulation-msgs@ros-layer
moveit-kinematics@ros-layer
moveit-planners-ompl@ros-layer
moveit-ros-manipulation@ros-layer
moveit-ros-move-group@ros-layer
moveit-simple-controller-manager@ros-layer
ompl@ros-layer
openblas@refkit-extra
python3-imageio@refkit-extra
python3-pillow@refkit-extra
python3-protobuf@refkit-extra
python3-pycparser@meta-python
python3-pyrealsense@refkit-extra
python3-six@core
refkit-ros-tests@refkit-extra
robot-state-publisher@ros-layer
snappy@refkit-extra
std-srvs@ros-layer
tf2-kdl@ros-layer
uarmmetal-moveit-config@refkit-extra
uarmmetal-support@refkit-extra
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@ SECURITY_CFLAGS_pn-python3-pillow = "${SECURITY_NO_PIE_CFLAGS} ${SECURITY_PIC_CF
SECURITY_CFLAGS_pn-snappy = "${SECURITY_NO_PIE_CFLAGS} ${SECURITY_PIC_CFLAGS}"
SECURITY_CFLAGS_pn-leveldb = "${SECURITY_NO_PIE_CFLAGS} ${SECURITY_PIC_CFLAGS}"
SECURITY_CFLAGS_pn-python3-pyrealsense = "${SECURITY_NO_PIE_CFLAGS} ${SECURITY_PIC_CFLAGS}"
SECURITY_CFLAGS_pn-moveit-planners-ompl = "${SECURITY_NO_PIE_CFLAGS} ${SECURITY_PIC_CFLAGS}"
51 changes: 51 additions & 0 deletions meta-refkit-extra/doc/robotics-helloworld.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
Introduction
============

The core of the ROS project is a XMLRPC-based publisher-subscriber
middleware. This instruction documents how to run a simple ROS
application in IoT Refkit. The application is documented in
the `Writing a Simple Publisher and Subscriber`_ tutorial.

How to run
==========

1. Create an image containing the package `refkit-ros-tests`, e.g. by putting
this line in your `local.conf`::

IMAGE_INSTALL_append = " refkit-ros-tests"

and running::

$ bitbake refkit-image-common

2. Start up a QEMU VM with the built image::

$ runqemu ovmf refkit-image-common wic slirp serial nographic

3. Set up ROS environment in the VM::

export ROS_ROOT=/opt/ros
export ROS_DISTRO=indigo
export ROS_PACKAGE_PATH=/opt/ros/indigo/share
export PATH=$PATH:/opt/ros/indigo/bin
export LD_LIBRARY_PATH=/opt/ros/indigo/lib
export PYTHONPATH=/opt/ros/indigo/lib/python3.5/site-packages
export ROS_MASTER_URI=http://localhost:11311
export CMAKE_PREFIX_PATH=/opt/ros/indigo
touch /opt/ros/indigo/.catkin

4. Launch all the needed ROS nodes with the command::

roslaunch refkit_ros_tests helloworld.launch

If everything is correct then two nodes get launched:

- a publisher node sending standard string messages "hello world" to a ROS
topic and
- a subscriber node listening to the topic and exiting upon the
message.

As soon as the subscriber node exits all the other nodes should
exit successfully.

.. _Writing a Simple Publisher and Subscriber: http://wiki.ros.org/ROS/Tutorials/WritingPublisherSubscriber%28python%29
Loading