Dynamic Parameter Identification

881 views
Skip to first unread message

jonathan...@gmail.com

unread,
Jul 24, 2016, 5:35:20 PM7/24/16
to Robotics & Machine Vision Toolboxes
Hello,

Does the robotics toolbox have any functions for dynamic parameter identification? The form I'm looking at (from the Springer Robotics textbook by Siciliano) is torque = Y*pi, where pi is a parameter vector and Y is everything else. 

Thanks.

Peter Corke

unread,
Jul 25, 2016, 7:00:16 AM7/25/16
to Robotics & Machine Vision Toolboxes
There is no support for this.  The form of the dynamics is linear only when the inertia is about the link frame, not the CoG as used in the Toolbox.  You can use parallel-axis theorem to transform your link inertial parameters to the CoG.  You will also find that many of the parameters are linearly dependent and they cannot be uniquely determined.

Jörn Malzahn

unread,
Jul 25, 2016, 7:19:38 AM7/25/16
to robotics...@googlegroups.com
Hello,

a while ago I wrote something for RTB based on the CodeGenerator, but it follows a non-standard approach, is not very memory efficient and far away from mature or even properly tested. So yeah, no support for this in RTB.

If you wish to use something that uses state of the art techniques and has some degree of maturity, I would recommend Open Symoro or iDynTree.

https://github.com/symoro/symoro (Python)
http://wiki.icub.org/codyco/dox/html/idyntree/html/ (C++ / Python)

For reading on that topic I suggest:

SOUSA, Cristóvão Jorge Silva Duarte. Dynamic model identification of robot manipulators: Solving the physical feasibility problem. 2015
Link: https://estudogeral.sib.uc.pt/bitstream/10316/27082/1/Robot%20manipulators.pdf

Good luck.
Jörn
--
You received this message because you are subscribed to the Google Groups "Robotics & Machine Vision Toolboxes" group.
To unsubscribe from this group and stop receiving emails from it, send an email to robotics-tool-...@googlegroups.com.
To post to this group, send email to robotics...@googlegroups.com.
Visit this group at https://groups.google.com/group/robotics-tool-box.
For more options, visit https://groups.google.com/d/optout.

Peter Corke

