Kaynağa Gözat

Add Modern Robotics implementation and documentation

iss17/08_feature_implementation_02
Wouter Horlings 5 yıl önce
ebeveyn
işleme
fd4c1e23ab
5 değiştirilmiş dosya ile 12891 ekleme ve 40 silme
  1. +333
    -3
      implementation/SCARA/03_motor/MR_dynamics2.emx
  2. +7576
    -0
      implementation/SCARA/03_motor/MR_dynamics3.emx
  3. +53
    -0
      implementation/SCARA/03_motor/implementation.md
  4. +49
    -37
      implementation/SCARA/03_motor/motor_physics.emx
  5. +4880
    -0
      implementation/SCARA/03_motor/motor_physics2.emx

+ 333
- 3
implementation/SCARA/03_motor/MR_dynamics2.emx Dosyayı Görüntüle

@@ -8,7 +8,7 @@
<IsMainModel>0</IsMainModel>
<KeepParameterValues>False</KeepParameterValues>
<LibraryPath>C:\users\wouter\My Documents\studie\ma\mahd\implementation\SCARA\03_motor\MR_dynamics2.emx</LibraryPath>
<TimeStamp>2020-7-17 15:47:18</TimeStamp>
<TimeStamp>2020-7-19 14:01:30</TimeStamp>
</Description>
</Information>';
type Mainmodel
@@ -2165,6 +2165,324 @@ Integrate\init = InitialPos;
uTbai\Rconstraint = Rconstraint;
uTbai\Cconstraint = Cconstraint;
parameterrelations_end;
figures
text 'b = next link (body)
a = previous link (body)
i = Frame fixed in previous body, fixed in joint
j = Frame fixed in next body, fixed in joint
' 680 488 color 0;
implementation_end;
Joint2 896.1 686
description '<Information>
<Description>
<Version>4.8</Version>
<IsMainModel>1</IsMainModel>
<KeepParameterValues>False</KeepParameterValues>
<AllowLibraryUpdate>True</AllowLibraryUpdate>
<LibraryPath>Bond Graph\MR\joint-v2.emx</LibraryPath>
<TimeStamp>2020-7-17 14:55:32</TimeStamp>
</Description>
</Information>';
type 'Submodel-rotz'
ports
power out p [6,1];
power in p1;
power in p2 [6,1];
signal in Hin [4,4];
signal out Hout [4,4];
signal out q;
end;
icon bg bottom
figures
rectangle 864.2 648 928 724 color 0 fill 14745599;
text 'Joint' 896 680 color 0;
terminals
p 864 664 fixed;
p1 896 648 fixed;
p2 928 664 fixed;
Hin 864 712 fixed;
Hout 928 712 fixed;
end;
implementation bg
submodels
AdHji 424 424
description '<Description>
<Version>4.0</Version>
<IsMainModel>1</IsMainModel>
<KeepParameterValues>False</KeepParameterValues>
<LibraryPath>Bond Graph\MTF.emx</LibraryPath>
<TimeStamp>2007-9-25 12:3:3</TimeStamp>
<AllowLibraryUpdate>True</AllowLibraryUpdate>
</Description>';
type MTF
ports
power out p1 [6,1];
power in p2 [6,1];
signal in H [4,4];
restrictions
causality constraint not_equal p1 p2;
end;
icon bg bottom
figures
text 'MTF' 424 424 color 0 18 bold;
end;
implementation eq
equations
p2.e = transpose(Adjoint(H)) * p1.e;
p1.f = Adjoint(H) * p2.f;implementation_end;
Integrate 320 176
description '<Description>
<Version>4.0</Version>
<IsMainModel>1</IsMainModel>
<KeepParameterValues>False</KeepParameterValues>
<LibraryPath>Signal\Block Diagram\Integrate.emx</LibraryPath>
<TimeStamp>2007-9-26 12:3:23</TimeStamp>
<AllowLibraryUpdate>True</AllowLibraryUpdate>
</Description>';
type Integrate
ports
signal in input;
signal out output [4,4];
signal out q;
parameters
real init = -2.9496;
end;
icon bg
figures
rectangle 304 160 336 192 color 0 fill 15132390;
text 'ò' 320 173.3 color 16711680 'SymbolProp BT' 21 symbol;
end;
implementation eq
parameters
real global joint;
variables
real R[3,3];
real p[3];
real qa[6];
real temp [4,4];
initialequations
qa = 0;
equations
q = -int(input,init);
qa[joint] = q;
R = dll('EulerAngles.dll','RotationMatrixFromEulXYZs',qa);
output = homogeneous(R,qa[4:6]);implementation_end;
MatrixMul 320 576
description '<Description>
<Version>4.0</Version>
<IsMainModel>1</IsMainModel>
<KeepParameterValues>False</KeepParameterValues>
<LibraryPath>Signal\Block Diagram\Gain.emx</LibraryPath>
<TimeStamp>2007-9-26 12:15:12</TimeStamp>
<AllowLibraryUpdate>True</AllowLibraryUpdate>
</Description>';
type Gain
ports
signal in input1 [4,4];
signal out output [4,4];
signal in input2 [4,4];
end;
icon bg bottom
figures
rectangle 304.1 560 335.9 592 color 0 fill 15132390;
text 'X' 320 576 color 16711680 16 bold;
end;
implementation eq
equations
output = input2*input1; implementation_end;
plug p1 240 40;
plug p2 496 424;
plug Hin 112 576;
plug Hout 504 576;
plug q 448 176;
plug p 112 424;
OneJunction2 240 176
description '<Information>
<Description>
<Version>4.2</Version>
<IsMainModel>1</IsMainModel>
<KeepParameterValues>False</KeepParameterValues>
<LibraryPath>Bond Graph\FlowSensor.emx</LibraryPath>
<TimeStamp>2011-11-29 15:50:53</TimeStamp>
</Description>
</Information>';
knot FlowSensor
ports
mechanical knot in p1 [1];
power knot out p2 [1];
signal knot out flow [1];
restrictions
causality constraint not_equal p1 p2;
end;
icon bg ellipse
figures
ellipse 233.1 168.8 246.9 183.1 color 0 fill 16777215;
text 'f' 240 175.2 color 0;
end;
implementation eq
equations
p2.f = p1.f;
p1.e = p2.e;
flow = p1.f;
implementation_end;
Splitter2 320 312
description '<Description><Version>4.0</Version>
<LibraryPath>Signal\Block Diagram\Splitter.emx</LibraryPath>
<TimeStamp>2008-01-17 11:28:29</TimeStamp>
<IsMainModel>1</IsMainModel>
<KeepParameterValues>False</KeepParameterValues>
</Description>';
knot Splitter
ports
signal knot duplicatable out output [4,4];
signal knot in input [4,4];
end;
icon bg ellipse
figures
ellipse 316.8 308.8 323.2 315.2 color -1 fill 0;
ellipse 315.7 307.7 324.3 316.3 color -1;
terminals
input 320 312 fixed;
end;
implementation eq
equations
collect (output) = input;
implementation_end;
Submodel1 240 312
description '<Description><Version>4.0</Version>
<LibraryPath>Template\Submodel-Equation.emx</LibraryPath>
<IsMainModel>1</IsMainModel>
<KeepParameterValues>False</KeepParameterValues>
<TimeStamp>2007-11-1 22:32:1</TimeStamp>
<AllowLibraryUpdate>False</AllowLibraryUpdate>
</Description>';
type 'Submodel-Equation'
ports
power in p1 [6,1];
signal out H [4,4];
power out p2 [6,1];
end;
implementation eq
variables
real q[4]; //quaternions
real W[3,4]; //Quaternion Rates Matrix
real R[3,3]; //Rotation Matrix
equations
q = int(transpose(W) * p1.f[1:3] ./ 2);
W = [-q[2], q[1], -q[4], q[3];
-q[3], q[4], q[1], -q[2];
-q[4], -q[3], q[2], q[1]];
R = [q[1]^2+q[2]^2-q[3]^2-q[4]^2, 2*(q[2]*q[3]+q[1]*q[4]), 2*(q[2]*q[4]-q[1]*q[3]);
2*(q[2]*q[3]-q[1]*q[4]), q[1]^2-q[2]^2+q[3]^2-q[4]^2, 2*(q[3]*q[4]+q[1]*q[2]);
2*(q[2]*q[4]+q[1]*q[3]), 2*(q[3]*q[4]-q[1]*q[2]), q[1]^2-q[2]^2-q[3]^2+q[4]^2];implementation_end;
uTbai 240 248
description '<Description>
<Version>4.0</Version>
<IsMainModel>1</IsMainModel>
<KeepParameterValues>False</KeepParameterValues>
<LibraryPath>Bond Graph\TF.emx</LibraryPath>
<TimeStamp>2007-9-25 12:4:2</TimeStamp>
<AllowLibraryUpdate>True</AllowLibraryUpdate>
</Description>';
type TF
ports
power in p1;
power out p2 [6,1];
restrictions
causality constraint not_equal p1 p2;
causality fixed in p1;
causality fixed out p2;
parameters
real Cconstraint = 1.0e-4;
real Rconstraint = 1000.0;
end;
icon bg left
figures
text 'TF' 240 248 color 0 18 bold;
end;
implementation eq
parameters
real global joint;
variables
real i;
real state[6];
equations
/*p2.e[1] = (Rconstraint*-p2.f[1] + int(-p2.f[1])/Cconstraint);
p2.e[2] = (Rconstraint*-p2.f[2] + int(-p2.f[2])/Cconstraint);
p2.e[3] = p1.e;
p2.e[4] = (Rconstraint*-p2.f[4] + int(-p2.f[4])/Cconstraint);
p2.e[5] = (Rconstraint*-p2.f[5] + int(-p2.f[5])/Cconstraint);
p2.e[6] = (Rconstraint*-p2.f[6] + int(-p2.f[6])/Cconstraint);
p1.f = p2.f[3];*/
state = int(p2.f);
for i = 1 to 6 do
if i == joint then
p1.f = p2.f[i];
p2.e[i] = p1.e;
else
p2.e[i] = (Rconstraint*-p2.f[i] + -state[i]/Cconstraint);
end;
end;
implementation_end;
Wbai 240 424
description '<Description>
<Version>4.0</Version>
<IsMainModel>1</IsMainModel>
<KeepParameterValues>False</KeepParameterValues>
<LibraryPath>Bond Graph\ZeroJunction.emx</LibraryPath>
<TimeStamp>2007-9-27 9:51:43</TimeStamp>
<AllowLibraryUpdate>True</AllowLibraryUpdate>
</Description>';
knot ZeroJunction
ports
power knot duplicatable none p [6,1];
signal knot out effort [6,1];
restrictions
causality constraint one_in p;
end;
icon bg bottom
figures
text '0' 240 424 color 0 18 bold;
end;
implementation eq
equations
sum (direct (p.f)) = 0;
equal (collect (p.e));
effort = first (p.e);
implementation_end;
end;
connections
Hin -> MatrixMul\input2;
Integrate\output -> Splitter2\input;
Integrate\q -> q;
MatrixMul\output -> Hout;
OneJunction2\flow -> Integrate\input;
OneJunction2\p1 <= p1;
OneJunction2\p2 => uTbai\p1;
p <= Wbai\p;
p2 => AdHji\p2;
Splitter2\output -> AdHji\H 424 312;
Splitter2\output -> MatrixMul\input1;
Submodel1\p2 => Wbai\p;
uTbai\p2 => Submodel1\p1;
Wbai\p <= AdHji\p1;
end;
parameterrelations
EndstopMin\Rendstop = Rendstop;
EndstopMin\Cendstop = Cendstop;
EndstopMin\InitialPos = InitialPos;
EndstopMin\EndstopPos = MinEndstopPos;
EndstopMax\Rendstop = Rendstop;
EndstopMax\Cendstop = Cendstop;
EndstopMax\InitialPos = InitialPos;
EndstopMax\EndstopPos = MaxEndstopPos;
Rjoint\Rjoint= Rjoint;
Integrate\init = InitialPos;
uTbai\Rconstraint = Rconstraint;
uTbai\Cconstraint = Cconstraint;
parameterrelations_end;
figures
text 'b = next link (body)
@@ -4206,9 +4524,21 @@ implementation_end;
<ModelProperty section="tools\graph editor" entry="debugMode" value="0"/>
</ModelProperties>
<Variables>
<Constants>
</Constants>
<Parameters>
<Variable>
<Name>I</Name>
<Rows>3</Rows>
<Columns>1</Columns>
<Value>0 0 0</Value>
</Variable>
<Variable>
<Name>joint</Name>
<Value>0</Value>
</Variable>
<Variable>
<Name>m</Name>
<Value>0</Value>
</Variable>
</Parameters>
<Initials>
<Variable>


