ModelicaAdditions.MultiBody.Examples.Robots.r3

Models of the Manutec r3 robot

ModelicaAdditions.MultiBody.Examples.Robots.r3.axisType1 ModelicaAdditions.MultiBody.Examples.Robots.r3.axisType2 ModelicaAdditions.MultiBody.Examples.Robots.r3.inverseDynamics ModelicaAdditions.MultiBody.Examples.Robots.r3.robot ModelicaAdditions.MultiBody.Examples.Robots.r3.Components

Information


This package contains models of the robot r3 of the company Manutec. It is used to demonstrate in which way complex robot models should be built up by testing first the components of the model individually before composing them together. The following models are available:

   axisType1        Test one axis (controller, motor, gearbox) of structure 1.
   axisType2        Test one axis (controller, motor, gearbox) of structure 2.
   inverseDynamics  Test mechanical structure 
                    (predefined joint angle time functions).
   robot            Test complete robot model.

The parameters of this robot have been determined by measurements in the laboratory of DLR. The measurement procedure is described in:

   Tuerk S. (1990): Zur Modellierung der Dynamik von Robotern mit
       rotatorischen Gelenken. Fortschrittberichte VDI, Reihe 8, Nr. 211,
       VDI-Verlag 1990.

The robot model is described in detail in

   Otter M. (1995): Objektorientierte Modellierung mechatronischer
       Systeme am Beispiel geregelter Roboter. Dissertation,
       Fortschrittberichte VDI, Reihe 20, Nr. 147, VDI-Verlag 1995.
       This report can be downloaded as compressed postscript file
       from: http://www.op.dlr.de/FF-DR-ER/staff/otter/publications.html
Main Author:
Martin Otter
Deutsches Zentrum für Luft und Raumfahrt e.V. (DLR)
Institut für Robotik und Mechatronik
Postfach 1116
D-82230 Wessling
Germany
email: Martin.Otter@dlr.de

Release Notes:


Copyright (C) 2000, DLR.

The Modelica package is free software; it can be redistributed and/or modified under the terms of the Modelica license, see the license conditions and the accompanying disclaimer in the documentation of package Modelica in file "Modelica/package.mo".


ModelicaAdditions.MultiBody.Examples.Robots.r3.axisType1 ModelicaAdditions.MultiBody.Examples.Robots.r3.axisType1

Test one axis of r3 robot (controller, motor, gearbox) of structure 1.

ModelicaAdditions.MultiBody.Examples.Robots.r3.axisType1

Information


The robot r3 has 2 different model structures of its axes. Axis type 1 is checked with this model. Simulate for 0.8 s.


Modelica definition

model axisType1 
  "Test one axis of r3 robot (controller, motor, gearbox) of structure 1."
   
  extends Modelica.Icons.Example;
  output Real refq "reference joint angle in [deg]";
  output Real q "actual joint angle in [deg]";
  output Real eq "joint angle error in [deg]";
  output Real refqd "reference joint angular velocity in [rad/s]";
  output Real qd "actual joint angular velocity in [rad/s]";
  output Real eqd "joint angular velocity error in [rad/s]";
  constant Real pi=Modelica.Constants.pi;
  constant Real rad2deg=180/pi;
  
  Components.AxisType1 axis1;
  Modelica.Blocks.Sources.KinematicPTP PTP(
    deltaq={pi/2}, 
    qd_max={3}, 
    qdd_max={50});
  Modelica.Mechanics.Rotational.Inertia load(J=5);
equation 
  connect(PTP.outPort, axis1.inPort_a_ref);
  connect(axis1.flange, load.flange_a);
  refq = axis1.phi_ref*rad2deg;
  q = axis1.flange.phi*rad2deg;
  eq = refq - q;
  
  refqd = axis1.w_ref;
  qd = der(axis1.flange.phi);
  eqd = refqd - qd;
end axisType1;

ModelicaAdditions.MultiBody.Examples.Robots.r3.axisType2 ModelicaAdditions.MultiBody.Examples.Robots.r3.axisType2

Test one axis of r3 robot (controller, motor, gearbox) of structure 2.

ModelicaAdditions.MultiBody.Examples.Robots.r3.axisType2

Information


The robot r3 has 2 different model structures of its axes. Axis type 2 is checked with this model. Simulate for 0.8 s.


Modelica definition

model axisType2 
  "Test one axis of r3 robot (controller, motor, gearbox) of structure 2."
   
  extends Modelica.Icons.Example;
  output Real refq "reference joint angle in [deg]";
  output Real q "actual joint angle in [deg]";
  output Real eq "joint angle error in [deg]";
  output Real refqd "reference joint angular velocity in [rad/s]";
  output Real qd "actual joint angular velocity in [rad/s]";
  output Real eqd "joint angular velocity error in [rad/s]";
  constant Real pi=Modelica.Constants.pi;
  constant Real rad2deg=180/pi;
  
  Components.AxisType2 axis2;
  Modelica.Mechanics.Rotational.Inertia load(J=1);
  Modelica.Blocks.Sources.KinematicPTP PTP(
    deltaq={pi/2}, 
    qd_max={3}, 
    qdd_max={50});
equation 
  connect(axis2.flange, load.flange_a);
  connect(PTP.outPort, axis2.inPort_a_ref);
  refq = axis2.phi_ref*rad2deg;
  q = axis2.flange.phi*rad2deg;
  eq = refq - q;
  
  refqd = axis2.w_ref;
  qd = der(axis2.flange.phi);
  eqd = refqd - qd;
end axisType2;

ModelicaAdditions.MultiBody.Examples.Robots.r3.inverseDynamics ModelicaAdditions.MultiBody.Examples.Robots.r3.inverseDynamics