unread,
Jul 25, 2016, 6:59:06 PM7/25/16
to Robotics & Machine Vision Toolboxes
Note that you can generate the symbolic equations of motion using RTB, just make the parameters symbolic not numeric (can't handle Coulomb friction), then rne() will return big complex expressions that you can manipulate as you see fit.  


On Monday, 25 July 2016 21:19:38 UTC+10, Joern Malzahn wrote:
Hello,

a while ago I wrote something for RTB based on the CodeGenerator, but it follows a non-standard approach, is not very memory efficient and far away from mature or even properly tested. So yeah, no support for this in RTB.

If you wish to use something that uses state of the art techniques and has some degree of maturity, I would recommend Open Symoro or iDynTree.

https://github.com/symoro/symoro (Python)
http://wiki.icub.org/codyco/dox/html/idyntree/html/ (C++ / Python)

For reading on that topic I suggest:

SOUSA, Cristóvão Jorge Silva Duarte. Dynamic model identification of robot manipulators: Solving the physical feasibility problem. 2015
Link: https://estudogeral.sib.uc.pt/bitstream/10316/27082/1/Robot%20manipulators.pdf

Good luck.
Jörn




Am 25.07.2016 um 13:00 schrieb Peter Corke:
There is no support for this.  The form of the dynamics is linear only when the inertia is about the link frame, not the CoG as used in the Toolbox.  You can use parallel-axis theorem to transform your link inertial parameters to the CoG.  You will also find that many of the parameters are linearly dependent and they cannot be uniquely determined.



On Monday, July 25, 2016 at 7:35:20 AM UTC+10, Jon Terry wrote:
Hello,

Does the robotics toolbox have any functions for dynamic parameter identification? The form I'm looking at (from the Springer Robotics textbook by Siciliano) is torque = Y*pi, where pi is a parameter vector and Y is everything else. 

Thanks.
--
You received this message because you are subscribed to the Google Groups "Robotics & Machine Vision Toolboxes" group.
To unsubscribe from this group and stop receiving emails from it, send an email to robotics-tool-box+unsubscribe@googlegroups.com.
To post to this group, send email to robotics-tool-box@googlegroups.com.

mai...@gmail.com

unread,
Oct 4, 2016, 6:05:47 AM10/4/16
to Robotics & Machine Vision Toolboxes
Any example of how to do that?
I`m trying to do the same. I create my own robot (copied mdl_puma560.m and pasted with DH parameters of my robot and symbolic for all others dynamic parameters except Coulomb Friction). Then I tried ROBOTNAME.rne() but it showed an error message saying that "No appropriate method, property, or field nre for class SerialLink."

All I want is to get the big complex dynamic equation in a symbolic format. Any help?


Em segunda-feira, 25 de julho de 2016 19:59:06 UTC-3, Peter Corke escreveu:
Note that you can generate the symbolic equations of motion using RTB, just make the parameters symbolic not numeric (can't handle Coulomb friction), then rne() will return big complex expressions that you can manipulate as you see fit.  


On Monday, 25 July 2016 21:19:38 UTC+10, Joern Malzahn wrote:
Hello,

a while ago I wrote something for RTB based on the CodeGenerator, but it follows a non-standard approach, is not very memory efficient and far away from mature or even properly tested. So yeah, no support for this in RTB.

If you wish to use something that uses state of the art techniques and has some degree of maturity, I would recommend Open Symoro or iDynTree.

https://github.com/symoro/symoro (Python)
http://wiki.icub.org/codyco/dox/html/idyntree/html/ (C++ / Python)

For reading on that topic I suggest:

SOUSA, Cristóvão Jorge Silva Duarte. Dynamic model identification of robot manipulators: Solving the physical feasibility problem. 2015
Link: https://estudogeral.sib.uc.pt/bitstream/10316/27082/1/Robot%20manipulators.pdf

Good luck.
Jörn




Am 25.07.2016 um 13:00 schrieb Peter Corke:
There is no support for this.  The form of the dynamics is linear only when the inertia is about the link frame, not the CoG as used in the Toolbox.  You can use parallel-axis theorem to transform your link inertial parameters to the CoG.  You will also find that many of the parameters are linearly dependent and they cannot be uniquely determined.



On Monday, July 25, 2016 at 7:35:20 AM UTC+10, Jon Terry wrote:
Hello,

Does the robotics toolbox have any functions for dynamic parameter identification? The form I'm looking at (from the Springer Robotics textbook by Siciliano) is torque = Y*pi, where pi is a parameter vector and Y is everything else. 

Thanks.
--
You received this message because you are subscribed to the Google Groups "Robotics & Machine Vision Toolboxes" group.
To unsubscribe from this group and stop receiving emails from it, send an email to robotics-tool-...@googlegroups.com.
To post to this group, send email to robotics...@googlegroups.com.

Alex Smith

unread,
Oct 12, 2016, 10:36:58 AM10/12/16
to Robotics & Machine Vision Toolboxes, mai...@gmail.com
I've attached my codes for generating the symbolic dynamic equations for the Baxter robot, using the Lagrange-Euler method. You can probably adapt it to your robot fairly easily. I wrote this as it wasn't possible to generate the symbolics using the Robot Toolbox RNE method, Matlab crashed every time. 

Be aware that I can't guarantee it will be completely right, as I've not tested it fully. Also, it takes FOREVER to calculate for 7DoF, exponentially less as you have less DoF. You will probably need a decent amount of RAM as well. 

If you use my codes on some publication, I would really appreciate if you cite my related paper http://ieeexplore.ieee.org/document/7558740/ 

Alex
Baxter.m
LagrangeEulerBaxterV4.m
roundSymbolic.m

Peter Corke

unread,
Apr 29, 2017, 9:01:23 PM4/29/17
to Robotics & Machine Vision Toolboxes, mai...@gmail.com
As Alex says these equations are very complex and MATLAB may not be able to do it for non-trivial DOF.

A very simple example 

>> mdl_twolink
>> syms q1 q2 q1d q2d q1dd q2dd real
>> twolink.rne([q1 q2], [q1d q2d], [q1dd q2dd])
 
ans = ...

Just tried to do the Puma robot example using RTB on a 2.7GHz i7 and it's been running for over 10 minutes now (but hasn't crashed yet)...

I did this stuff for 6DOF robots a long time ago and used MAPLE which worked well.  The expression for joint 1 had over 25,000 terms!  See https://eprints.qut.edu.au/32653/1/Corke__32653%5B1%5D.pdf

nour.k...@gmail.com

unread,
Jul 23, 2017, 12:13:31 AM7/23/17
to Robotics & Machine Vision Toolboxes, mai...@gmail.com
Hi Alex,
    How did you calculate the moment of inertia and COG for each link?
Thanks in advance.

Alex Smith

unread,
Jul 24, 2017, 5:34:29 AM7/24/17
to Robotics & Machine Vision Toolboxes, mai...@gmail.com, nour.k...@gmail.com
Hi, 

All inertial information is contained within the Baxter URDF file, which made my job much easier. There are, however, several techniques you can find in the literature for dynamic parameter estimation, which should be easy to find. This was something I wanted to explore with the Baxter, but I ran out of time. 

Regards,
Alex

Peter Corke

unread,
Jul 25, 2017, 5:50:14 PM7/25/17
to Robotics & Machine Vision Toolboxes, mai...@gmail.com, nour.k...@gmail.com
I think as roboticists we overly obsessed with inertial parameters.  For a slow robot like Baxter the most important dynamic effects will be friction (from the gearboxes) and gravity load.  For a high-performance direct-drive robot it makes total sense, but for slow highly geared robots not much sense.  Just my $0.02 worth.

marc

unread,
Dec 13, 2017, 11:49:22 PM12/13/17
to Robotics & Machine Vision Toolboxes
I know this is a bit of an old thread, but I'd like to get people's take on this if anyone is willing.

I appreciate pretty well that Professor Corke has an immense amount of experience with dynamic modeling of the puma (and probably other robots as well). One question I had about Baxter specifically though was that because the torque sensing is on the load side, isn't most of the friction compensated for with the low-level, high bandwidth torque controller? Even if this isn't true for Baxter because of practical limitations with the hardware, wouldn't it be true of other torque-controlled robots with the torque sensing on the load side? It seems like that torque controller would compensate for the friction in the gears in order to still get whatever torque you were actually commanding. This would only leave the friction in the actual link joint/bearings.

Any thoughts on this (or poking holes in my thoughts) would be much appreciated. We do a lot of dynamic modeling for optimal control of flexible robots (baxter with very low impedance and other soft, inflatable robots) and I feel like inertia can have a significant affect on the control performance (even if we have a hard time identifying the actual parameters).

thanks,
Marc Killpack

Peter Corke

unread,
Dec 16, 2017, 5:09:21 PM12/16/17
to Robotics & Machine Vision Toolboxes
Marc, you are correct.  Load side torque sensing and torque control "takes out" motor/transmission friction.  For most industrial robots that are essentially modern versions of the Puma and Stanford arm, there is no load side torque sensing.  Some researchers have tried to do this with motor current (torque) sensing and exquisite friction models but it's a hard road.  The KUKA force control robot technology that came out of the DLR lab use highly integrated motor drive modules that include load side torque sensing.  The Franka Emika Panda is probably similar.  Baxter is the same in principle, the load side sensing is perhaps a little more crude and not on all joints, and the transmission gears have a bit of backlash.  The backlash will be problematic for high gain torque control loops and lead to limit cycles I suspect.

Inertia will always have a big impact on dynamic performance, and for most arms the inertia "seen" by the motor can vary very significantly with configuration.

Nice discussion.  

peter 

rojaz...@gmail.com

unread,
Jan 30, 2019, 4:11:38 PM1/30/19
to Robotics & Machine Vision Toolboxes
Hi Alex,

I want to use your codes and I have some questions. First, I used R.inertia for Baxter_l generated by your code (Baxter.m) and the result was slightly different from your inertia formula. I wanted to know what is these difference regarding? Secondly, do you know how long does it take to calculate inertia matrix? I ran your code for a week and it's still running! 

Thanks,
RoZi
Reply all
Reply to author
Forward
0 new messages