@@ -23,7 +23,7 @@ If `frameOrig` is omitted `r` represents the absolute position of `frameMeas`.
2323
2424If `frameCoord` is omitted `r` is resolved in absolute coordinates.
2525"""
26- function measFramePosition (frameMeas:: Object3D ; frameOrig:: Object3D , frameCoord:: Object3D )
26+ function measFramePosition (frameMeas:: Object3D ; frameOrig:: Union{ Object3D, Nothing} = nothing , frameCoord:: Union{ Object3D, Nothing} = nothing )
2727 r_OrigMeas = copy (frameMeas. r_abs) # World_r_OrigMeas := World_r_WorldMeas
2828 if ! isnothing (frameOrig)
2929 r_OrigMeas = r_OrigMeas - frameOrig. r_abs # World_r_OrigMeas := World_r_OrigMeas - World_r_WorldOrig
@@ -42,8 +42,8 @@ Return distance `d` and normalized direction vector `n` from origin of frame `fr
4242
4343If `frameOrig` is omitted `d` and `n` represent the distance from world frame to `frameMeas`.
4444"""
45- function measFrameDistance (frameMeas:: Object3D ; frameOrig:: Object3D )
46- r_OrigMeas = measFramePosition (frameMeas; frameOrig)
45+ function measFrameDistance (frameMeas:: Object3D ; frameOrig:: Union{ Object3D, Nothing} = nothing )
46+ r_OrigMeas = measFramePosition (frameMeas; frameOrig= frameOrig )
4747 d_OrigMeas = norm (r_OrigMeas)
4848 if d_OrigMeas > 1.0e-32
4949 n_OrigMeas = r_OrigMeas / d_OrigMeas
@@ -63,7 +63,7 @@ If `frameOrig` is omitted `w` represents the absolute rotational velocity of `fr
6363
6464If `frameCoord` is omitted `w` is resolved in absolute coordinates.
6565"""
66- function measFrameRotVelocity (frameMeas:: Object3D ; frameOrig:: Object3D , frameCoord:: Object3D )
66+ function measFrameRotVelocity (frameMeas:: Object3D ; frameOrig:: Union{ Object3D, Nothing} = nothing , frameCoord:: Union{ Object3D, Nothing} = nothing )
6767 w_OrigMeas = frameMeas. R_abs' * copy (frameMeas. w) # World_w_WorldMeas := R_MeasWorld^T * Meas_w_WorldMeas
6868 if ! isnothing (frameOrig)
6969 w_OrigMeas = w_OrigMeas - (frameOrig. R_abs' * frameOrig. w) # World_w_OrigMeas := World_w_WorldMeas - R_OrigWorld^T * Orig_w_WorldOrig
@@ -86,13 +86,13 @@ If `frameCoord` is omitted `v` is resolved in absolute coordinates.
8686
8787If `frameObsrv` is omitted `v` is observed in world frame.
8888"""
89- function measFrameTransVelocity (frameMeas:: Object3D ; frameOrig:: Object3D , frameCoord:: Object3D , frameObsrv:: Object3D )
89+ function measFrameTransVelocity (frameMeas:: Object3D ; frameOrig:: Union{ Object3D, Nothing} = nothing , frameCoord:: Union{ Object3D, Nothing} = nothing , frameObsrv:: Union{ Object3D, Nothing} = nothing )
9090 v_OrigMeas = copy (frameMeas. v0) # World_v_OrigMeas := World_v_WorldMeas
9191 if ! isnothing (frameOrig)
9292 v_OrigMeas = v_OrigMeas - frameOrig. v0 # World_v_OrigMeas := World_v_WorldMeas - World_v_WorldOrig
9393 end
9494 if ! isnothing (frameObsrv)
95- r_OrigMeas = measFramePosition (frameMeas; frameOrig)
95+ r_OrigMeas = measFramePosition (frameMeas; frameOrig= frameOrig )
9696 w_WorldObsrv = measFrameRotVelocity (frameObsrv)
9797 v_OrigMeas = v_OrigMeas - cross (w_WorldObsrv, r_OrigMeas) # World_v_OrigMeas := World_v_OrigMeas - World_w_WorldObsrv x World_r_OrigMeas
9898 end
@@ -110,10 +110,10 @@ Return distance velocity `dd` between origin of frame `frameOrig` and origin of
110110
111111If `frameOrig` is omitted `dd` represents the distance velocity between world frame and `frameMeas`.
112112"""
113- function measFrameDistVelocity (frameMeas:: Object3D ; frameOrig:: Object3D )
114- (d_OrigMeas, n_OrigMeas) = measFrameDistance (frameMeas; frameOrig)
115- v_OrigMeas = measFrameTransVelocity (frameMeas; frameOrig)
116- dd_OrigMeas = n_OrigMeas * v_OrigMeas
113+ function measFrameDistVelocity (frameMeas:: Object3D ; frameOrig:: Union{ Object3D, Nothing} = nothing )
114+ (d_OrigMeas, n_OrigMeas) = measFrameDistance (frameMeas; frameOrig= frameOrig )
115+ v_OrigMeas = measFrameTransVelocity (frameMeas; frameOrig= frameOrig )
116+ dd_OrigMeas = dot ( n_OrigMeas, v_OrigMeas)
117117 return dd_OrigMeas
118118end
119119
@@ -129,13 +129,13 @@ If `frameCoord` is omitted `wd` is resolved in absolute coordinates.
129129
130130If `frameObsrv` is omitted `wd` is observed in world frame.
131131"""
132- function measFrameRotAcceleration (frameMeas:: Object3D ; frameOrig:: Object3D , frameCoord:: Object3D , frameObsrv:: Object3D )
132+ function measFrameRotAcceleration (frameMeas:: Object3D ; frameOrig:: Union{ Object3D, Nothing} = nothing , frameCoord:: Union{ Object3D, Nothing} = nothing , frameObsrv:: Union{ Object3D, Nothing} = nothing )
133133 wd_OrigMeas = frameMeas. R_abs' * copy (frameMeas. z) # World_wd_WorldMeas := R_MeasWorld^T * Meas_wd_WorldMeas
134134 if ! isnothing (frameOrig)
135135 wd_OrigMeas = wd_OrigMeas - (frame. Orig. R_abs' * frameOrig. z) # World_wd_OrigMeas := World_wd_WorldMeas - R_OrigWorld^T * Orig_wd_WorldOrig
136136 end
137137 if ! isnothing (frameObsrv)
138- w_OrigMeas = measFrameRotVelocity (frameMeas; frameOrig)
138+ w_OrigMeas = measFrameRotVelocity (frameMeas; frameOrig= frameOrig )
139139 w_WorldObsrv = measFrameRotVelocity (frameObsrv)
140140 wd_OrigMeas = wd_OrigMeas - cross (w_WorldObsrv, w_OrigMeas) # World_wd_OrigMeas := World_wd_OrigMeas - World_w_WorldObsrv x World_w_OrigMeas
141141 end
@@ -157,14 +157,14 @@ If `frameCoord` is omitted `a` is resolved in absolute coordinates.
157157
158158If `frameObsrv` is omitted `a` is observed in world frame.
159159"""
160- function measFrameTransAcceleration (frameMeas:: Object3D ; frameOrig:: Object3D , frameCoord:: Object3D , frameObsrv:: Object3D )
160+ function measFrameTransAcceleration (frameMeas:: Object3D ; frameOrig:: Union{ Object3D, Nothing} = nothing , frameCoord:: Union{ Object3D, Nothing} = nothing , frameObsrv:: Union{ Object3D, Nothing} = nothing )
161161 a_OrigMeas = copy (frameMeas. a0) # World_a_OrigMeas := World_a_WorldMeas
162162 if ! isnothing (frameOrig)
163163 a_OrigMeas = a_OrigMeas - frameOrig. a0 # World_a_OrigMeas := World_a_WorldMeas - World_a_WorldOrig
164164 end
165165 if ! isnothing (frameObsrv)
166- r_OrigMeas = measFramePosition (frameMeas; frameOrig)
167- v_OrigMeas = measFrameTransVelocity (frameMeas; frameOrig)
166+ r_OrigMeas = measFramePosition (frameMeas; frameOrig= frameOrig )
167+ v_OrigMeas = measFrameTransVelocity (frameMeas; frameOrig= frameOrig )
168168 w_WorldObsrv = measFrameRotVelocity (frameObsrv)
169169 wd_WorldObsrv = measFrameRotAcceleration (frameObsrv)
170170 a_OrigMeas = a_OrigMeas # World_a_OrigMeas := World_a_OrigMeas
@@ -186,16 +186,16 @@ Return distance acceleration `ddd` between origin of frame `frameOrig` and origi
186186
187187If `frameOrig` is omitted `ddd` represents the distance acceleration between world frame and `frameMeas`.
188188"""
189- function measFrameDistAcceleration (frameMeas:: Object3D ; frameOrig:: Object3D )
189+ function measFrameDistAcceleration (frameMeas:: Object3D ; frameOrig:: Union{ Object3D, Nothing} = nothing )
190190 # (n * v)d = n*vd + nd*v
191191 # = n*a + [r/d]d*v
192192 # = n*a + [(v*d - r*dd)/(d*d)]*v
193193 # = n*a + v*v/d - (r*v)*(n*v)/(d*d)
194194 # = n*a + v*v/d - (n*v)*(n*v)/d
195195 # = n*a + (v*v - dd*dd)/d
196- (d_OrigMeas, n_OrigMeas) = measFrameDistance (frameMeas; frameOrig)
197- v_OrigMeas = measFrameTransVelocity (frameMeas; frameOrig)
198- a_OrigMeas = measFrameTransAcceleration (frameMeas; frameOrig)
196+ (d_OrigMeas, n_OrigMeas) = measFrameDistance (frameMeas; frameOrig= frameOrig )
197+ v_OrigMeas = measFrameTransVelocity (frameMeas; frameOrig= frameOrig )
198+ a_OrigMeas = measFrameTransAcceleration (frameMeas; frameOrig= frameOrig )
199199 dd_OrigMeas = n_OrigMeas * v_OrigMeas
200200 ddd_OrigMeas = n_OrigMeas * a_OrigMeas
201201 if d_OrigMeas > 1.0e-32
0 commit comments