iTaSC (instantaneous Task Specification using Constraints) is a framework to generate robot motions by specifying constraints between (parts of) the robots and their environment. iTaSC was born as a specification formalisms to generalize and extend existing approaches, such as the Operational Space Approach, the Task Function Approach, the Task Frame Formalism, geometric Cartesian Space control, and Joint Space control.
The iTaSC concepts apply to specifications in robot, Cartesian and sensor space, to position, velocity or torque-controlled robots, to explicit and implicit specifications, and to equality and inequality constraints. The current implementation, however, is currently still limited to the velocity control and equality constraints subset.
the documentation effort lags behind the conceptual and implementation effort, the best documentation can be found in our papers! (see Acknowledging iTaSC and literature)
It is currently highly recommended to use the Devel branch, a formal release is expected soon (iTaSC DSL and stacks).
Please post remarks, bug reports, suggestions, feature requests, or patches on the orocos users/dev forum/mailinglist.
The framework generates motions by specifying constraints in geometric, dynamic or sensor-space between the robots and their environment. These motion specifications constrain the relationships between objects (object frames) and their features (feature frames). Established robot motion specification formalisms such as the Operational Space Approach [3], the Task Function Approach [6], the Task Frame Formalism [4], Cartesian Space control, and Joint Space control are special cases of iTaSC and can be specified using the generic iTaSC methodology.
The key advantages of iTaSC over traditional motion specification methodologies are:
These advantages imply that the framework can be used for any robotic system, with a wide variety of sensors.
In order not to be limited to one single instantaneous motion specification, several iTaSC specifications can be glued together via a so-called Skill that coordinates the execution of multiple iTaSCs, and configures their parameters. Consequently, the framework separates the continuous level of motion specification from the discrete level of coordination and configuration. One skill coordinates a limited set of constraints, that together form a functional motion. Finite State Machines implement the skill functionality.
This framework is implemented in the iTaSC software.
Please cite following papers when using ideas or software based on/ of iTaSC:
@Article{ DeSchutter-ijrr2007, author = {De~Schutter, Joris and De~Laet, Tinne and Rutgeerts, Johan and Decr\'e, Wilm and Smits, Ruben and Aertbeli\"en, Erwin and Claes, Kasper and Bruyninckx, Herman}, title = {Constraint-Based Task Specification and Estimation for Sensor-Based Robot Systems in the Presence of Geometric Uncertainty}, journal = {The International Journal of Robotics Research}, volume = {26}, number = {5}, pages = {433--455}, year = {2007}, keywords = {constraint-based programming, task specification, iTaSC, estimation, geometric uncertainty} } @InProceedings{ decre09, author = {Decr\'e, Wilm and Smits, Ruben and Bruyninckx, Herman and De~Schutter, Joris}, title = {Extending {iTaSC} to support inequality constraints and non-instantaneous task specification}, title = {Proceedings of the 2009 IEEE International Conference on Robotics and Automation}, booktitle = {Proceedings of the 2009 IEEE International Conference on Robotics and Automation}, year = {2009}, address = {Kobe, Japan} pages = {964--971}, keywords = {constraint-based programming, task specification, iTaSC, convex optimization, inequality constraints, laser tracing} } @InProceedings{ DecreBruyninckxDeSchutter2013, author = {Decr\'e, Wilm and and Bruyninckx, Herman and De~Schutter, Joris}, title = {Extending the {Itasc} Constraint-Based Robot Task Specification Framework to Time- Independent Trajectories and User-Configurable Task Horizons}, title = {Proceedings of the IEEE International Conference on Robotics and Automation}, booktitle = {Proceedings of the IEEE International Conference on Robotics and Automation}, year = {2013}, address = {Karlsruhe, Germany} pages = {1933--1940}, keywords = {constraint-based programming, task specification, human-robot cooperation} }
@inproceedings{ vanthienenIROS2013, author = {Vanthienen, Dominick and Klotzbuecher, Markus and De~Laet, Tinne and De~Schutter, Joris and Bruyninckx, Herman}, title = {Rapid application development of constrained-based task modelling and execution using Domain Specific Languages}, booktitle = {Proceedings of the 2013 IEEE/RSJ International Conference on Intelligent Robots and Systems}, title = {Proceedings of the 2013 IEEE/RSJ International Conference on Intelligent Robots and Systems}, organization = {IROS2013}, year = {2013}, address = {Tokyo, Japan} pages = {1860--1866} } @inproceedings{ vanthienen_syroco2012, title = {Force-Sensorless and Bimanual Human-Robot Comanipulation}, author = {Vanthienen, Dominick and De~Laet, Tinne and Decr\'e, Wilm and Bruyninckx, Herman and De~Schutter, Joris}, booktitle = {10th IFAC Symposium on Robot Control (SYROCO)}, year = {2012}, month = {September, 5--7}, address = {Dubrovnik, Croatia}, volume = {10} } @InProceedings{ SmitsBruyninckxDeSchutter2009, author = {Smits, Ruben and Bruyninckx, Herman and De~Schutter, Joris}, title = {Software support for high-level specification, execution and estimation of event-driven, constraint-based multi-sensor robot tasks}, booktitle = {Proceedings of the 2009 International Conference on Advanced Robotics}, title = {Proceedings of the 2009 International Conference on Advanced Robotics}, year = {2009}, address = {Munich, Germany} pages = {}, keywords = {specification, itasc, skills} }
The software implements the iTaSC-Skill framework in Orocos, which is integrated in ROS by the Orocos-ROS-integration [1]. The Real-Time Toolkit (RTT) of the Orocos project enables the control of robots on a hard-realtime capable operating system, e.g. Xenomai-Linux or RTAI-Linux. The rFSM subproject of Orocos allows scripted Finite State Machines, hence Skills, to be executed in hard realtime. The figure below shows the software architecture, mentioning the formulas for the resolved velocity case without prioritization for clarification. The key advantages of the software design include:
Furthermore, the Bayesian Filtering Library (BFL) and Kinematics and Dynamics Library (KDL) of the Orocos project are used to retrieve stable estimates out of sensor data, and to specify robot and virtual kinematic chains respectively.
(to be expanded)
iTaSC DSL is a Domain Specific Language for constraint-based programming, more specifically iTaSC.
For more explanation and examples, please read D. Vanthienen, M. Klotzbuecher, T. De Laet, J. De Schutter, and H. Bruyninckx, Rapid application development of constrained-based task modelling and execution using domain specific languages, in Proc. IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS), Tokyo, Japan, 2013, pp. 1860–1866.
It is recommended to use the devel branch for the DSL as well as the iTaSC stacks.
For the Orocos reference implementation (in a ROS environment): One way is to send events in the Orocos task browser through the event_firer component that is automatically started when parsing and deploying an application.
Another, more user-friendly way, is to send events on the /itasc/ ros_common_events_in ROS topic (see README of the itasc_dsl repository).
A GUI to send events can be found on: https://bitbucket.org/apertuscus/python_gui
Look for an example at the itasc_erf2012_demo, that contains a run_eventgui.sh, launching this GUI with events for the iTaSC ERF2012 tutorial.
This meta-stack consists of following stacks:
Each package contains the following subdirectories:
https://gitlab.mech.kuleuven.be/groups/rob-itasc
and for the iTaSC DSL
https://bitbucket.org/dvanthienen/itasc_dsl.git
''The following explanation uses the ROS workspace and rosinstall tools, it is however easy to follow the same instructions without these tools, as will be hinted further on. IMPORTANT: All packages are catkin-based.
sudo apt-get install libeigen3-dev sip-dev liburdfdom-dev ros-indigo-angles ros-indigo-tf2-ros ros-indigo-geometric-shapes liblua5.1-0 liblua5.1-0-dev collada-dom-dev libbullet-dev ros-indigo-orocos-kdl ros-indigo-orocos-kinematics-dynamics ros-indigo-orocos-toolchain ros-indigo-geometry ros-indigo-robot-model ros-indigo-rtt-geometry ros-indigo-rtt-ros-integration ros-indigo-rtt-sensor-msgs ros-indigo-rtt-visualization-msgs
source /opt/ros/indigo/setup.bash
mkdir -p ~/ws/src cd ~/ws/src catkin_init_workspace cd ~/ws/ catkin_make
source ~/ws/devel/setup.sh
cd ~/ws wstool init src wstool merge -t src itasc_dsl.rosinstall wstool update -t src
The KUKA youBot and PR2 have not yet been tested in Indigo.
source ~/.bash_itasc_dsl useITaSC_deb
source ~/.bashrc
cd ~/ws/ catkin_make
sudo apt-get install ros-groovy-orocos-toolchain
sudo apt-get install libeigen3-dev ros-groovy-rtt-ros-integration ros-groovy-rtt-geometry ros-groovy-rtt-common-msgs ros-groovy-rtt-ros-comm
source /opt/ros/groovy/setup.bash source ~/path_to_workspace/setup.bash
rosws merge itasc_dsl.rosinstall
rosws update
rosws merge itasc_youbot_fuerte.rosinstall
rosws update
source /path/to/your/rosworkspace/setup.bash
source .bash_itasc_dsl
useITaSC_deb
source ~/.bashrc
For your convenience we put here some extra instructions for commonly used platforms:
rosrun rtt_rosnode create_rtt_msgs pr2_controllers_msgs
rosws set rtt_pr2_controllers_msgs
roscd itasc_pr2
./convert_xacro.sh
rosmake itasc_core trajectory_generators itasc_tasks rFSM rttlua_completion itasc_solvers fixed_object itasc_robot_object moving_object moving_object_tf
rosmake itasc
roslaunch pr2_gazebo pr2_empty_world.launch
roscd itasc_dsl
./run_bunny.sh
export ROS_PARALLEL_JOBS=' -j1 -l1'
rosmake --threads 1
These levels are not only present on the configuration/coordination but also on the computational level (see slides). As hinted before your application FSM will only 'see' the components 'outside' iTaSC (robot drivers, sensor components...) and iTaSC as one composite component. Similarly, the iTaSC FSM 'sees' a task as one entity. Section 'The sub-FSMs of the running state', gives a good example/effect of this distinction.
As a result of the 3 levels, your application is always in 3 states: one for each level.
The coordination and FSM part of the running state are executed sequentially. The full FSM is loaded in a supervisor component: taskname_supervisor.lua
On the iTaSC level, composite_task_fsm.lua is used instead of running_itasc_fsm.lua, to highlight its meaning. There is also an additional file: itasc_configuration.lua, which is part of the configuration state of the itasc_fsm.lua.
The state machine implemented in name_fsm.lua is a composite state machine, consisting of two states:
This structure can be found in all statemachines of all levels (except for the application FSM, where the division of the running state is not (always) necessary).
As explained above, there are three levels: application, iTaSC and task: each of which makes abstraction of the level below it. As a result, events are propagated down the hierarchy to take effect and responses are sent back up, to acknowledge execution. The design of the Application and Task FSM should comply with the same rationale (i.e. each transition is triggered by the lower level FSM). The standard event-transition flow consists of:
The flow for the stopping-stopped states is also similar. The running states are different in the sense that there is no 'ran state': the state machines will stay in the running state until they are stopped.
The following figure gives an example of the composite task and tasks in case of the simultaneous laser tracing on a table and a barrel example, used in previous paragraphs. The goal is to (in this order):
In the figure, a (sub-)FSM is represented by a purple rounded box, a state by a rounded black box and a possible state transition by an arrow. State transitions are triggered by an event or combination of events. The state transitions of the task subFSMs, indicated by a colored arrow and circle, are caused by the event with the corresponding color, fired in the composite_task_fsm.lua.
To prevent overloading the figure, only a limited number of actions is shown, e.g. only the entry part of the state and not the exit part (which will, e.g. deactivate the trajectory generator and tasks which were activated).
The composite state of the example in the figure consists of 4 states.
As can be seen, the composite task FSM just sends an event to trigger the task subFSMs to reach the appropriate state. The task subFSM will take care of task specific behavior, e.g.
Doing so, the tasks can be easily adapted/ swapped/ changed/ downloaded.
Note: The names of the tasks are specific; i.e. they are the names of the components that are used for the tasks. The name of the task package will be more general, e.g. xyPhiThetaPsiZ_PID task (named after the structure of it's VKC and controller type). Cfr. class - object of object oriented programming.
Attachment | Size |
---|---|
iTaSC_Manual.pdf | 396.63 KB |
Please read the iTaSC_Manual first, to get acquainted with the iTaSC terminology and structure. A task is the combination of a virtual_kinematic_chain and a constraint/controller. In the iTaSC software, it is a (ROS-)package that contains:
The running_taskname_coordination.lua and running_taskname_fsm.lua, are sub-FSM's of the running state of the task (defined in taskname_fsm.lua). They are executed sequentially, first the coordination part, then the FSM part.
Important are the expected reference frames and points for the data on following ports. (o1=object 1, o2= object 2)
The expected references are also mentioned as comments in the files
A full template will be made available soon... At the moment, start from an example... Have a look at the keep_distance task-package (in the itasc_comanipulation_demo stack) as a good example of a task. Special cases are:
Should inherit from SubRobot.hpp, which can be found in the itasc_core. This file is a template for a robot or object component. See itasc_robots_objects stack for examples.
As can be seen in the examples, a robot component contains always a KDL::Tree, even if the robot is just a chain. This is to be able to use the KDL::Tree functionality, which is regrettable, not perfectly similar as the KDL::Chain functionality. E.g. tree.getSegment(string name) has a string as input, chain.getSegment(number) has a number as input, but not a string...
Coming soon, have a look at itasc_solvers for examples.
a
List of iTaSC tutorials Please report any issues on the orocos users or dev mailinglist
The easiest way to install all needed dependencies: (How to find the debian packages on ros.org)
sudo apt-get install ros-electric-rtt-common-msgs
sudo apt-get install ros-electric-rtt-ros-comm
sudo apt-get install ros-electric-rtt-ros-integration
git clone http://git.mech.kuleuven.be/robotics/rtt_geometry.git
sudo apt-get install ros-electric-orocos-kinematics-dynamics
sudo aptitude install liblua5.1-0-dev
sudo aptitude install liblua5.1-0
sudo aptitude install lua5.1
git clone git://gitorious.org/orocos-toolchain/rttlua_completion.git
git clone https://github.com/kmarkus/rFSM.git
git clone http://git.mech.kuleuven.be/robotics/trajectory_generators.git
git clone http://git.mech.kuleuven.be/robotics/youbot_hardware.git -b devel
git clone http://git.mech.kuleuven.be/robotics/soem.git
git clone git://git.mech.kuleuven.be/robotics/motion_control.git -b devel
git clone https://github.com/smits/youbot-ros-pkg.git
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_solvers.git
git clone http://git.mech.kuleuven.be/robotics/itasc_tasks.git
git clone http://git.mech.kuleuven.be/robotics/itasc_robots_objects.git
(+switch to devel branch)git clone http://git.mech.kuleuven.be/robotics/itasc_examples.git
if [ "x$LUA_PATH" == "x" ]; then LUA_PATH=";;"; fi if [ "x$LUA_CPATH" == "x" ]; then LUA_CPATH=";;"; fi export LUA_PATH="$LUA_PATH;`rospack find ocl`/lua/modules/?.lua" export LUA_PATH="$LUA_PATH;`rospack find kdl`/?.lua" export LUA_PATH="$LUA_PATH;`rospack find rFSM`/?.lua" export LUA_PATH="$LUA_PATH;`rospack find rttlua_completion`/?.lua" export LUA_PATH="$LUA_PATH;`rospack find youbot_master_rtt`/lua/?.lua" export LUA_PATH="$LUA_PATH;`rospack find kdl_lua`/lua/?.lua" export LUA_CPATH="$LUA_CPATH;`rospack find rttlua_completion`/?.so" export PATH="$PATH:`rosstack find orocos_toolchain`/install/bin"
cd `rospack find youbot_description`/robots/
(part of the youbot-ros-pkg)rosrun xacro xacro.py youbot.urdf.xacro -o youbot.urdf
rosmake itasc_youbot_lissajous_app
This tutorial explains how to create an iTaSC application, starting from existing packages. The scheme we want to create is depicted in following figure:
The tutorial will follow the design workflow as explained here.
In the figures, a (sub-)FSM is represented by a purple rounded box, a state by a rounded black box and a possible state transition by an arrow. State transitions are triggered by an event or combination of events. The state transitions of the task subFSM that are indicated by a colored arrow and circle, are caused by the event with the corresponding color, fired in the composite_task_fsm.lua. To automatically transition from the MoveToStart to the TraceFigure state, an event indicating that the start position is reached must be fired. This event will be generated by the 'cartesian_generator'.
Overview of the modifications needed:
Create an empty ROS-package for your application and create 2 subdirectories:
Templates of these files can be found in the cartesian_motion package, scripts subdirectory (cartesian_tracing is an instance of cartesian_motion).
The actual FSM is loaded in the cartesian_tracing_supervisor component (which is written in the lua language, hence the .lua file). Since you'll (probably) need to add functions to execute RTT specific code in the running_cartesian_tracing_fsm, make a copy of this file to your scripts subdirectory of the package you have created for this application. Leave it for now.
The FSM for this application consists of multiple files on different locations, the cartesian_tracing_supervisor has properties that contain the path to these files. Create a property file (cartesian_tracing_supervisor.cpf for example) in your scripts subdirectory of the package you have created for this application and edit these properties.
There is no timer_id_property for task supervisors, because tasks are triggered by the iTaSC level by events.
Templates of these files can be found in the itasc_core package, scripts subdirectory.
Edit the itasc_configuration.lua file you just have copied: define the scene and kinematic loops as depicted in the figures of the first steps of this tutorial. Look at the comments in the template for more information on the syntax.
The actual FSM is loaded in the itasc_supervisor component (which is written in the lua language, hence the .lua file). Since you'll (probably) need to add functions to execute RTT specific code in the composite_task_fsm, make a copy of this file to your scripts subdirectory of the package you have created for this application. Leave it for now.
The FSM for this application consists of multiple files on different locations, the itasc_supervisor has properties that contain the path to these files. Create a property file (.cpf) in your scripts subdirectory of the package you have created for this application and edit these properties. The itasc_supervisor and application_supervisor have a property "application_timer_id": make sure these have the same value. Take in this case eg. 1. The timer id makes sure that both components are triggered by the same timer.
A template of this file can be found in the itasc_core package, scripts subdirectory.
The application FSM is loaded in the application_supervisor component (which is written in the lua language, hence the .lua file). Since you'll (probably) need to add functions to execute RTT specific code in the application_fsm, make a copy of this file to your scripts subdirectory of the package you have created for this application.
Edit the application_fsm and application_supervisor files:
Make sure that you configure, start, stop (and cleanup) all application level components in this state machine!
The FSM for this application can be on different locations, the application_supervisor has properties that contain the path to these file. Create a property file (application_supervisor.cpf) in your scripts subdirectory of the package you have created for this application and edit these properties. The itasc_supervisor and application_supervisor have a property "application_timer_id": make sure these have the same value. Take in this case eg. 1. The timer id makes sure that both components are triggered by the same timer.
Start from the following templates, which you can find in the itasc_core package, scripts subdirectory:
Copy these files to the package you have created for this application.
Edit the run.ops file (see also comments in template):
put before configuring the timer:
# we have to configure it first to get the ports connected, maybe better to put all this in the application_fsm.lua youbot_driver.configure() connect("youbot.qdot_to_arm", "youbot_driver.Arm1.joint_velocity_command", cp) connect("youbot.qdot_to_base", "youbot_driver.Base.cmd_twist", cp) connect("youbot_driver.Arm1.jointstate", "youbot.q_from_arm", cp) connect("youbot_driver.Base.odometry", "youbot.q_from_base", cp)
The template creates automatically an eventFirer, which is a component with ports connected to the event ports of the itasc- and application_supervisor. This allows easy firing events yourself at runtime, by writing an event on one of the ports.
For both levels:
The event needed for the transition from the MoveToStart to the TraceFigure state, will be send out by the 'cartesian_generator'. Look in his code for the event name.
roscd ocl/bin/
for i in deployer* rttlua*; do sudo setcap cap_net_raw+ep $i; done
roscd youbot_master_rtt/lua/
FUERTE_YOUBOT=false -- false Malaga, true is FUERTE
ETHERCAT_IF='ethcat'
roscd soem_core/bin
sudo ./slaveinfo eth0
(or ethcat...)roscd youbot_master_rtt/lua
rttlua-gnulinux -i youbot_test.lua
roscore
roscd itasc_youbot_lissajous_app
./run.sh
event_firer.itasc_common_events_in.write("e_start")
sudo apt-get install ros-fuerte-pr2-controllers sudo apt-get install ros-fuerte-pr2-simulator
mkdir ~/erf
export ROS_PACKAGE_PATH=~/erf:$ROS_PACKAGE_PATH
sudo apt-get install python-setuptools sudo easy_install -U rosinstall
rosinstall ~/erf erf_fuerte.rosinstall /opt/ros/fuerte/
source ~/erf/setup.bash
rosdep install itasc_examples rosdep install rFSM
useERF(){ source $HOME/erf/setup.bash; source $HOME/erf/setup.sh; source `rosstack find orocos_toolchain`/env.sh; setLUA; } setLUA(){ if [ "x$LUA_PATH" == "x" ]; then LUA_PATH=";;"; fi if [ "x$LUA_CPATH" == "x" ]; then LUA_CPATH=";;"; fi export LUA_PATH="$LUA_PATH;`rospack find rFSM`/?.lua" export LUA_PATH="$LUA_PATH;`rospack find ocl`/lua/modules/?.lua" export LUA_PATH="$LUA_PATH;`rospack find kdl`/?.lua" export LUA_PATH="$LUA_PATH;`rospack find rttlua_completion`/?.lua" export LUA_PATH="$LUA_PATH;`rospack find youbot_driver_rtt`/lua/?.lua" export LUA_PATH="$LUA_PATH;`rospack find kdl_lua`/lua/?.lua" export LUA_CPATH="$LUA_CPATH;`rospack find rttlua_completion`/?.so" export PATH="$PATH:`rosstack find orocos_toolchain`/install/bin" } useERF
rosmake itasc_erf2012_demo
roscore
roslaunch gazebo_worlds empty_world.launch
roscd itasc_erf2012_demo/
./run_gazebo.sh
roscd itasc_erf2012_demo/
./run_simulation.sh
itasc fsm: STATE ENTER root.NONemergency.RunningITASC.Running [cartesian generator] moveTo will start from
roscd itasc_erf2012_demo/
./run.sh
itasc fsm: STATE ENTER root.NONemergency.RunningITASC.Running [cartesian generator] moveTo will start from
event_firer.itasc_common_events_in.write("e_my_event")
54398d0653067580edd5c5ec66bda5eac0aa29e4 and 81e5fab65ee3587056a4d5fda4eb5ce796082eaf
sudo apt-get install ros-electric-rtt-common-msgs
sudo apt-get install ros-electric-rtt-ros-comm
sudo apt-get install ros-electric-rtt-ros-integration
git clone http://git.mech.kuleuven.be/robotics/rtt_geometry.git
sudo apt-get install ros-electric-orocos-kinematics-dynamics
sudo aptitude install liblua5.1-0-dev
sudo aptitude install liblua5.1-0
sudo aptitude install lua5.1
git clone git://gitorious.org/orocos-toolchain/rttlua_completion.git
git clone https://github.com/kmarkus/rFSM.git
git clone http://git.mech.kuleuven.be/robotics/opencv_additions.git
git clone http://git.mech.kuleuven.be/robotics/trajectory_generators.git
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
rosrun rtt_rosnode create_rtt_msgs pr2_controllers_msgs
git clone http://git.mech.kuleuven.be/robotics/rtt_common_msgs.git
git clone http://git.mech.kuleuven.be/robotics/rtt_ros_comm.git
git clone http://git.mech.kuleuven.be/robotics/rtt_ros_integration.git
git clone http://git.mech.kuleuven.be/robotics/rtt_geometry.git
sudo apt-get install ros-fuerte-orocos-kinematics-dynamics
sudo aptitude install liblua5.1-0-dev
sudo aptitude install liblua5.1-0
sudo aptitude install lua5.1
git clone git://gitorious.org/orocos-toolchain/rttlua_completion.git
git clone https://github.com/kmarkus/rFSM.git
git clone http://git.mech.kuleuven.be/robotics/opencv_additions.git
git clone http://git.mech.kuleuven.be/robotics/trajectory_generators.git
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
rosrun rtt_rosnode create_rtt_msgs pr2_controllers_msgs
git clone http://git.mech.kuleuven.be/robotics/itasc_comanipulation_demo.git
if [ "x$LUA_PATH" == "x" ]; then LUA_PATH=";;"; fi if [ "x$LUA_CPATH" == "x" ]; then LUA_CPATH=";;"; fi export LUA_PATH="$LUA_PATH;`rospack find ocl`/lua/modules/?.lua" export LUA_PATH="$LUA_PATH;`rospack find kdl`/?.lua" export LUA_PATH="$LUA_PATH;`rospack find rFSM`/?.lua" export LUA_PATH="$LUA_PATH;`rospack find rttlua_completion`/?.lua" export LUA_PATH="$LUA_PATH;`rospack find kdl_lua`/lua/?.lua" export LUA_CPATH="$LUA_CPATH;`rospack find rttlua_completion`/?.so" export PATH="$PATH:`rosstack find orocos_toolchain`/install/bin"
rosmake itasc_comanipulation_demo_app
roscd itasc_pr2 ./convert_xacro.sh
roscd itasc_comanipulation_demo_app
./runControllers
./run.sh
event_firer.itasc_common_events_in.write("e_parallelIn")
event_firer.itasc_common_events_in.write("e_parallelOut")
event_firer.itasc_common_events_in.write("e_obstacleForceParallelLimitsIn")
event_firer.itasc_common_events_in.write("e_obstacleForceParallelLimitsOut")
Attachment | Size |
---|---|
iTaSC_comanipulation_demo.pdf | 535.79 KB |
Videos of iTaSC examples and demonstrations. Click on the images below to see the video.