Please ask about problems and questions regarding this tutorial on answers.ros.org. Don't forget to include in your question the link to this page, the versions of your OS & ROS, and also add appropriate tags. |
Toolchain Bridge
Description: Convert an existing toolchain into an ros-ready toolchain.Tutorial Level: INTERMEDIATE
Overview
Quite often with embedded development you will be provided with a BSP (board support package) or a ready made toolchain (e.g. code sourcery's arm toolchain) to work with. This however is not ros-ready as it lacks various packages required by the ros to do a full cross.
This is where eros' toolchain bridge comes in. It provides build recipes to quickly deploy these few packages to an existing toolchain. These cross-compiles are often rather messy, and so having them here saves people having to reinvent the wheel and learn all the ins and outs whenever they want to tackle the job of crossing the ros.
The Bridge
Core Rosdeps
Ok, to do a full cross, we need to make sure we have the core rosdeps installed in our toolchain, i.e. we need to bridge it.
Natively build ros core, set a cmake toolchain module and then protect the ros build (i.e. set up for a partial cross).
If you wish to change the build mode from the default, RelWithDebInfo, use rosbuild.
Make sure the install prefix is configured correctly using rosprefix.
e.g. /usr/arm-samsung-linux-gnueabi/usr/.
- Cross compile the dependencies.
roscd eros_apr; make; make install roscd eros_apr_util; make; make install roscd eros_log4cxx; make; make install roscd eros_boost; make; make install
You may now proceed to the full cross.
The above just ensures you have the minimal set of rosdeps to cross the ros core.
Peripheral Rosdeps
Do not have any other builds for non core rosdeps yet.
Utilities
Other commonly crossed packages for embedded development include:
eros_opencv : a lightweight, gui-less compilation of opencv.
eros_gdbserver : remote debugging utility.
Notes
Note that eros does not plan to become a full repository doing this sort of thing - that is a mammoth job and already undertaken by projects such as T2 or OpenEmbedded. Future versions of eros hope to be able to tap into these resources rather than replicate what they already do well.