Skip to content

Commit 4a44372

Browse files
committed
switch frame to frame_a for consistency
1 parent 90356fb commit 4a44372

File tree

2 files changed

+54
-54
lines changed

2 files changed

+54
-54
lines changed

src/PlanarMechanics/components.jl

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -52,14 +52,14 @@ Body component with mass and inertia
5252
- `v`: [m/s, m/s] x,y velocity
5353
- `a`: [m/s², m/s²] x,y acceleration
5454
- `phi`: [rad] rotation angle (counterclockwise)
55-
- `ω`: [rad/s] angular velocity
55+
- `w`: [rad/s] angular velocity
5656
- `α`: [rad/s²] angular acceleration
5757
5858
# Connectors:
5959
- `frame`: 2-dim. Coordinate system
6060
"""
6161
@component function Body(; name, m, I, r = zeros(2), phi = 0, gy = -9.807, radius=0.1, render=true, color=Multibody.purple)
62-
@named frame = Frame()
62+
@named frame_a = Frame()
6363
pars = @parameters begin
6464
m = m, [description = "Mass of the body"]
6565
I = I, [description = "Inertia of the body with respect to the origin of frame_a along the z-axis of frame_a"]
@@ -76,27 +76,27 @@ Body component with mass and inertia
7676
v(t)[1:2], [description = "x,y velocity"]
7777
a(t)[1:2], [description = "x,y acceleration"]
7878
(phi(t) = phi), [description = "Rotation angle"]
79-
ω(t), [description = "Angular velocity"]
79+
w(t), [description = "Angular velocity"]
8080
α(t), [description = "Angular acceleration"]
8181
end
8282

8383
eqs = [
8484
# velocity is the time derivative of position
85-
r .~ [frame.x, frame.y]
85+
r .~ [frame_a.x, frame_a.y]
8686
v .~ D.(r)
87-
phi ~ frame.phi
88-
ω .~ D.(phi)
87+
phi ~ frame_a.phi
88+
w .~ D.(phi)
8989
# acceleration is the time derivative of velocity
9090
a .~ D.(v)
91-
α .~ D.(ω)
91+
α .~ D.(w)
9292
# newton's law
93-
f .~ [frame.fx, frame.fy]
93+
f .~ [frame_a.fx, frame_a.fy]
9494
f + [0, m*gy] .~ m*a#ifelse(gy !== nothing, fy / m + gy, fy / m),
95-
I * α ~ frame.tau
95+
I * α ~ frame_a.tau
9696
]
9797

9898
return compose(ODESystem(eqs, t, vars, pars; name),
99-
frame)
99+
frame_a)
100100
end
101101

102102
"""
@@ -133,7 +133,7 @@ The `BodyShape` component is similar to a [`Body`](@ref), but it has two frames
133133
@equations begin
134134
connect(frame_a, translation.frame_a, translation_cm.frame_a)
135135
connect(frame_b, translation.frame_b)
136-
connect(translation_cm.frame_b, body.frame)
136+
connect(translation_cm.frame_b, body.frame_a)
137137
end
138138
end
139139

test/test_PlanarMechanics.jl

Lines changed: 43 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ end
4343
connections = [
4444
connect(ceiling.frame, revolute.frame_a),
4545
connect(revolute.frame_b, rod.frame_a),
46-
connect(rod.frame_b, body.frame)
46+
connect(rod.frame_b, body.frame_a)
4747
]
4848

