iTaSC quick start
Overview
The framework is ordered following a OROCOS-ROS approach and consists of 1 meta-stack:
- itasc: This ROS unary stack serving as a meta-stack, it's purpose is to keep the framework stacks together
This meta-stack consists of following stacks:
- itasc_core: This ROS unary stack contains the core functionality of iTaSC: the scene and template (headers) for all itasc component types (solvers, virtual kinematic chains, controller/constraints, robots, objects)
- itasc_solvers: Contains a number of solver packages for iTaSC
- itasc_robots_objects: Contains a number of robot and object packages for iTaSC
- itasc_tasks: Contains a number of task packages for iTaSC (combination of virtual kinematic chains and constraint/controllers)
Each package contains the following subdirectories:
- src/ containing the source code of the components (C++)
- cpf/ containing the property files for the components and FSM's
- scripts/ containing the FSM's and components in a LUA implementation (eg. Supervisors)
- launch/ containing eventual ROS launch files
Installation instructions
Dependencies
See also the installation instructions of the examples for a step-by-step installation guide.
Compiling from source
git clone http://git.mech.kuleuven.be/robotics/itasc.git
git clone http://git.mech.kuleuven.be/robotics/itasc_core.git
git clone http://git.mech.kuleuven.be/robotics/itasc_robots_objects.git
git clone http://git.mech.kuleuven.be/robotics/itasc_solvers.git
git clone http://git.mech.kuleuven.be/robotics/itasc_tasks.git
Setup
It is strongly recommended that you add the following to a setup script or your .bashrc
- Make sure that all packages are added to you ROS_PACKAGE_PATH variable
- Source env.sh in the orocos_toolchain stack
- Set the LUA_PATH variable:
export LUA_PATH="/path_to_rFSM/?.lua;/path_to_ocl/lua/modules/?.lua;/path_to_kdl_lua/?.lua;$LUA_PATH"
Make
rosmake itascThis will build all itasc code, except for the robot models. Compile the ones you need yourself!
Design Workflow
Multiple files should be created or adapted to create a new application, a good workflow could be:
- Make a list of all tasks that have to be executed
- Draw the kinematic loops for each task (see also Comanipulation Demo)
- Draw the component layout of your application
- Draw the behavior of your application (coordination of the behavior at runtime), this will afterwards be implemented in the composite_task_fsm.lua and the running_task_fsm.lua files. Consult 'subFSM's of the running state' of the iTaSC user guide for more information.
- Create or download all necessary packages (tasks, robots, objects, solvers...)
- Create the components (computational part)
- Create the skills (FSM: coordination and configurational part), but leave the sub state machines dictating behavior at runtime for now (eg. running_taskname_fsm.lua).
- Create the FSM on the iTaSC level: itasc_configuration.lua
- Create the FSM on the application level
- Check, create or adapt the configuration files (.cpf) of your components.
- Create a deploy script: run.ops and run.sh (after this step, you can test that your application gets to the running state, without errors)
- Create the FSMs that coordinate the behavior at runtime
- on itasc level: composite_task_fsm.lua
- on task level (for each task): running_taskname_fsm.lua