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:
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
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}
}
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}
}
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
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}
}
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
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).
-
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. ↩