- Development
- European Robotics Forum 2011 Workshop on the Orocos Toolchain
- European Robotics Forum 2012: workshops
- Geometric relations semantics
- KDL wiki
- Kuka LBR user group
- Links of Orocos components
- OCL v1.x wiki
- RTT v1.x wiki
- Documentation suggestions
- Examples and Tutorials
- Frequently asked questions (FAQ)
- Installation
- RTT Dictionary
- RTT on MS Windows
- The 1st RTT Developers Workshop
- The Road to RTT 2.0
- Using Eclipse and Orocos
- Using Git and Orocos
- Toolchain v2.x
- Wiki for site admins
- iTaSC wiki
Developing plugins and toolkits
Table of Contents
This is a work in progress and only for RTT 1.x !
Rationale
Problem: You want to pass custom types between distributed components, be able to see the value(s) of your custom type with in a deployer, and be able to read/write the custom type to/from XML files.
Solution: Develop two plugins that tell Orocos about your custom types.
<!-- break -->
Assumptions
- The build directory is within the source directory. This helps with dynamic library loading.
Compatabilitry
Tested on v1.8 trunk on Mac OS X Leopard with omniORB from MacPorts, and Ubuntu Jaunty with ACE/TAO.Files
See the attachments at the bottom of this page.Overview
An RTT toolkit plugin provides information to Orocos about one or more custom types. This type of plugin allows RTT to display your types values in a deployer, load/save your types to/from XML files, and provides constructors and operators that can be used to manipulate your types within program scripts and state machines.An RTT transport plugin provides methods to transport your custom types across CORBA, and hence between distributed Orocos components.
This is a multi-part example demonstrating plugins for two boost::posix_time types: ptime and time_duration.
- Part 1 Without the plugin creates components that use your custom type, and demonstrates that Orocos does not know anything about these types
- Part 2 Toolkit plugin demonstrates an Orocos plugin that makes the types available to Orocos. In a deployer, you can now see the values of your custom types
- Part 3 Transport plugin demonstrates an Orocos transport plugin making your custom types available across CORBA. Now you can pass types between deployers.
- TBD Part 4 will demonstrate XML manipulation
- TBD Part 5 will demonstrate accesors and manipulators for use in scripts and state machines
For additional information on plugins and their development, see [1].
Also, the KDL toolkit and transport plugins are good examples. See src/bindings/rtt in the KDL source.
Structure
The overall structure of this examples is show below. |-- BoostToolkit.cpp |-- BoostToolkit.hpp |-- CMakeLists.txt |-- config | |-- FindACE.cmake | |-- FindCorba.cmake | |-- FindOmniORB.cmake | |-- FindOrocos-OCL.cmake | |-- FindOrocos-RTT.cmake | |-- FindTAO.cmake | |-- UseCorba.cmake | `-- UseOrocos.cmake |-- corba | |-- BoostCorbaConversion.hpp | |-- BoostCorbaToolkit.cpp | |-- BoostCorbaToolkit.hpp | |-- BoostTypes.idl | |-- CMakeLists.txt | `-- tests | |-- CMakeLists.txt | |-- corba-combined.cpp | |-- corba-recv.cpp | `-- corba-send.cpp `-- tests |-- CMakeLists.txt |-- combined.cpp |-- no-toolkit.cpp |-- recv.cpp |-- recv.hpp |-- send.cpp `-- send.hpp
The toolkit plugin is in the root directory, with supporting test files in the tests directory.
CMake support files are in the config directory.
The transport plugin is in the corba directory, with supporting test files in the corba/tests directory.
Limitations
Currently, this example does- Show how to write a plugin telling Orocos about your custom types
- Show how to write a transport plugin allowing Orocos to move your custom types between deployers/processes.
- Demonstrate how to test said plugins.
- Use either ACE/TAO or OmniORB for CORBA support
Currently, this example does not yet
- Show how to read/write the custom types to/from XML file
- Provide manipulators and/or accessors of your custom types, that can be used in scripts and state machines.
- Does not demonstrate testing of the CORBA transport plugin within a single deployer, using two components. An optimization in RTT bypasses the CORBA mechanism in this case, rendering the test useless.
- Does not deal with all intricacies of the boost types (eg all of the special values).
NB I could not find a method to get at the underlying raw 64-bit or 96-bit boost representation of ptime. Hence, the transport plugin inefficiently transports a ptime type using two separate data values. If you know of a method to get at the raw representation, I would love to know. Good luck in template land ...
References
[1] Extending the Real-Time ToolkitAttachment | Size |
---|---|
BoostToolkit.hpp | 2.64 KB |
BoostToolkit.cpp | 3.58 KB |
CMakeLists.txt | 1.83 KB |
corba/BoostCorbaToolkit.hpp | 934 bytes |
corba/BoostCorbaToolkit.cpp | 1.34 KB |
corba/QBoostCorbaConversion.hpp | 5.18 KB |
corba/CMakeLists.txt | 738 bytes |
plugins.tar_.bz2 | 14.24 KB |
»
- Printer-friendly version
- Login or register to post comments