+ 7576
- 0
implementation/SCARA/03_motor/MR_dynamics3.emx
Dosya farkı çok büyük olduğundan ihmal edildi
Dosyayı Görüntüle


+ 53
- 0
implementation/SCARA/03_motor/implementation.md Dosyayı Görüntüle

@@ -0,0 +1,53 @@
#Motor Physics.

This is a small iteration from the last level of detail.
The following are some motor physics.

So I researched some different types of motors.
For this application AC-drives are not suitable, they have a fixed speed or are very expensive.
We are then left with DC-motors, stepper and servo.
There are more types but these three are the most common in use.

### DC-motor
This is probably the most simple motor.
Feeding a current trough the motor gives a torque at the mechanical axis.
These motors rotate at a high velocity and often require a mechanical reduction.
They are cheap though.

The problem is in the control.
A constant current is required to compensate for any gravitational pull on the load.
Furthermore, there is no feedback on the system. Therefore, we need an angle sensor.
Adding to the complexity.

Another choice we have to make in the type of motor is the brushed or brushless.
But both options still require some elaborate control.

### Stepper
A steppermotor is a brushless DC motor that is split in a number of multiple equal steps.
Where a brushless DC would have 6 steps. A stepper motor can have 60 steps. or 120.
By applying voltage to the next step we can move the rotor a single step.
They run best up to 1200 RPM.
The torque they can deliver is dependent on the current speed.
The stall torque can be around the 0.2 Nm.
But that drops off at higher velocities.
[Stepper motor on Wikipedia](https://en.wikipedia.org/wiki/Stepper_motor)

### Servo
A servomotor is especially a motor with a build in controller.
Often the motor itself is a simple DC-motor with permanent magnets.
And then there is a angle sensor and a small feedback controller to control the position.
The angle is communicated by PWM signal. And the servo will do the rest of the work.
Although the servo is simpler to control, it is often more expensive to get a motor that is similar to the stepper.

## Decission.
From our earlier model I concluded that a velocity of 25 rad/s and a torque of 0.01 Nm is required.
This should be doable with a stepper motor.
Furthermore, the fixed position is a very nice option.
For now I will go with the Steppermotor. They are more affordable and above all have fairly decent datasheets.


## Current model state
This model does not yet implement a steppermotor implementation.
But it does implement simple DC motor.
For the next step it is important to have some controller that is better suited.


+ 49
- 37
implementation/SCARA/03_motor/motor_physics.emx Dosyayı Görüntüle

@@ -8,7 +8,7 @@
<IsMainModel>0</IsMainModel>
<KeepParameterValues>False</KeepParameterValues>
<LibraryPath>C:\users\wouter\My Documents\studie\ma\mahd\implementation\SCARA\03_motor\motor_physics.emx</LibraryPath>
<TimeStamp>2020-7-17 18:39:03</TimeStamp>
<TimeStamp>2020-7-18 12:37:59</TimeStamp>
<AllowLibraryUpdate>True</AllowLibraryUpdate>
</Description>
<Attributes>
@@ -1617,7 +1617,7 @@ equations
p1.e = p2.e;
flow = p1.f;
implementation_end;
uTbai 240 328
uTbai 240 312
description '<Description>
<Version>4.0</Version>
<IsMainModel>1</IsMainModel>
@@ -1640,7 +1640,7 @@ implementation_end;
end;
icon bg left
figures
text 'TF' 240 328 color 0 18 bold;
text 'TF' 240 312 color 0 18 bold;
end;
implementation eq
parameters
@@ -5019,6 +5019,18 @@ implementation_end;
<Value>0</Value>
</Variable>
</Initials>
<FavoriteVariables>
<Variable>
<Name>Joint1\JointType\uTbai\state</Name>
<Rows>6</Rows>
<Columns>1</Columns>
<RowIndex>0</RowIndex>
<ColumnIndex>0</ColumnIndex>
</Variable>
<Variable>
<Name>Joint1\JointType\Integrate\q</Name>
</Variable>
</FavoriteVariables>
</Variables>
<PlotSpecs>
<VarNames>
@@ -5045,10 +5057,6 @@ implementation_end;
<VarName>PlusMinus3\output</VarName>
<VarName>Integrate\output[2]</VarName>
<VarName>Integrate\output[1]</VarName>
<VarName>MSe1\effort</VarName>
<VarName>MSe2\effort</VarName>
<VarName>MSe2\flow</VarName>
<VarName>MSe1\flow</VarName>
<VarName>new_joint1\position[1]</VarName>
<VarName>new_joint1\position[2]</VarName>
<VarName>new_joint1\position[3]</VarName>
@@ -5071,6 +5079,10 @@ implementation_end;
<VarName>PID3\error</VarName>
<VarName>new_joint3\position[3]</VarName>
<VarName>new_joint3\position[2]</VarName>
<VarName>MSe1\effort</VarName>
<VarName>MSe2\effort</VarName>
<VarName>MSe2\flow</VarName>
<VarName>MSe1\flow</VarName>
</VarNames>
<Plots>
<Plot>
@@ -5144,7 +5156,7 @@ implementation_end;
<XAxes>
<Axis>
<Minimum>0.0</Minimum>
<Maximum>2.0512133912317303</Maximum>
<Maximum>0.10311339559032781</Maximum>
<Linear>true</Linear>
<Scaling>3</Scaling>
<Label>time</Label>
@@ -5341,7 +5353,7 @@ implementation_end;
<XAxes>
<Axis>
<Minimum>0.0</Minimum>
<Maximum>2.0512133912317303</Maximum>
<Maximum>0.10311339559032781</Maximum>
<Linear>true</Linear>
<Scaling>3</Scaling>
<Label>time</Label>
@@ -6033,13 +6045,13 @@ implementation_end;
<Orientation>
<ZAxis>
<X>
<Value>-0.646203434499504</Value>
<Value>-0.646203434499502</Value>
</X>
<Y>
<Value>-0.628938588548313</Value>
<Value>-0.628938588548314</Value>
</Y>
<Z>
<Value>-0.432270023337152</Value>
<Value>-0.432270023337153</Value>
</Z>
</ZAxis>
<YAxis>
@@ -6047,7 +6059,7 @@ implementation_end;
<Value>-0.309771185077498</Value>
</X>
<Y>
<Value>-0.301494918649692</Value>
<Value>-0.301494918649693</Value>
</Y>
<Z>
<Value>0.901744213690389</Value>
@@ -6377,18 +6389,18 @@ implementation_end;
</X>
<Y>
<VariableName>Submodel3\body_position[2]</VariableName>
<Value>-0.01915326984592884</Value>
<Value>-0.009158353632383561</Value>
</Y>
<Z>
<VariableName>Submodel3\body_position[3]</VariableName>
<Value>0.02623393923392464</Value>
<Value>0.03118053280824738</Value>
</Z>
</Position>
<Orientation>
<Angles>
<X>
<VariableName>Submodel3\body_angle[1]</VariableName>
<Value>2.2010448489940284</Value>
<Value>1.8564889888314844</Value>
</X>
<Y>
<VariableName>Submodel3\body_angle[2]</VariableName>
@@ -6482,18 +6494,18 @@ implementation_end;
</X>
<Y>
<VariableName>Submodel4\body_position[2]</VariableName>
<Value>-0.013315183118204434</Value>
<Value>0.0013903741642251554</Value>
</Y>
<Z>
<VariableName>Submodel4\body_position[3]</VariableName>
<Value>0.05268450409359094</Value>
<Value>0.07774345829579168</Value>
</Z>
</Position>
<Orientation>
<Angles>
<X>
<VariableName>Submodel4\body_angle[1]</VariableName>
<Value>0.008626014952555631</Value>
<Value>0.66277054304191</Value>
</X>
<Y>
<VariableName>Submodel4\body_angle[2]</VariableName>
@@ -6620,11 +6632,11 @@ implementation_end;
</X>
<Y>
<VariableName>new_joint1\position[2]</VariableName>
<Value>-0.01914237844052437</Value>
<Value>-0.009202768540009312</Value>
</Y>
<Z>
<VariableName>new_joint1\position[3]</VariableName>
<Value>0.026264412189115294</Value>
<Value>0.031169842014341604</Value>
</Z>
</Position>
<Orientation>
@@ -6635,11 +6647,11 @@ implementation_end;
</X>
<Y>
<VariableName>new_joint1\R[2,3]</VariableName>
<Value>-0.8081357596650859</Value>
<Value>-0.9590720619797416</Value>
</Y>
<Z>
<VariableName>new_joint1\R[3,3]</VariableName>
<Value>-0.588996259708442</Value>
<Value>-0.2831621089233634</Value>
</Z>
</ZAxis>
<YAxis>
@@ -6649,11 +6661,11 @@ implementation_end;
</X>
<Y>
<VariableName>new_joint1\R[2,2]</VariableName>
<Value>-0.588996259708442</Value>
<Value>-0.2831621089233634</Value>
</Y>
<Z>
<VariableName>new_joint1\R[3,2]</VariableName>
<Value>0.8081357596650859</Value>
<Value>0.9590720619797416</Value>
</Z>
</YAxis>
<OrientationType>Matrix</OrientationType>
@@ -6739,11 +6751,11 @@ implementation_end;
</X>
<Y>
<VariableName>new_joint2\position[2]</VariableName>
<Value>-0.013304570144791548</Value>
<Value>0.0027085042716763867</Value>
</Y>
<Z>
<VariableName>new_joint2\position[3]</VariableName>
<Value>0.0515337009578849</Value>
<Value>0.07572614202917434</Value>
</Z>
</Position>
<Orientation>
@@ -6754,11 +6766,11 @@ implementation_end;
</X>
<Y>
<VariableName>new_joint2\R[2,3]</VariableName>
<Value>0.03980493681382746</Value>
<Value>-0.5354583200196454</Value>
</Y>
<Z>
<VariableName>new_joint2\R[3,3]</VariableName>
<Value>0.9992074694502875</Value>
<Value>0.8445616540678004</Value>
</Z>
</ZAxis>
<YAxis>
@@ -6768,11 +6780,11 @@ implementation_end;
</X>
<Y>
<VariableName>new_joint2\R[2,2]</VariableName>
<Value>0.9992074694502875</Value>
<Value>0.8445616540678004</Value>
</Y>
<Z>
<VariableName>new_joint2\R[3,2]</VariableName>
<Value>-0.03980493681382746</Value>
<Value>0.5354583200196454</Value>
</Z>
</YAxis>
<OrientationType>Matrix</OrientationType>
@@ -6864,7 +6876,7 @@ implementation_end;
<SharedZAxis>false</SharedZAxis>
<XAxes>
<Axis>
<Minimum>0.008778601272032657</Minimum>
<Minimum>0.021097455593261694</Minimum>
<Maximum>0.115</Maximum>
<Linear>true</Linear>
<Scaling>3</Scaling>
@@ -7006,7 +7018,7 @@ implementation_end;
<XAxes>
<Axis>
<Minimum>0.0</Minimum>
<Maximum>2.0512133912317303</Maximum>
<Maximum>0.10311339559032781</Maximum>
<Linear>true</Linear>
<Scaling>3</Scaling>
<Label>time</Label>
@@ -7092,7 +7104,7 @@ implementation_end;
</PlotPanel>
<PlotPanel>
<PlotPanelId>2</PlotPanelId>
<PlotPanelVisible>true</PlotPanelVisible>
<PlotPanelVisible>false</PlotPanelVisible>
<Name>Window 2</Name>
<Tiling>0</Tiling>
<PlotIds>
@@ -7102,7 +7114,7 @@ implementation_end;
</PlotPanel>
<PlotPanel>
<PlotPanelId>3</PlotPanelId>
<PlotPanelVisible>true</PlotPanelVisible>
<PlotPanelVisible>false</PlotPanelVisible>
<Name>Window 3</Name>
<Tiling>0</Tiling>
<PlotIds>
@@ -7113,13 +7125,13 @@ implementation_end;
</PlotPanels>
<WindowRectangles virtualDesktopWidth="5760" virtualDesktopHeight="1080">
<WindowRectangle monitor="2" left="1920" top="0" right="3840" bottom="1080" plotpanelid="1">
-0.00208333 0.00462963 1.00208 1.0037
0.149479 0.0675926 0.908333 0.847222
</WindowRectangle>
<WindowRectangle monitor="1" left="-1920" top="0" right="0" bottom="1080" plotpanelid="2">
0.138021 0.169444 0.777604 0.862963
</WindowRectangle>
<WindowRectangle monitor="1" left="-1920" top="0" right="0" bottom="1080" plotpanelid="3">
0.295833 0.327778 0.692187 0.765741
0.526042 0.287963 0.922396 0.725926
</WindowRectangle>
</WindowRectangles>
</PlotSpecs>


+ 4880
- 0
implementation/SCARA/03_motor/motor_physics2.emx
Dosya farkı çok büyük olduğundan ihmal edildi
Dosyayı Görüntüle


Yükleniyor…
İptal
Kaydet