As a result of last week's research camp on robotics, and Orocos being
available as an ROS stack, we've improved the integration of Orocos components
in ros package trees. A small number of patches have been applied on the
toolchain-2.1 branch, some bigger ones on the master branch.
This is how it works for 2.1.x (toolchain-2.1) :
* When you use the orocreate-pkg command to create a package, the UseOrocos
cmake macros will detect if ROS_ROOT was set or not. If so, it switches to
rosbuild mode and finds rtt/ocl using rospack. There are two ways to find it:
either you downloaded them from a ros repository, or you have them checked out
yourself. In the latter case, they must be in your ROS_PACKAGE_PATH.
* When in rosbuild mode, components end up in package/lib/orocos/, while non-
component libraries end up in package/lib/. This is conform what the
deployer/plugin loaders expect. We assume you're not going to do a 'make
install' in the rosbuild mode, so a plain 'make' puts everything in the right
place.
* When in non-rosbuild mode, everything stays as before.
In addition, for master (upcomming toolchain 2.2.0), I have switched OCL to
use the UseOrocos cmake macros. So OCL will pick up the above settings
automatically depending on your environment. This means that ros users don't
need a 'make install' step anymore when building ocl. This solves the annoying
'two deployer-gnulinux choices' bug in rosrun. RTT still requires a 'make
install' step in the rtt/install directory for ros environments. That will
stay like that forever, for now :-)
Last but not least, in the deployer, you may now use import("packagename")
where packagename is a ros package (so findable by rospack) and which has its
orocos components installed in packagename/lib/orocos. It will also load all
dependencies of that package ! This means a huge improvement in setting up
import statements, since you can now universally import (or depend on)
typekits or components once they are packaged properly.
The standard Orocos way of loading packages is also still supported. In case
you have an lib/orocos/packagename directory in your RTT_COMPONENT_PATH, that
will be found too using import("packagename") and loaded accordingly. No
dependencies can be used in this case though, since you can't specify them,
unless we also install the manifest.xml file and start parsing it.
That all said, this is still somewhat experimental. It works in one setup, it
may be broken in another. I expect some more iterations, but any feedback
before the next release would be great. We need to catch-up with the docs/wiki
too.
Peter
PS: On master, I had to rename the rttlua component to orocos-lua to avoid
target name conflicts in the cmake file.