[Documentation] [TitleIndex] [WordIndex

Only released in EOL distros:  

articulation: articulation_models | articulation_msgs | articulation_perception | articulation_rviz_plugin | articulation_structure | articulation_tutorials | icp

Package Summary

This package contains the core library for kinematic model fitting for articulated objects. Examples of articulated objects are gangway or cabinet doors, door handles, and drawers. It provides both a C++ library for model fitting and selection, and nodes that make the functions of this library available as ROS services to other nodes.

articulation: articulation_models | articulation_msgs | articulation_perception | articulation_structure | articulation_tutorials | icp

Package Summary

This package contains the core library for kinematic model fitting for articulated objects. Examples of articulated objects are gangway or cabinet doors, door handles, and drawers. It provides both a C++ library for model fitting and selection, and nodes that make the functions of this library available as ROS services to other nodes.

Tutorials on Articulated Objects

  1. Learning Kinematic Models for Articulated Objects using a Webcam

    This tutorial is a step-by-step guide that instructs users how to learn kinematic models of articulated objects only by using a webcam and a laptop.

  2. Getting started with Articulation Models

    This tutorial guides you step-by-step through the available tools for fitting, selecting and displaying kinematic trajectories of articulated objects. We will start with preparing a text file containing a kinematic trajectory. We will use an existing script to publish this trajectory, and use the existing model fitting and selection node to estimate a suitable model. We will then visualize this model in RVIZ.

  3. Using the Articulation Models (Python)

    In this tutorial, you will create a simple python script that calls ROS services for model fitting and selection. The script will output the estimated model class (like rotational, prismatic, etc.) and the estimated model parameters (like radius of rotation, etc.).

  4. Using the Articulation Model Library (C++)

    This tutorial demonstrates how to use the articulation model library directly in your programs. This is more efficient than sending ROS messages or ROS services. In this tutorial, a short program is presented that creates an artificial trajectory of an object rotating around a hinge, and then uses the model fitting library to recover the rotational center and radius. Further, the sampled trajectory and the fitted model are publishes as a ROS message for visualization in RVIZ.

  5. Learning Kinematic Models from End-Effector Trajectories

    This tutorial demonstrates the process of model fitting and model selection to real data recorded by a mobile manipulation robot operating various doors and drawers.

Model Classes and Model Parametrization

At the moment, the following model classes are implemented:

All nodes in this package query the ROS parameter filter_models, which names the model classes that will be considered during model selection. The default is rigid prismatic rotational. Globally, all model classes accept the parameters sigma_position and sigma_orientation, that define the properties of the Gaussian noise process.

Model Parameters

The model estimators fit the models to the data, and store the found parameters in the ModelMsg::params vector.

The parameters of the rigid model are:

The parameters of the prismatic model are:

The parameters of the rotational model are:

The pca_gp model is parameter-free, but requires the data points of the trajectory to make predictions.

Nodes

model_learner_msg

This node receives kinematic trajectories in form of articulation_msgs/TrackMsg messages, fits the trajectories to all known model classes, selects the model with the lowest BIC (Bayesian Information Criterion), and publishes the result in form of a articulation_msgs/ModelMsg message. The node operates in real-time i.e., it has a queue size of 1 and might drop messages if processing takes too long.

Subscribed Topics

track (articulation_msgs/TrackMsg)

Published Topics

model (articulation_msgs/ModelMsg)

Parameters

~sigma_position (float, default: 0.01) ~sigma_orientation (float, default: 4*PI (=ignore orientation)) ~filter_models (string, default: "rigid prismatic rotational")

model_learner_srv

This node provides ROS services for model fitting, selection and evaluation. This nodes provides high-level access to most of the functionality of articulation_models C++ library.

Services

model_fit (articulation_msgs/TrackModelSrv) model_select (articulation_msgs/TrackModelSrv) model_eval (articulation_msgs/TrackModelSrv)

Parameters

~sigma_position (float, default: 0.01) ~sigma_orientation (float, default: 4*PI (=ignore orientation)) ~filter_models (string, default: "rigid prismatic rotational")

model_learner_prior

This node is an extension of the model_learner_srv node. Next to providing ROS services for model fitting, selection and evaluation, and allows additionally to store, retrieve prior models and use them during model fitting and selection. Furthermore, it provides a service call for evaluating the model fitting/selection of partial trajectories, without the need for repeatedly calling the model selection service.

Services

model_select (articulation_msgs/TrackModelSrv) model_select_eval (articulation_msgs/TrackModelSrv) model_store (articulation_msgs/TrackModelSrv) model_prior_get (articulation_msgs/GetModelPriorSrv) model_prior_set (articulation_msgs/SetModelPriorSrv)

Parameters

~sigma_position (float, default: 0.01) ~sigma_orientation (float, default: 4*PI (=ignore orientation)) ~filter_models (string, default: "rigid prismatic rotational") ~do_align (boolean, default: false)

Useful Scripts

prior_publisher_atonce.py

This node reads trajectories from multiple files, calls model fitting and selection, and stores the found model as a prior. For an example, run roslaunch demo_fitting prior_iros_at_once.launch.

Published Topics

model (articulation_msgs/TrackMsg)

Services Called

model_select (articulation_msgs/TrackModelSrv) model_store (articulation_msgs/TrackModelSrv)

simple_publisher.py

This node publishes a trajectory from a text file. Each line of the text file contains a single pose, with space-separated values. The format of a pose is "x y z [qw qx qy qz [width height]]", where x y z is the Cartesian position, qw qx qy qz is the (optional) orientation, and width and height is the (optional) dimensions of a door/drawer front. The script reads the complete file at once, then moves the trajectory to start at the origin. Then it incrementally sends out articulation_msgs/TrackMsg messages, at 0.05 second intervals. For an example of this script, run roslaunch demo_fitting fit_kitchen.launch.

Published Topics

track (articulation_msgs/TrackMsg)

prior_save.py

This node retrieves the current prior models using the model_prior_get service and stores it in a file.

Services Called

model_prior_get (articulation_msgs/GetModelPriorSrv)

prior_load.py

This node loads prior models from a file, and restores them using the model_prior_set service.

Services Called

model_prior_set (articulation_msgs/SetModelPriorSrv)

References

More Information

More information (including videos, papers, presentations) can be found on the homepage of Juergen Sturm.

Report a Bug

If you run into any problems, please feel free to contact Juergen Sturm <juergen.sturm@in.tum.de>.


2019-07-13 12:28