Interoperability F INROC F INROC and R OS Experiments Appendix Requirements for Interoperability and Seamless Integration of Different Robotic Frameworks Michael Arndt, Max Reichardt Robotics Research Lab Department of Computer Science University of Kaiserslautern May 6, 2013 M. Arndt, M. Reichardt
Interoperability F INROC F INROC and R OS Experiments Appendix These slides were presented at the SDIR VIII workshop 2013. Additional details can be found on http://www.finroc.org/ and in the original publication: Requirements for Interoperability and Seamless Integration of Different Robotic Frameworks Michael Arndt, Max Reichardt, Jochen Hirth and Karsten Berns in Proceedings of the eighth full-day Workshop on Software Development and Integration in Robotics (SDIR VIII), in conjunction with the IEEE International Conference on Robotics and Automation (ICRA), May 2013, Karlsruhe, Germany M. Arndt, M. Reichardt
Interoperability F INROC F INROC and R OS Experiments Appendix Motivation: The “Framework Barrier” F INROC R OS Com- Compo- ponents nents tPort<T> ? Publisher/ Subscriber U RBI Com- ponents Matlab Compo- nents M. Arndt, M. Reichardt
Interoperability F INROC F INROC and R OS Experiments Appendix Design to ease Interoperability Good practices in framework design to achieve (efficient) interoperability? • Data Types in Component Interfaces • Any C++ type possible (e.g. from PCL) ⇒ avoids data conversion • Non-intrusive serialization (operator overloading, traits) • Component Interfaces • Support for data flow (often sufficient) • Support for control flow • Building and Linking • Simplest: Framework is available as shared library • No specific build system required • No mandatory main() function M. Arndt, M. Reichardt
Interoperability F INROC F INROC and R OS Experiments Appendix Component Structure of F INROC ros ib2c blackboard (1.3 kSLOC) (1.3 kSLOC) (1.8 kSLOC) structure (820 SLOC) runtime_construction (2.1 kSLOC) urbiscript tcp (1.0 kSLOC) (4.1kSLOC) scheduling (567 SLOC) parameters (1.8 kSLOC) rpc_ports Plugins (1.7 kSLOC) data_ports (5.8 kSLOC) core Core (3.8 kSLOC) buffer_pools (576 SLOC) RRLIB s concurrent_containers (2.1 kSLOC) rtti (1.9 kSLOC) thread (1.5 kSLOC) serialization (3.1 kSLOC) logging (1.4 kSLOC) time (692 SLOC) xml (670 SLOC) design_patterns (790 SLOC) util (899 SLOC) M. Arndt, M. Reichardt
Interoperability F INROC F INROC and R OS Experiments Appendix F INROC Design Approach & Features • Framework has fundamental impact on software quality • Systematic design approach • What can be done in a framework in order to support or even guarantee relevant quality attributes? • Focus in initial design: Features that are hard to add later Prominent Features • Efficient (zero-copy), lock-free, real-time implementation • Scales up to thousands of components • Intra-process runtime construction • Slim and highly modular framework core • Separate, native C++11 and Java implementations M. Arndt, M. Reichardt
Interoperability F INROC F INROC and R OS Experiments Appendix Projects based on F INROC V IONA T HOR Forklift Robots Agricultural projects A RTOS M. Arndt, M. Reichardt
Interoperability F INROC F INROC and R OS Experiments Appendix The F INROC ↔ R OS Bridge F INROC R OS Converter tInputPort ros::Publisher <T finroc 1 > <T finroc 1 > <T ros 1 > → <T ros 1 > Converter tOutputPort ros::Subscriber <T finroc 2 > <T finroc 2 > <T ros 2 > Data Flow ← <T ros 2 > F INROC seri- alization traits tInputPort ros::Publisher added to na- <T ros 3 > <T ros 3 > tive R OS type tOutputPort ros::Subscriber <T ros 4 > <T ros 4 > R OS traits tInputPort added to na- ros::Publisher <T finroc 5 > tive F INROC <T finroc 5 > type tOutputPort ros::Subscriber <T finroc 6 > <T finroc 6 > Control Flow Service Caller ros::Service tROSRPCPort Client <T ros 7 > <T ros 7 > M. Arndt, M. Reichardt
Interoperability F INROC F INROC and R OS Experiments Appendix Example: Calling a R OS Service from F INROC // the object holding the request roscpp::GetLoggers::Request r; try { RRLIB_LOG_PRINT(DEBUG, "Executing RPC ..."); // execute the call roscpp::GetLoggers::Response result = rpc_client.Execute(r); RRLIB_LOG_PRINT(DEBUG, "RPC executed, result is:"); for (auto it = result.loggers.begin(); it != result.loggers.end(); ++it) { RRLIB_LOG_PRINT(DEBUG, " - ", it->name); } } catch (std::exception &e) { RRLIB_LOG_PRINT(ERROR, "Caught exception :("); } M. Arndt, M. Reichardt
Interoperability F INROC F INROC and R OS Experiments Appendix Interacting from F INROC with a Pioneer Robot I • Real-world scenario: research cooperation between two institutes • Use native F INROC data types in R OS + People tracking us- Influence path plan- ing AmICA nodes ning on Pioneer robot M. Arndt, M. Reichardt
Interoperability F INROC F INROC and R OS Experiments Appendix Interacting from F INROC with a Pioneer Robot II F INROC R OS tProb- tProb- Bridge abilis- abilis- ticData ticData prob data processing People Tracking move base AmICA Hardware p2os openni M. Arndt, M. Reichardt
Interoperability F INROC F INROC and R OS Experiments Appendix Interacting from F INROC with a Pioneer Robot III ? ? G S M. Arndt, M. Reichardt
Interoperability F INROC F INROC and R OS Experiments Appendix Controlling F INROC Robot V IONA using R OS I • Commercially available robot • High-level control can be realized in F INROC or R OS Figure: Mobile outdoor robot V IONA by Robotmakers GmbH M. Arndt, M. Reichardt
Interoperability F INROC F INROC and R OS Experiments Appendix Controlling F INROC Robot V IONA using R OS II F INROC R OS High Level Control High Level Control Bridge F INROC User Interface Basic Control Hardware Interface Figure: Control system of V IONA with high-level control implemented either in F INROC or in R OS M. Arndt, M. Reichardt
Interoperability F INROC F INROC and R OS Experiments Appendix Using R OS ’ slam gmapping in F INROC I • Show how native R OS messages can be used in F INROC • Use existing slam gmapping in F INROC nav - R OS F INROC msgs::- Bridge sensor - Occupancy- msgs::- Grid Laser- A RTOS Scan, slam gmapping tf::tf- Message Hardware Interface M. Arndt, M. Reichardt
Interoperability F INROC F INROC and R OS Experiments Appendix F INROC - Application Structure • Basic application building blocks: Modules • connector-style interfaces • network-transparent connections • Support for data and control flow • Structural elements: Groups • Robotic application: • Set of connected modules • Finstruct • visualization as data flow graph M. Arndt, M. Reichardt
Interoperability F INROC F INROC and R OS Experiments Appendix Tools: Finstruct M. Arndt, M. Reichardt
Interoperability F INROC F INROC and R OS Experiments Appendix Tools: Fingui M. Arndt, M. Reichardt
Recommend
More recommend