Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
L
LabProcesses.jl
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
processes
LabProcesses.jl
Merge requests
!3
WIP: Started furuta implementation
Code
Review changes
Check out branch
Download
Patches
Plain diff
Expand sidebar
Open
WIP: Started furuta implementation
furuta
into
julia1
Overview
0
Commits
20
Pipelines
20
Changes
3
Open
Julian Salt
requested to merge
furuta
into
julia1
5 years ago
Overview
0
Commits
20
Pipelines
20
Changes
1
0
0
Merge request reports
Compare
version 2
version 31
e238b87e
5 years ago
version 30
bef7a6e2
5 years ago
version 29
5bd31e5f
5 years ago
version 28
e0f22a40
5 years ago
version 27
4c2b67b2
5 years ago
version 26
4c2b67b2
5 years ago
version 25
4c2b67b2
5 years ago
version 24
4c2b67b2
5 years ago
version 23
4c2b67b2
5 years ago
version 22
4c2b67b2
5 years ago
version 21
4c2b67b2
5 years ago
version 20
4c2b67b2
5 years ago
version 19
4c2b67b2
5 years ago
version 18
4c2b67b2
5 years ago
version 17
97b9c56b
5 years ago
version 16
e9990584
5 years ago
version 15
1a0f23a4
5 years ago
version 14
651455f6
5 years ago
version 13
d51d4f7f
5 years ago
version 12
a00d6d06
5 years ago
version 11
dfbf456f
5 years ago
version 10
a4925db8
5 years ago
version 9
a4925db8
5 years ago
version 8
a4925db8
5 years ago
version 7
16c5a3bd
5 years ago
version 6
d7564603
5 years ago
version 5
6013f772
5 years ago
version 4
6013f772
5 years ago
version 3
cd872dd8
5 years ago
version 2
8e32c861
5 years ago
version 1
c0728e83
5 years ago
julia1 (base)
and
version 20
latest version
76b6b6ec
20 commits,
5 years ago
version 31
e238b87e
19 commits,
5 years ago
version 30
bef7a6e2
18 commits,
5 years ago
version 29
5bd31e5f
17 commits,
5 years ago
version 28
e0f22a40
16 commits,
5 years ago
version 27
4c2b67b2
15 commits,
5 years ago
version 26
4c2b67b2
15 commits,
5 years ago
version 25
4c2b67b2
15 commits,
5 years ago
version 24
4c2b67b2
15 commits,
5 years ago
version 23
4c2b67b2
15 commits,
5 years ago
version 22
4c2b67b2
15 commits,
5 years ago
version 21
4c2b67b2
15 commits,
5 years ago
version 20
4c2b67b2
15 commits,
5 years ago
version 19
4c2b67b2
15 commits,
5 years ago
version 18
4c2b67b2
15 commits,
5 years ago
version 17
97b9c56b
14 commits,
5 years ago
version 16
e9990584
13 commits,
5 years ago
version 15
1a0f23a4
12 commits,
5 years ago
version 14
651455f6
11 commits,
5 years ago
version 13
d51d4f7f
10 commits,
5 years ago
version 12
a00d6d06
9 commits,
5 years ago
version 11
dfbf456f
8 commits,
5 years ago
version 10
a4925db8
7 commits,
5 years ago
version 9
a4925db8
7 commits,
5 years ago
version 8
a4925db8
7 commits,
5 years ago
version 7
16c5a3bd
6 commits,
5 years ago
version 6
d7564603
5 commits,
5 years ago
version 5
6013f772
4 commits,
5 years ago
version 4
6013f772
4 commits,
5 years ago
version 3
cd872dd8
3 commits,
5 years ago
version 2
8e32c861
2 commits,
5 years ago
version 1
c0728e83
1 commit,
5 years ago
Show latest version
1 file
+
61
−
8
Inline
Compare changes
Side-by-side
Inline
Show whitespace changes
Show one file at a time
src/interface_implementations/furuta.jl
+
61
−
8
View file @ 4c2b67b2
Edit in single-file editor
Open in Web IDE
Show full file
@@ -18,18 +18,41 @@ export Furuta, FurutaSimulator, AbstractFuruta
struct
Furuta
<:
PhysicalProcess
h
::
Float64
bias
::
Float64
phi
::
Float64
phi_dot
::
Float64
theta
::
Float64
theta_dot
::
Float64
theta_precise
::
Float64
theta_dot_precise
::
Float64
stream
::
LabStream
measure
::
AnalogInput10V
measure_phi
::
AnalogInput10V
measure_phi_dot
::
AnalogInput10V
measure_theta
::
AnalogInput10V
measure_theta_dot
::
AnalogInput10V
measure_theta_precise
::
AnalogInput10V
measure_theta_dot_precise
::
AnalogInput10V
control
::
AnalogOutput10V
end
function
Furuta
(;
h
::
Float64
=
0.01
,
bias
::
Float64
=
0.
,
phi
::
Float64
=
0.0
,
phi_dot
::
Float64
=
0.0
,
theta
::
Float64
=
0.0
,
theta_dot
::
Float64
=
0.0
,
theta_precise
::
Float64
=
0.0
,
theta_dot_precise
::
Float64
=
0.0
,
stream
::
LabStream
=
ComediStream
(),
measure
::
AnalogInput10V
=
AnalogInput10V
(
1
),
measure_phi
::
AnalogInput10V
=
AnalogInput10V
(
4
),
measure_phi_dot
::
AnalogInput10V
=
AnalogInput10V
(
5
),
measure_theta
::
AnalogInput10V
=
AnalogInput10V
(
6
),
measure_theta_dot
::
AnalogInput10V
=
AnalogInput10V
(
7
),
measure_theta_precise
::
AnalogInput10V
=
AnalogInput10V
(
2
),
measure_theta_dot_precise
::
AnalogInput10V
=
AnalogInput10V
(
3
),
control
::
AnalogOutput10V
=
AnalogOutput10V
(
0
))
p
=
Furuta
(
Float64
(
h
),
Float64
(
bias
),
stream
,
measure
,
control
)
init_devices!
(
p
.
stream
,
p
.
measure
,
p
.
control
)
p
=
Furuta
(
Float64
(
h
),
Float64
(
bias
),
Float64
(
phi
),
Float64
(
phi_dot
),
Float64
(
theta
),
Float64
(
theta_dot
),
Float64
(
theta_precise
),
Float64
(
theta_dot_precise
),
stream
,
measure_phi
,
measure_phi_dot
,
measure_theta
,
measure_theta_dot
,
measure_theta_precise
,
measure_theta_dot_precise
,
control
)
# p = Furuta(Float64(h),Float64(bias),stream,measure_phi,measure_phi_dot,measure_theta,measure_theta_dot,measure_theta_precise,measure_theta_dot_precise,control)
init_devices!
(
p
.
stream
,
p
.
measure_phi
,
p
.
measure_phi_dot
,
p
.
measure_theta
,
p
.
measure_theta_dot
,
p
.
measure_theta_precise
,
p
.
measure_theta_dot_precise
,
p
.
control
)
p
end
@@ -45,9 +68,9 @@ end
const
AbstractFuruta
=
Union
{
Furuta
,
FurutaSimulator
}
num_outputs
(
p
::
AbstractFuruta
)
=
1
num_inputs
(
p
::
AbstractFuruta
)
=
1
num_inputs
(
p
::
AbstractFuruta
)
=
6
outputrange
(
p
::
AbstractFuruta
)
=
[(
-
10
,
10
)]
inputrange
(
p
::
AbstractFuruta
)
=
[
(
-
10
,
10
)]
inputrange
(
p
::
AbstractFuruta
)
=
[(
-
10
,
10
),(
-
10
,
10
),(
-
10
,
10
),(
-
10
,
10
),(
-
10
,
10
),
(
-
10
,
10
)]
isstable
(
p
::
AbstractFuruta
)
=
false
isasstable
(
p
::
AbstractFuruta
)
=
false
sampletime
(
p
::
AbstractFuruta
)
=
p
.
h
@@ -55,14 +78,44 @@ bias(p::AbstractFuruta) = p.bias
function
control
(
p
::
AbstractFuruta
,
u
::
AbstractArray
)
length
(
u
)
==
1
||
error
(
"Process
$
(typeof(p)) only accepts one control signal, tried to send u=
$
u."
)
control
(
p
,
u
[
1
])
a
::
Float64
=
-
1.4
*
u
[
1
]
control
(
p
,
a
)
end
control
(
p
::
AbstractFuruta
,
u
::
Number
)
=
send
(
p
.
control
,
u
)
control
(
p
::
FurutaSimulator
,
u
::
Number
)
=
p
.
s
(
u
)
measure
(
p
::
Furuta
)
=
read
(
p
.
measure
)
measure_phi
(
p
::
Furuta
)
=
read
(
p
.
measure_phi
)
phi
(
p
::
Furuta
)
=
measure_phi
(
p
)
*
2.56
measure_phi_dot
(
p
::
Furuta
)
=
read
(
p
.
measure_phi_dot
)
phi_dot
(
p
::
Furuta
)
=
(
measure_phi_dot
(
p
)
+
0.0708
)
*
2.0
measure_theta
(
p
::
Furuta
)
=
read
(
p
.
measure_theta
)
#theta(p::Furuta) = (measure_theta(p) + 5.1763)*0.3091
measure_theta_dot
(
p
::
Furuta
)
=
read
(
p
.
measure_theta_dot
)
#theta_dot(p::Furuta) = (measure_theta_dot(p) - 0.022)*3.76
measure_theta_precise
(
p
::
Furuta
)
=
read
(
p
.
measure_theta_precise
)
#theta_precise(p::Furuta) = (measure_theta_precise(p) + 0.7792)*0.058
measure_theta_dot_precise
(
p
::
Furuta
)
=
read
(
p
.
measure_theta_dot_precise
)
#theta_dot_precise(p::Furuta) = measure_theta_dot_precise(p)*0.68
function
theta
(
p
::
Furuta
)
a
=
(
measure_theta
(
p
)
+
5.1763
)
*
0.3091
if
abs
(
a
)
<
0.5
a
=
(
measure_theta_precise
(
p
)
+
0.7792
)
*
0.058
end
return
a
end
function
theta_dot
(
p
::
Furuta
)
a
=
(
measure_theta
(
p
)
+
5.1763
)
*
0.3091
b
=
(
measure_theta_dot
(
p
)
-
0.022
)
*
3.76
if
abs
(
a
)
<
0.5
b
=
measure_theta_dot_precise
(
p
)
*
0.68
end
return
b
end
measure
(
p
::
FurutaSimulator
)
=
p
.
s
.
sys
.
C
*
p
.
s
.
state
initialize
(
p
::
Furuta
)
=
nothing
Loading