Skip to content
This repository was archived by the owner on Aug 5, 2022. It is now read-only.

Commit ab3ce6e

Browse files
authored
Merge pull request #49 from rojkov/ros-public
Add industrial profile
2 parents 6020d4f + 5a17eb6 commit ab3ce6e

84 files changed

Lines changed: 5563 additions & 5 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitmodules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,3 +38,6 @@
3838
[submodule "meta-yocto"]
3939
path = meta-yocto
4040
url = https://git.yoctoproject.org/git/meta-yocto
41+
[submodule "meta-ros"]
42+
path = meta-ros
43+
url = https://github.com/bmwcarit/meta-ros.git

doc/industrial-profile.rst

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
Industrial Robotics profile
2+
###########################
3+
4+
Introduction
5+
============
6+
7+
The purpose of the industrial profile is to provide a solid base for
8+
developing robotics applications that can be used for labour automation in
9+
manufacturing, logistics and other domains.
10+
11+
Target audience
12+
===============
13+
14+
The profile is for anybody who is interested in developing such applications
15+
on top of Intel hardware. The main use cases are:
16+
17+
#. Welding/Soldering;
18+
#. Material handling;
19+
#. Dispensing/Coating;
20+
#. Pick and place.
21+
22+
However combined with the computer vision profile they can be extended to
23+
other applications like drones, self-driving cars, agricultural robots etc.
24+
25+
Value proposition
26+
=================
27+
28+
Industrial Robotics profile is made to simplify creation of products using
29+
robotics technologies and is tailored for embedded hardware. Being a part of
30+
Yocto layer it provides full control over build configuration. Unlike
31+
other robotics projects the profile is independent from external binary
32+
package streams.
33+
34+
Key components
35+
==============
36+
37+
So far the `ROS Industrial`_ (ROS-I) project has been identified as a starting
38+
point for the base and this profile includes core packages from the project
39+
and their direct dependencies.
40+
41+
ROS-I is a layer between `ROS`_ (a set of software libraries and tools used
42+
in robot applications) and industrial hardware equipment converting
43+
messages in ROS formats to something understandable by actual hardware.
44+
Although no vendor specific packages are included at the moment.
45+
46+
Currently the profile includes:
47+
48+
- core ROS components,
49+
- libraries for handling geometry and kinematics models of robots in
50+
the URDF format,
51+
- components from the `MoveIt!`_ framework responsible for a robot's
52+
joints movement planning,
53+
- core ROS-I components used for interfacing with real robot hardware.
54+
55+
Due to the embedded nature of IoT Refkit no GUI components have been included
56+
in the profile. Users are expected to run ROS GUI nodes (e.g. Rviz) on
57+
their workstations if there's such a need.
58+
59+
For detailed usage instructions please refer `ROS Industrial tutorials`_
60+
61+
The ``meta-refkit-extra`` layer contains example ROS applications and
62+
detailed instructions on how to run them.
63+
64+
.. _ROS Industrial: http://rosindustrial.org
65+
.. _ROS: http://ros.org
66+
.. _MoveIt!: http://moveit.ros.org
67+
.. _ROS Industrial tutorials: http://wiki.ros.org/Industrial/Tutorials

doc/profiles.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,3 +61,4 @@ Profile Summary
6161
#. 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.
6262
#. refkit-image-computervision: A profile with tools and configuration for computer vision use cases.
6363
#. refkit-image-gateway: A profile with tools and configuration for acting as an IoT sensor.
64+
#. refkit-image-industrial: A profile with tools for industrial use cases, i.e. ROS Industrial packages intended to be used in industrial robotics applications.

meta-refkit-core/conf/distro/include/refkit-config.inc

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,9 @@ REFKIT_DEFAULT_DISTRO_FEATURES += "refkit-firewall"
4747
# Reconfigure several upstream recipes for the computer vision profile.
4848
REFKIT_DEFAULT_DISTRO_FEATURES += "refkit-computervision"
4949

50+
# Reconfigure several upstream recipes for the industrial profile.
51+
REFKIT_DEFAULT_DISTRO_FEATURES += "refkit-industrial"
52+
5053
# Misc recipe changes for the Refkit distro. May also be useful
5154
# for distros not called "refkit" and thus has its own DISTRO_FEATURE and
5255
# "refkit-config" override.

meta-refkit-core/conf/distro/include/refkit-overrides.inc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ DISTROFEATURES2OVERRIDES += " \
88
refkit-firewall \
99
refkit-computervision \
1010
refkit-gateway \
11+
refkit-industrial \
1112
"
1213

1314
INHERIT += "distrooverrides"

meta-refkit-core/conf/distro/include/refkit_security_flags.inc

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,11 @@ SECURITY_CFLAGS_pn-tbb = "${SECURITY_NO_PIE_CFLAGS} ${SECURITY_PIC_CFLAGS}"
1515
SECURITY_CFLAGS_pn-protobuf = "${SECURITY_NO_PIE_CFLAGS} ${SECURITY_PIC_CFLAGS}"
1616
SECURITY_CFLAGS_pn-glog = "${SECURITY_NO_PIE_CFLAGS} ${SECURITY_PIC_CFLAGS}"
1717
SECURITY_CFLAGS_pn-clang = "${SECURITY_NO_PIE_CFLAGS} ${SECURITY_PIC_CFLAGS}"
18+
SECURITY_CFLAGS_pn-log4cxx = "${SECURITY_NO_PIE_CFLAGS} ${SECURITY_PIC_CFLAGS}"
19+
SECURITY_CFLAGS_pn-python3-lxml = "${SECURITY_NO_PIE_CFLAGS} ${SECURITY_PIC_CFLAGS}"
20+
SECURITY_CFLAGS_pn-python3-netifaces = "${SECURITY_NO_PIE_CFLAGS} ${SECURITY_PIC_CFLAGS}"
21+
SECURITY_CFLAGS_pn-python3-pyyaml = "${SECURITY_NO_PIE_CFLAGS} ${SECURITY_PIC_CFLAGS}"
22+
SECURITY_CFLAGS_pn-moveit-ros-perception = "${SECURITY_NO_PIE_CFLAGS} ${SECURITY_PIC_CFLAGS}"
1823