Test of the mechanical structure model using time-dependent joint motion

ModelicaAdditions.MultiBody.Examples.Robots.r3.inverseDynamics

Information


This model is used to test the mechanical structure of the Manutec r3 robot. The 6 joints are forced to move according to a pre-defined motion, i.e., the inverse dynamics of the robot is computed.
Simulate for 1.2 seconds.


Modelica definition

model inverseDynamics 
  "Test of the mechanical structure model using time-dependent joint motion"
   
  extends Modelica.Icons.Example;
  constant Real deg2rad=Modelica.Constants.pi/180;
  
  
  ModelicaAdditions.MultiBody.Examples.Robots.r3.Components.MechanicalStructure
     mechanics;
  Modelica.Blocks.Sources.KinematicPTP PTP(
    deltaq={180,180,-100,120,120,120}*deg2rad, 
    qd_max={3,3,4.5,3,4,3}, 
    qdd_max={50,50,50,50,50,50});
  ModelicaAdditions.Blocks.Multiplexer.DeMultiplex6 deMux;
  Modelica.Mechanics.Rotational.Accelerate accelerate1(phi_start=-120*
        deg2rad);
  Modelica.Mechanics.Rotational.Accelerate accelerate2(phi_start=-90*
        deg2rad);
  Modelica.Mechanics.Rotational.Accelerate accelerate3(phi_start=0);
  Modelica.Mechanics.Rotational.Accelerate accelerate4(phi_start=-60*
        deg2rad);
  Modelica.Mechanics.Rotational.Accelerate accelerate5(phi_start=-90*
        deg2rad);
  Modelica.Mechanics.Rotational.Accelerate accelerate6(phi_start=-90*
        deg2rad);
equation 
  connect(PTP.outPort, deMux.inPort);
  connect(deMux.outPort6, accelerate6.inPort);
  connect(deMux.outPort5, accelerate5.inPort);
  connect(deMux.outPort4, accelerate4.inPort);
  connect(deMux.outPort3, accelerate3.inPort);
  connect(deMux.outPort2, accelerate2.inPort);
  connect(accelerate1.inPort, deMux.outPort1);
  connect(accelerate2.flange_b, mechanics.axis2);
  connect(accelerate1.flange_b, mechanics.axis1);
  connect(accelerate3.flange_b, mechanics.axis3);
  connect(accelerate4.flange_b, mechanics.axis4);
  connect(accelerate5.flange_b, mechanics.axis5);
  connect(accelerate6.flange_b, mechanics.axis6);
end inverseDynamics;

ModelicaAdditions.MultiBody.Examples.Robots.r3.robot ModelicaAdditions.MultiBody.Examples.Robots.r3.robot

Detailled model of Manutec r3 robot with reference path

ModelicaAdditions.MultiBody.Examples.Robots.r3.robot

Information


Complete model of Mantuec r3 robot, including controller, motor, gearbox, 3D-mechanics model. Simulate for 1.3 s.


Modelica definition

model robot "Detailled model of Manutec r3 robot with reference path"
   
  extends Modelica.Icons.Example;
  ModelicaAdditions.MultiBody.Examples.Robots.r3.Components.FullRobot robot
    (q0={-1,0.43,1.57,0,-2,0});
  ModelicaAdditions.Tables.CombiTableTime a_ref1(table=[0, 30; 0.1, 30; 0.1
        , 0; 0.74, 0; 0.74, -13.96; 1.12, -13.96; 1.12, 28.75; 1.2, 28.75; 1.2
        , 0; 1.3, 0]);
  ModelicaAdditions.Tables.CombiTableTime a_ref2(table=[0, -15; 0.1, -15; 
        0.1, 0; 1.1, 0; 1.1, 15; 1.2, 15; 1.2, 0; 1.3, 0]);
  ModelicaAdditions.Tables.CombiTableTime a_ref3(table=[0, 30; 0.15, 30; 
        0.15, -21.56; 0.6, -21.56; 0.6, 0; 0.9, 0; 0.9, 17.33; 1.2, 17.33; 1.2
        , 0; 1.3, 0]);
  ModelicaAdditions.Tables.CombiTableTime a_ref4(table=[0, -80; 0.04, -80; 
        0.04, 0; 0.54, 0; 0.54, 71.11; 0.63, 71.11; 0.63, 0; 1.14, 0; 1.14, -
        53.33; 1.2, -53.33; 1.2, 0; 1.3, 0]);
  ModelicaAdditions.Tables.CombiTableTime a_ref5(table=[0, 105; 0.04, 105; 
        0.04, 0; 1.02, 0; 1.02, -68.33; 1.14, -68.33; 1.14, 66.67; 1.2, 66.67; 
        1.2, 0; 1.3, 0]);
  ModelicaAdditions.Tables.CombiTableTime a_ref6(table=[0, -95; 0.04, -95; 
        0.04, 0; 0.54, 0; 0.54, 84.44; 0.63, 84.44; 0.63, 0; 1.14, 0; 1.14, -
        63.33; 1.2, -63.33; 1.2, 0; 1.3, 0]);
equation 
  connect(a_ref1.outPort, robot.a_ref1);
  connect(a_ref2.outPort, robot.a_ref2);
  connect(a_ref3.outPort, robot.a_ref3);
  connect(a_ref4.outPort, robot.a_ref4);
  connect(a_ref5.outPort, robot.a_ref5);
  connect(a_ref6.outPort, robot.a_ref6);
end robot;

HTML-documentation generated by Dymola Tue Jun 20 22:21:58 2000 .