Main article

If you use our software for your research or your products, we would appreciate if you could cite our work. Thank you!

The main publication that describes the Robotics Code Generator and the motivation behind it is the following:

Marco Frigerio, Jonas Buchli, Darwin G. Caldwell and Claudio Semini, "RobCoGen: a code generator for efficient kinematics and dynamics of articulated robots, based on Domain Specific Languages", in the Journal of Software Engineering for Robotics (JOSER), Vol 7, No 1, July 2016, pp. 36-54.
PDF
BibTeX
@Article{frigerio:2016:robcogen,
author       = {Marco Frigerio and Jonas Buchli and Darwin G. Caldwell and Claudio Semini},
title        = {{R}ob{C}o{G}en: a code generator for efficient kinematics and dynamics of articulated robots, based on {D}omain {S}pecific {L}anguages},
journaltitle = {Journal of Software Engineering for Robotics (JOSER)},
year         = {2016},
date         = {July},
volume       = {7},
number       = {1},
issue        = {Special Issue on Domain-Specific Languages and Models for Robotic Systems},
pages        = {36--54}
}

Previous publications

M. Frigerio, J. Buchli and D. G. Caldwell, "Code Generation of Algebraic Quantities for Robot Controllers", IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS), 2012.
PDF
BibTeX
@InProceedings{frigerio:2012:iros,
  Title     = {Code Generation of Algebraic Quantities for Robot Controllers},
  Author    = {Marco Frigerio and Jonas Buchli and Darwin G. Caldwell},
  Booktitle = {IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)},
  Year      = {2012}
}
M. Frigerio, J. Buchli and D. G. Caldwell, "Model based code generation for kinematics and dynamics computations in robot controllers", extended abstract at the 7th workshop on Software Development and Integration in Robotics (ICRA SDIR VII), St Paul, Minnesota, USA, May 2012.
PDF
BibTeX
@InProceedings{frigerio:2012:sdirVII,
  Title      = {Model based code generation for kinematics and dynamics computations in robot controllers},
  Author     = {Marco Frigerio and Jonas Buchli and Darwin G. Caldwell},
  Booktitle  = {Seventh workshop on Software Development and Integration in Robotics (ICRA SDIR VII)},
  Year       = {2012},
  Month      = {May}
}
M. Frigerio, J. Buchli and D. G. Caldwell, "A Domain Specific Language for kinematic models and fast implementations of robot dynamics algorithms", 2nd International Workshop on Domain-Specific Languages and models for ROBotic systems (DSLRob), San Francisco, September 2011.
PDF
BibTeX
@InProceedings{frigerio:2011:kindsl,
   Title      = {A Domain Specific Language for kinematic models and fast implementations of robot dynamics algorithms},
   Author     = {Marco Frigerio and Jonas Buchli and Darwin G. Caldwell},
   Booktitle  = {2nd International Workshop on Domain-Specific Languages and models for ROBotic systems (DSLRob)},
   Year       = {2011},
   Month      = {September}
}

Automatic differentiation

Markus Giftthaler, Michael Neunert, Markus Stäuble, Marco Frigerio, Claudio Semini and Jonas Buchli, "Automatic differentiation of rigid body dynamics for optimal control and estimation", Advanced Robotics, Taylor & Francis, 2017, pp 1-13
Web
BibTeX
@Article{giftthaler:2017:ad,
  author    = {Markus Giftthaler and Michael Neunert and Markus Stäuble and Marco Frigerio and Claudio Semini and Jonas Buchli},
  title     = {Automatic differentiation of rigid body dynamics for optimal control and estimation},
  journal   = {Advanced Robotics},
  year      = {2017},
  date      = {2017-11-08},
  volume    = {0},
  number    = {0},
  pages     = {1-13},
  doi       = {10.1080/01691864.2017.1395361},
  publisher = {Taylor \& Francis}
}
Michael Neunert, Markus Giftthaler, Marco Frigerio, Claudio Semini and Jonas Buchli, "Fast Derivatives of Rigid Body Dynamics for Control, Optimization and Estimation", IEEE international conference on Simulation, Modeling, and Programming for Autonomous Robots (SIMPAR), 2016
Web
BibTeX
@InProceedings{neunert:2016:derivatives,
  author    = {Michael Neunert and Markus Giftthaler and Marco Frigerio and Claudio Semini and Jonas Buchli},
  title     = {Fast Derivatives of Rigid Body Dynamics for Control, Optimization and Estimation},
  booktitle = {IEEE international conference on Simulation, Modeling, and Programming for Autonomous Robots (SIMPAR)},
  year      = {2016}
}

Related publications

S. M. Neuman, T. Koolen, J. Drean, J. E. Miller and S. Devadas, "Benchmarking and Workload Analysis of Robot Dynamics Algorithms", 2019 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS), Macau, China, 2019
Web
BibTeX
@INPROCEEDINGS{Neuman:2019:comparison,
  author={Neuman, Sabrina M. and Koolen, Twan and Drean, Jules and Miller, Jason E. and Devadas, Srinivas},
  booktitle={2019 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)},
  title={Benchmarking and Workload Analysis of Robot Dynamics Algorithms},
  year={2019},
  volume={},
  number={},
  pages={5235-5242},
  doi={10.1109/IROS40897.2019.8967694}
} 

This is a paper from a different team benchmarking four robot dynamics libraries, presented at the IROS conference. RobCoGen compares very favourably with the other libraries!

The case of inverse dynamics

The only case in which RobCoGen does not perform better/equally than/to the other libraries studied in the paper is inverse dynamics for floating base robots. The authors were quite fair and explain this fact, but I still feel like a clarification is needed.

Essentially, different algorithms were compared: for a floating base robot, robcogen inverse dynamics is really a hybrid dynamics solver, which also computes the acceleration of the base; I think that it does not make much sense to do otherwise. 1

Such a hybrid dynamics solver has a higher computational cost then the regular inverse dynamics, which was used to benchmark the other libraries (do they then always assume a fixed base??). The two algorithms are not very comparable because the hybrid dynamics computes more things.

An additional factor affecting performance is a poor implementation of the coordinate transformation for composite inertia, which is used in the hybrid dynamics code. This was a bit silly, as I was already using a better implementation of the same operation in the code for the inertia matrix; I just forgot to update the hybrid dynamics... Note that this detail is also mentioned in the paper.

Older and less thorough performance comparisons involving RobCoGen are included in the main paper (see the top of this page).

  1. In fact, RobCoGen-erated C++ code also gives the option to calculate floating base inverse dynamics under the assumption of a "fully-actuated" base, i.e., as if any arbitrary wrench could be exerted on the floating base. In this case, the base acceleration is a desired value, the same as for the joints.