4949
@named model = ODESystem(connections,
@@ -91,31 +91,31 @@ end
9191

9292
@testset "Prismatic" begin
9393
# just testing instantiation
94-
@test_nowarn @named prismatic = Pl.Prismatic(x = 1.0, y = 0.0)
94+
@test_nowarn @named prismatic = Pl.Prismatic(r = [1.0, 0.0])
9595
end
9696

9797
@testset "AbsoluteAccCentrifugal" begin
9898
# https://github.com/dzimmer/PlanarMechanics/blob/443b007bcc1522bb172f13012e2d7a8ecc3f7a9b/PlanarMechanicsTest/Sensors.mo#L221-L332
9999
m = 1
100100
I = 0.1
101-
ω = 10
101+
w = 10
102102
resolve_in_frame = :world
103103

104104
# components
105105
@named body = Pl.Body(; m, I, gy = 0.0)
106106
@named fixed_translation = Pl.FixedTranslation(; r = [10, 0])
107107
@named fixed = Pl.Fixed()
108-
@named revolute = Pl.Revolute()#constant_ω = ω)
108+
@named revolute = Pl.Revolute()#constant_w = w)
109109

110110
# sensors
111111
@named abs_v_sensor = Pl.AbsoluteVelocity(; resolve_in_frame)
112112

113113
eqs = [
114114
connect(fixed.frame, revolute.frame_a),
115115
connect(revolute.frame_b, fixed_translation.frame_a),
116-
connect(fixed_translation.frame_b, body.frame),
117-
# Pl.connect_sensor(body.frame, abs_v_sensor.frame_a)... # QUESTION: why?
118-
connect(body.frame, abs_v_sensor.frame_a)
116+
connect(fixed_translation.frame_b, body.frame_a),
117+
Pl.connect_sensor(body.frame_a, abs_v_sensor.frame_a)... # QUESTION: why?
118+
# connect(body.frame_a, abs_v_sensor.frame_a)
119119
]
120120

121121
@named model = ODESystem(eqs,
@@ -132,21 +132,21 @@ end
132132
model = complete(model)
133133
@test_skip begin # Yingbo: BoundsError: attempt to access 137-element Vector{Vector{Int64}} at index [138]
134134
ssys = structural_simplify(IRSystem(model))
135-
prob = ODEProblem(ssys, [model.body.ω => ω], tspan)
135+
prob = ODEProblem(ssys, [model.body.w => w], tspan)
136136
sol = solve(prob, Rodas5P(), initializealg=BrownFullBasicInit())
137137

138138
# phi
139-
@test sol[body.phi][end] tspan[end] * ω
140-
@test all(sol[body.ω] .≈ ω)
139+
@test sol[body.phi][end] tspan[end] * w
140+
@test all(sol[body.w] .≈ w)
141141

142-
test_points = [i / ω for i in 0:0.1:10]
142+
test_points = [i / w for i in 0:0.1:10]
143143

144144
# instantaneous linear velocity
145-
v_signal(t) = -ω^2 * sin.(ω .* t)
145+
v_signal(t) = -w^2 * sin.(w .* t)
146146
@test all(v_signal.(test_points) .≈ sol.(test_points; idxs = abs_v_sensor.v_x.u))
147147

148148
# instantaneous linear acceleration
149-
a_signal(t) = -ω^3 * cos.(ω .* t)
149+
a_signal(t) = -w^3 * cos.(w .* t)
150150
@test all(a_signal.(test_points) .≈ sol.(test_points; idxs = body.ax))
151151
end
152152
end
@@ -171,39 +171,39 @@ end
171171
@named rel_a_sensor2 = Pl.RelativeAcceleration(; resolve_in_frame)
172172

173173
connections = [
174-
Pl.connect_sensor(body1.frame, abs_pos_sensor.frame_a)...,
175-
Pl.connect_sensor(body1.frame, abs_v_sensor.frame_a)...,
176-
Pl.connect_sensor(body1.frame, abs_a_sensor.frame_a)...,
177-
Pl.connect_sensor(body1.frame, rel_pos_sensor1.frame_a)...,
174+
Pl.connect_sensor(body1.frame_a, abs_pos_sensor.frame_a)...,
175+
Pl.connect_sensor(body1.frame_a, abs_v_sensor.frame_a)...,
176+
Pl.connect_sensor(body1.frame_a, abs_a_sensor.frame_a)...,
177+
Pl.connect_sensor(body1.frame_a, rel_pos_sensor1.frame_a)...,
178178
Pl.connect_sensor(base.frame, rel_pos_sensor1.frame_b)...,
179-
Pl.connect_sensor(body1.frame, rel_pos_sensor2.frame_a)...,
180-
Pl.connect_sensor(body2.frame, rel_pos_sensor2.frame_b)...,
179+
Pl.connect_sensor(body1.frame_a, rel_pos_sensor2.frame_a)...,
180+
Pl.connect_sensor(body2.frame_a, rel_pos_sensor2.frame_b)...,
181181
Pl.connect_sensor(base.frame, rel_v_sensor1.frame_a)...,
182-
Pl.connect_sensor(body1.frame, rel_v_sensor1.frame_b)...,
183-
Pl.connect_sensor(body1.frame, rel_v_sensor2.frame_a)...,
184-
Pl.connect_sensor(body2.frame, rel_v_sensor2.frame_b)...,
185-
Pl.connect_sensor(body1.frame, rel_a_sensor1.frame_a)...,
182+
Pl.connect_sensor(body1.frame_a, rel_v_sensor1.frame_b)...,
183+
Pl.connect_sensor(body1.frame_a, rel_v_sensor2.frame_a)...,
184+
Pl.connect_sensor(body2.frame_a, rel_v_sensor2.frame_b)...,
185+
Pl.connect_sensor(body1.frame_a, rel_a_sensor1.frame_a)...,
186186
Pl.connect_sensor(base.frame, rel_a_sensor1.frame_b)...,
187-
Pl.connect_sensor(body1.frame, rel_a_sensor2.frame_a)...,
188-
Pl.connect_sensor(body2.frame, rel_a_sensor2.frame_b)...
187+
Pl.connect_sensor(body1.frame_a, rel_a_sensor2.frame_a)...,
188+
Pl.connect_sensor(body2.frame_a, rel_a_sensor2.frame_b)...
189189
]
190190

191191
# connections = [
192-
# connect(body1.frame, abs_pos_sensor.frame_a),
193-
# connect(body1.frame, abs_v_sensor.frame_a),
194-
# connect(body1.frame, abs_a_sensor.frame_a),
195-
# connect(body1.frame, rel_pos_sensor1.frame_a),
192+
# connect(body1.frame_a, abs_pos_sensor.frame_a),
193+
# connect(body1.frame_a, abs_v_sensor.frame_a),
194+
# connect(body1.frame_a, abs_a_sensor.frame_a),
195+
# connect(body1.frame_a, rel_pos_sensor1.frame_a),
196196
# connect(base.frame, rel_pos_sensor1.frame_b),
197-
# connect(body1.frame, rel_pos_sensor2.frame_a),
198-
# connect(body2.frame, rel_pos_sensor2.frame_b),
197+
# connect(body1.frame_a, rel_pos_sensor2.frame_a),
198+
# connect(body2.frame_a, rel_pos_sensor2.frame_b),
199199
# connect(base.frame, rel_v_sensor1.frame_a),
200-
# connect(body1.frame, rel_v_sensor1.frame_b),
201-
# connect(body1.frame, rel_v_sensor2.frame_a),
202-
# connect(body2.frame, rel_v_sensor2.frame_b),
203-
# connect(body1.frame, rel_a_sensor1.frame_a),
200+
# connect(body1.frame_a, rel_v_sensor1.frame_b),
201+
# connect(body1.frame_a, rel_v_sensor2.frame_a),
202+
# connect(body2.frame_a, rel_v_sensor2.frame_b),
203+
# connect(body1.frame_a, rel_a_sensor1.frame_a),
204204
# connect(base.frame, rel_a_sensor1.frame_b),
205-
# connect(body1.frame, rel_a_sensor2.frame_a),
206-
# connect(body2.frame, rel_a_sensor2.frame_b),
205+
# connect(body1.frame_a, rel_a_sensor2.frame_a),
206+
# connect(body2.frame_a, rel_a_sensor2.frame_b),
207207
# ]
208208

209209
@named model = ODESystem(connections,
@@ -281,8 +281,8 @@ end
281281
@named revolute2 = Pl.Revolute()
282282

283283
connections = [
284-
connect(fixed_translation.frame_b, body.frame),
285-
connect(fixed_translation1.frame_b, body1.frame),
284+
connect(fixed_translation.frame_b, body.frame_a),
285+
connect(fixed_translation1.frame_b, body1.frame_a),
286286
connect(fixed.frame, revolute1.frame_a),
287287
connect(revolute1.frame_b, fixed_translation.frame_a),
288288
# connect(abs_a_sensor.frame_resolve, abs_a_sensor.frame_a),
@@ -294,7 +294,7 @@ end
294294
# connect(rel_a_sensor.frame_b, body1.frame_a),
295295
# connect(rel_v_sensor.frame_b, body1.frame_a),
296296
# connect(rel_v_sensor.frame_b, body1.frame_a),
297-
Pl.connect_sensor(body1.frame, abs_a_sensor.frame_a)... # Pl.connect_sensor(body1.frame, abs_v_sensor.frame_a)..., # Pl.connect_sensor(body1.frame, abs_pos_sensor.frame_a)...,
297+
Pl.connect_sensor(body1.frame_a, abs_a_sensor.frame_a)... # Pl.connect_sensor(body1.frame, abs_v_sensor.frame_a)..., # Pl.connect_sensor(body1.frame, abs_pos_sensor.frame_a)...,
298298
]
299299

300300
@named model = ODESystem(connections,
@@ -338,7 +338,7 @@ end
338338
connections = [
339339
connect(fixed.frame, fixed_translation.frame_a),
340340
connect(fixed_translation.frame_b, spring_damper.frame_a),
341-
connect(spring_damper.frame_b, body.frame)
341+
connect(spring_damper.frame_b, body.frame_a)
342342
]
343343
@named model = ODESystem(connections,
344344
t,
@@ -363,11 +363,11 @@ end
363363
@named fixed = Pl.Fixed()
364364
@named spring = Pl.Spring(; c_y = 10, s_rely0 = -0.5, c_x = 1, c_phi = 1e5)
365365
@named damper = Pl.Damper(d = 1)
366-
@named prismatic = Pl.Prismatic(; x = 0, y = 1)
366+
@named prismatic = Pl.Prismatic(; r=[0, 1])
367367

368368
connections = [
369369
connect(fixed.frame, spring.frame_a),
370-
connect(spring.frame_b, body.frame),
370+
connect(spring.frame_b, body.frame_a),
371371
connect(damper.frame_a, spring.frame_a),
372372
connect(damper.frame_b, spring.frame_b),
373373
connect(spring.frame_a, prismatic.frame_a),

0 commit comments

Comments
 (0)