This is the documentation for the experimental code for the motor control group at UCL. The code is written for fast developement of experiments under C++ and with time-sensitive control of robots or other external devices. Time sensitivity is achieved through a hardware interrupt from the Sensoray s626 card.
The file Experiment.cpp entails the definition of three abstract classes that define much of the default behavior of the experiment. For example that the program reacts to keyboard input from the user, reads target files that specify how a Block looks like, the running of a single trial, the recording of data, and the saving of data to disk.
All you have to do is to define the behavior of your experiment by defining the classes MyExperiment, MyBlock, MyTrial, and DataRecord. All other things happen pretty automatically. Do NOT try to change these files - you should not have to (or talk to me if you have suggestions for improving). This html-documentation contains the doc for a typical robot experiment - Linepush5. This experiment implements reaching movements under channel movements, or force field movements to a point target, or to a redundant line target.
The device level contains classes for all kinds of different things that you would want to control. There are four classes that will be used by nearly all experiments.
Depending on the experiment, you can then use the classes for optimal devices:
It is important that you respect the following directory structure Root-directory is typically c:/robot
|source||Contains all the common .cpp files. DO NOT MODIFY ANY OF THESE FILES! If you need to make changes, please make a copy to your local project directory. If you think you found a bug, or want to add a new feature, please contact Joern Diedrichsen (email@example.com) to submit your changes. It is strongly recommended that instead of modifying the existing classes, you inherit the class functionality and make the changes in the derived class. This way you will stay up-to-date with the newest features and the debugged code.|
|include||Contains all the common .h (header) files. DO NOT MODIFY ANY OF THESE FILES! See source for details|
|documentation||Contains this documentation and the Doxygen config file|
|calib||Contains calibration and configuration files for Manipulanda, s626card, etc. The parameters are read during the .init() function of each device. If you need to modify, please make a copy and reference that file.|
|project||Folder for individual projects: Make your own subfolder with your unique project name. Your project folder will contain the following files and folders: |
It's easiest if you start from an exisiting project that is pretty close to what you want to do. Instead of copying the project, however, you should take the following steps