ICub coding basics
Refer to RobotCub software to learn how to install, compile and update RobotCub software with Subversion (SVN). Below we will link to tutorials that are useful for people starting up with iCub and YARP coding.
General guides
Highly recommended:
- http://eris.liralab.it/wiki/Summary_of_iCub_Software_Development_Guidelines
- http://eris.liralab.it/wiki/ICub_Documentation_Guidelines
- http://eris.liralab.it/wiki/ICub_File_Organization_Guidelines
Specific tutorials
- Basic image processing tutorial: http://eris.liralab.it/iCub/dox/html/icub_basic_image_processing.html
Resource Finder
- http://eris.liralab.it/wiki/Resource_finder_overview
- RFModule class documentation (new version of Module class): http://eris.liralab.it/yarpdoc/d9/d26/classyarp_1_1os_1_1RFModule.html
- Using the RFModule helper class to write a program: http://eris.liralab.it/iCub/dox/html/icub_tutorial_module.html
YARP ports
- basic: http://eris.liralab.it/yarpdoc/note_ports.html
- advanced: http://eris.liralab.it/yarpdoc/port_expert.html
- Bottle class, useful for exchanging data among modules: http://eris.liralab.it/yarpdoc/d3/d3e/classyarp_1_1os_1_1Bottle.html#_details
Examples of modules
The following are good examples of modules from the iCub repository that are generally compliant with iCub configuration guidelines (RFModule class), coding standards and documentation standards.
myModule
A simple example to illustrate a module that is compliant with iCub Software Standards, addressing:
- configuration
- graceful shut-down
- thread-based execution
- run-time user interaction
- documentation and coding standards
Functionally, the module just converts an input image to a binary image based on a supplied threshold.
- http://eris.liralab.it/wiki/The_myModule_Example (referred to at the bottom of the Summary of iCub Software Development Guidelines)
- http://robotcub.svn.sf.net/viewvc/robotcub/trunk/iCub/src/myModule/
Auto Associative (Episodic) Memory
- http://robotcub.svn.sf.net/viewvc/robotcub/trunk/iCub/src/autoAssociativeMemory/
- http://robotcub.svn.sf.net/viewvc/robotcub/trunk/iCub/src/demoAAM/
- http://eris.liralab.it/wiki/Auto-associative_Memory_Specification