1924
# openjdk-8 ends up linking with "-shared -pie -fpie" in some cases (see
2025
# hotspot/make/linux/makefiles/saproc.make) which then tries (and fails) to
@@ -30,3 +35,4 @@ SECURITY_STRINGFORMAT_pn-giflib = ""
3035
SECURITY_STRINGFORMAT_pn-gsignond = ""
3136
SECURITY_STRINGFORMAT_pn-openjdk-8 = ""
3237
SECURITY_STRINGFORMAT_pn-openjre-8 = ""
38+
SECURITY_STRINGFORMAT_pn-qhull = ""
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,26 @@
11
caffe@refkit-extra
2+
household-objects-database-msgs@ros-layer
23
hdf5@refkit-extra
34
leveldb@openembedded-layer
45
lmdb@refkit-extra
6+
manipulation-msgs@ros-layer
7+
moveit-kinematics@ros-layer
8+
moveit-planners-ompl@ros-layer
9+
moveit-ros-manipulation@ros-layer
10+
moveit-ros-move-group@ros-layer
11+
moveit-simple-controller-manager@ros-layer
12+
ompl@ros-layer
513
openblas@refkit-extra
614
python3-imageio@refkit-extra
715
python3-pillow@refkit-extra
816
python3-protobuf@refkit-extra
917
python3-pycparser@meta-python
1018
python3-pyrealsense@refkit-extra
1119
python3-six@core
20+
refkit-ros-tests@refkit-extra
21+
robot-state-publisher@ros-layer
1222
snappy@refkit-extra
23+
std-srvs@ros-layer
24+
tf2-kdl@ros-layer
25+
uarmmetal-moveit-config@refkit-extra
26+
uarmmetal-support@refkit-extra

meta-refkit-extra/conf/distro/include/refkit_extra_security_flags.inc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@ SECURITY_CFLAGS_pn-python3-pillow = "${SECURITY_NO_PIE_CFLAGS} ${SECURITY_PIC_CF
22
SECURITY_CFLAGS_pn-snappy = "${SECURITY_NO_PIE_CFLAGS} ${SECURITY_PIC_CFLAGS}"
33
SECURITY_CFLAGS_pn-leveldb = "${SECURITY_NO_PIE_CFLAGS} ${SECURITY_PIC_CFLAGS}"
44
SECURITY_CFLAGS_pn-python3-pyrealsense = "${SECURITY_NO_PIE_CFLAGS} ${SECURITY_PIC_CFLAGS}"
5+
SECURITY_CFLAGS_pn-moveit-planners-ompl = "${SECURITY_NO_PIE_CFLAGS} ${SECURITY_PIC_CFLAGS}"
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
Introduction
2+
============
3+
4+
The core of the ROS project is a XMLRPC-based publisher-subscriber
5+
middleware. This instruction documents how to run a simple ROS
6+
application in IoT Refkit. The application is documented in
7+
the `Writing a Simple Publisher and Subscriber`_ tutorial.
8+
9+
How to run
10+
==========
11+
12+
1. Create an image containing the package `refkit-ros-tests`, e.g. by putting
13+
this line in your `local.conf`::
14+
15+
IMAGE_INSTALL_append = " refkit-ros-tests"
16+
17+
and running::
18+
19+
$ bitbake refkit-image-common
20+
21+
2. Start up a QEMU VM with the built image::
22+
23+
$ runqemu ovmf refkit-image-common wic slirp serial nographic
24+
25+
3. Set up ROS environment in the VM::
26+
27+
export ROS_ROOT=/opt/ros
28+
export ROS_DISTRO=indigo
29+
export ROS_PACKAGE_PATH=/opt/ros/indigo/share
30+
export PATH=$PATH:/opt/ros/indigo/bin
31+
export LD_LIBRARY_PATH=/opt/ros/indigo/lib
32+
export PYTHONPATH=/opt/ros/indigo/lib/python3.5/site-packages
33+
export ROS_MASTER_URI=http://localhost:11311
34+
export CMAKE_PREFIX_PATH=/opt/ros/indigo
35+
touch /opt/ros/indigo/.catkin
36+
37+
4. Launch all the needed ROS nodes with the command::
38+
39+
roslaunch refkit_ros_tests helloworld.launch
40+
41+
If everything is correct then two nodes get launched:
42+
43+
- a publisher node sending standard string messages "hello world" to a ROS
44+
topic and
45+
- a subscriber node listening to the topic and exiting upon the
46+
message.
47+
48+
As soon as the subscriber node exits all the other nodes should
49+
exit successfully.
50+
51+
.. _Writing a Simple Publisher and Subscriber: http://wiki.ros.org/ROS/Tutorials/WritingPublisherSubscriber%28python%29

0 commit comments

Comments
 (0)