1 |
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.0//EN" "https://www.web3d.org/specifications/x3d-3.0.dtd">
|
3 | <X3D profile='Immersive' version='3.0' xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' xsd:noNamespaceSchemaLocation='https://www.web3d.org/specifications/x3d-3.0.xsd'> |
4 | <head> |
5 | <meta name='title' content='Remus.x3d'/> |
6 | <meta name='description' content="Remote Environmental Monitoring UnitS (REMUS) is a low-cost autonomous underwater vehicle (AUV) for coastal monitoring and multiple vehicle survey operations. REMUS is developed and operated by the Woods Hole Oceanographic Institute (WHOI) Oceanographic Systems Laboratory. Red fin is topside. p.s. Jeff Weekley's first model!"/> |
7 | <meta name='creator' content='Jeffrey Weekley'/> |
8 | <meta name='created' content='16 March 2001'/> |
9 | <meta name='modified' content='20 October 2019'/> |
10 | <meta name='reference' content='http://adcp.whoi.edu'/> |
11 | <meta name='reference' content='http://www.whoi.edu/home/marine/remus_main.html'/> |
12 | <meta name='reference' content='remus_main_May2001.pdf'/> |
13 | <meta name='photo' content='marine_remus_top.jpg'/> |
14 | <meta name='reference' content='SAHRV-SemiAutonomousHydrographicReconnaissainceVehicle.pdf'/> |
15 | <meta name='reference' content='http://www.onr.navy.mil/sci_tech/ocean/info/yerpts/oeye00/oe5vona1.pdf'/> |
16 | <meta name='reference' content='oe5vona1-NavalSpecialWarfareSupportWithREMUS.pdf'/> |
17 | <meta name='identifier' content='https://savage.nps.edu/Savage/Robots/UnmannedUnderwaterVehicles/Remus.x3d'/> |
18 | <meta name='generator' content='X3D-Edit 3.2, https://savage.nps.edu/X3D-Edit'/> |
19 | <meta name='license' content='../../license.html'/> |
20 | </head> |
21 | <Scene> |
22 | <WorldInfo info='"Only unclassified open resources were used to create this model."' title='Remus AUV'/> |
23 | <Background skyColor='0.2 0.8 0.8'/> |
24 | <Transform rotation='0 1 0 -1.57' translation='-5 1 0'> |
25 | <Viewpoint description='Remus over-the-shoulder 5m' orientation='1 0 0 -0.25' position='0 0 0'/> |
26 | </Transform> |
27 | <Group> |
28 | <Viewpoint description='Remus from above 100m' orientation='-0.58 -0.58 -0.58 2.09' position='0 100 0'/> |
29 | <Viewpoint description='Remus starboard side 30m' position='0 0 30'/> |
30 | <Viewpoint description='Remus starboard side 3m' position='0 0 3'/> |
31 | <Viewpoint description='Remus astern 30m' orientation='0 1 0 -1.57' position='-30 0.1 0'/> |
32 | <Viewpoint description='Remus astern 3m' orientation='0 1 0 -1.57' position='-3 0.1 0'/> |
33 | <Viewpoint description='Remus port side 30m' orientation='0 1 0 3.14' position='0 0 -30'/> |
34 | <Viewpoint description='Remus port side 3m' orientation='0 1 0 3.14' position='0 0 -3'/> |
35 | </Group> |
36 | <WorldInfo info='"null node outside of LOD range"'/> |
37 | <!-- This file builds the REMUS Autonomous Underwater Vehicle (AUV). The dimensions were originally provided in English units and is converted to metric using a scale that 39.3 inches equal one meter. --> |
38 | <Transform rotation='0.0 0.0 1.0 1.57079' scale='0.2145 0.2145 0.2145' translation='1 0 0'> |
39 | <Transform DEF='torpedoband1' translation='0.0 2.475 0.0'> |
40 | <Shape> |
41 | <Cylinder bottom='false' height='0.45' radius='.267' top='false'/> |
42 | <Appearance> |
43 | <Material diffuseColor='0 0.5 0.5'/> |
44 | </Appearance> |
45 | </Shape> |
46 | </Transform> |
47 | <Transform DEF='torpedoband2' translation='0.0 2.735 0.0'> |
48 | <Shape> |
49 | <Cylinder bottom='false' height='.07' radius='.267' top='false'/> |
50 | <Appearance> |
51 | <Material diffuseColor='0 0.5 0.5'/> |
52 | </Appearance> |
53 | </Shape> |
54 | </Transform> |
55 | <Transform DEF='torpedobody2' translation='0.0 3.37 0.0'> |
56 | <Shape> |
57 | <Cylinder bottom='false' height='1.2' radius='0.267' top='false'/> |
58 | <Appearance> |
59 | <Material diffuseColor='1.0 1.0 0.0'/> |
60 | </Appearance> |
61 | </Shape> |
62 | </Transform> |
63 | <Transform DEF='torpedoband3' translation='0.0 4.005 0.0'> |
64 | <Shape> |
65 | <Cylinder bottom='false' height='.07' radius='.267' top='false'/> |
66 | <Appearance> |
67 | <Material diffuseColor='1.0 1.0 0.0'/> |
68 | </Appearance> |
69 | </Shape> |
70 | </Transform> |
71 | <Transform DEF='torpedobody3' translation='0.0 4.638 0.0'> |
72 | <Shape> |
73 | <Cylinder bottom='false' height='1.2' radius='0.267' top='false'/> |
74 | <Appearance> |
75 | <Material diffuseColor='1.0 1.0 0.0'/> |
76 | </Appearance> |
77 | </Shape> |
78 | </Transform> |
79 | <Transform DEF='torpedoband4' translation='0.0 3.8075 0.0'> |
80 | <Transform translation='0.0 1.465 0.0'> |
81 | <Shape> |
82 | <Cylinder bottom='false' height='.07' radius='.267' top='false'/> |
83 | <Appearance> |
84 | <Material diffuseColor='1.0 1.0 0.0'/> |
85 | </Appearance> |
86 | </Shape> |
87 | </Transform> |
88 | </Transform> |
89 | <Transform DEF='torpedobody4' translation='0.0 3.8075 0.0'> |
90 | <Transform translation='0.0 2.1 0.0'> |
91 | <Shape> |
92 | <Cylinder bottom='false' height='1.2' radius='.267' top='false'/> |
93 | <Appearance> |
94 | <Material diffuseColor='1.0 1.0 0.0'/> |
95 | </Appearance> |
96 | </Shape> |
97 | </Transform> |
98 | </Transform> |
99 | <Transform DEF='torpedonose' rotation='1.0 0.0 0.0 3.1416' translation='0 2.2525 0'> |
100 | <Shape> |
101 | <Appearance> |
102 | <Material shininess='0.5'/> |
103 | </Appearance> |
104 | <Extrusion creaseAngle='1.785' crossSection='0.267 0.000 0.231 -0.134 0.134 -0.231 0.0 -0.267 -0.134 -0.231 -0.231 -0.134 -0.267 0.000 -0.231 0.134 -0.134 0.231 0.0 0.267 0.134 0.231 0.231 0.134 0.267 0.0' scale='1.00 1.00 0.95 0.95 0.88 0.88 0.76 0.76 0.48 0.48' spine='0.00 0.00 0.00 0.00 0.10 0.00 0.00 0.20 0.00 0.00 0.30 0.00 0.00 0.40 0.00'/> |
105 | </Shape> |
106 | </Transform> |
107 | <Group DEF='controlfins'> |
108 | <Transform translation='0.0 -0.25 0.0'> |
109 | <Transform DEF='ControlFin1'> |
110 | <Transform translation='0.19 7.81 0.0'> |
111 | <Shape> |
112 | <Box size='0.4 .2 0.02'/> |
113 | <Appearance> |
114 | <Material diffuseColor='1.0 0.0 0.0' shininess='0.5'/> |
115 | </Appearance> |
116 | </Shape> |
117 | </Transform> |
118 | </Transform> |
119 | <Transform DEF='ControlFin2' rotation='0 1 0 3.17'> |
120 | <Transform translation='0.19 7.81 0.0'> |
121 | <Shape> |
122 | <Box size='0.4 .2 0.02'/> |
123 | <Appearance> |
124 | <Material diffuseColor='0.1 0.1 0.1' shininess='0.5'/> |
125 | </Appearance> |
126 | </Shape> |
127 | </Transform> |
128 | </Transform> |
129 | <Transform DEF='ControlFin3' rotation='0 1 0 1.57'> |
130 | <Transform translation='0.19 7.81 0.0'> |
131 | <Shape> |
132 | <Box size='0.4 .2 0.02'/> |
133 | <Appearance> |
134 | <Material diffuseColor='0.1 0.1 0.1' shininess='0.5'/> |
135 | </Appearance> |
136 | </Shape> |
137 | </Transform> |
138 | </Transform> |
139 | <Transform DEF='ControlFin4' rotation='0.0 1.0 0.0 4.74'> |
140 | <Transform translation='0.19 7.81 0.0'> |
141 | <Shape> |
142 | <Box size='0.4 .2 0.02'/> |
143 | <Appearance> |
144 | <Material diffuseColor='0.1 0.1 0.1' shininess='0.5'/> |
145 | </Appearance> |
146 | </Shape> |
147 | </Transform> |
148 | </Transform> |
149 | </Transform> |
150 | </Group> |
151 | <Group DEF='stabilzerfins'/> |
152 | <Group DEF='TailSection'> |
153 | <Transform DEF='torpedotail' rotation='1.0 0.0 0.0 3.1416' translation='0.0 7.9375 0.0'> |
154 | <Shape> |
155 | <Appearance> |
156 | <Material shininess='1.0'/> |
157 | </Appearance> |
158 | <Extrusion creaseAngle='2.0' crossSection='0.267 0.000 0.231 -0.134 0.134 -0.231 0.0 -0.267 -0.134 -0.231 -0.231 -0.134 -0.267 0.000 -0.231 0.134 -0.134 0.231 0.0 0.267 0.134 0.231 0.231 0.134 0.267 0.0' endCap='false' scale='0.342 0.342 0.500 0.500 0.643 0.643 0.766 0.766 0.866 0.866 0.940 0.940 0.985 0.985 1.0 1.0' spine='0.0 0.0 0.000 0.0 0.114 0.000 0.0 0.266 0.000 0.0 0.453 0.000 0.0 0.670 0.000 0.0 0.910 0.000 0.0 1.166 0.000 0.0 1.431 0.0'/> |
159 | </Shape> |
160 | <LOD range='20'> |
161 | <Group DEF='torpedostator'> |
162 |
<!-- ROUTE information for propeller node:
[from PropSpin.value_changed to rotation
]
-->
<Transform DEF='propeller' translation='0.0 -0.15 0.0'> |
163 | <Group DEF='statorblade1'> |
164 | <Transform DEF='torpedostatorblade1'> |
165 | <Transform rotation='-1.0 0.0 0.0 1.0472' translation='0.075 0.0 0.0'> |
166 | <Shape> |
167 | <Box size='0.125 0.09 0.015'/> |
168 | <Appearance> |
169 | <Material diffuseColor='0.1 0.1 0.1' shininess='0.75'/> |
170 | </Appearance> |
171 | </Shape> |
172 | </Transform> |
173 | </Transform> |
174 | <Transform DEF='torpedostatorblade2' rotation='0.0 1.0 0.0 1.0472'> |
175 | <Transform rotation='1 0 0 1.0472' translation='-0.075 0.0 0.0'> |
176 | <Shape> |
177 | <Box size='0.125 0.09 0.015'/> |
178 | <Appearance> |
179 | <Material diffuseColor='0.1 0.1 0.1' shininess='0.5'/> |
180 | </Appearance> |
181 | </Shape> |
182 | </Transform> |
183 | </Transform> |
184 | <Transform DEF='torpedostatorblade3' rotation='0.0 1.0 0.0 -1.0472'> |
185 | <Transform rotation='1 0 0 1.0472' translation='-0.075 0.0 0.0'> |
186 | <Shape> |
187 | <Box size='0.125 0.09 0.015'/> |
188 | <Appearance> |
189 | <Material diffuseColor='0.1 0.1 0.1'/> |
190 | </Appearance> |
191 | </Shape> |
192 | </Transform> |
193 | </Transform> |
194 | </Group> |
195 | <Transform DEF='statorcrankshaft' rotation='1.0 0.0 0.0 3.1416' translation='0.0 0.05 0.0'> |
196 | <Shape> |
197 | <Cone bottomRadius='0.09' height='0.2'/> |
198 | <Appearance> |
199 | <Material diffuseColor='0.1 0.1 0.1'/> |
200 | </Appearance> |
201 | </Shape> |
202 | </Transform> |
203 | </Transform> |
204 | <!-- Spins the propellor and stator once every 4 seconds --> |
205 |
<!-- ROUTE information for Clock node:
[from fraction_changed to PropSpin.set_fraction
]
-->
<TimeSensor DEF='Clock' cycleInterval='0.5' loop='true'/> |
206 |
<!-- ROUTE information for PropSpin node:
[from Clock.fraction_changed to set_fraction
]
[from value_changed to propeller.rotation
]
-->
<OrientationInterpolator DEF='PropSpin' key='0.0 0.5 1.0' keyValue='0.0 1.0 0.0 0.00 0.0 1.0 0.0 3.14 0.0 1.0 0.0 6.28'/> |
207 | < ROUTE fromNode='Clock' fromField='fraction_changed' toNode='PropSpin' toField='set_fraction'/> |
208 | < ROUTE fromNode='PropSpin' fromField='value_changed' toNode='propeller' toField='rotation'/> |
209 | </Group> |
210 | <WorldInfo info='"null node"'/> |
211 | </LOD> |
212 | </Transform> |
213 | </Group> |
214 |
<!-- Transform
SideScanningSonarArray1 is a DEF node that has 1 USE node: USE_1 -->
<Transform DEF='SideScanningSonarArray1' translation='0.0 4.5 0.27'> |
215 | <Shape> |
216 | <Box size='0.04 2.0 0.025'/> |
217 | <Appearance> |
218 | <Material diffuseColor='0.1 0.1 0.1' shininess='0.5'/> |
219 | </Appearance> |
220 | </Shape> |
221 | </Transform> |
222 | <Transform DEF='SideScanningSonarArray2' translation='0.0 0.0 -.54'> |
223 | <Transform USE='SideScanningSonarArray1'/> |
224 | </Transform> |
225 | <Transform DEF='TopHook' translation='0.27 4.25 0.0'> |
226 | <Shape> |
227 | <Box size='0.04 0.1 0.04'/> |
228 | <Appearance> |
229 | <Material diffuseColor='0.1 0.1 0.1' shininess='.75'/> |
230 | </Appearance> |
231 | </Shape> |
232 | </Transform> |
233 | </Transform> |
234 | <Group DEF='GPSTransiever'> |
235 | <Transform rotation='0 1 0 1.57' scale='0.0125 0.0125 0.0125' translation='-0.3 0.06 0'> |
236 | <Transform DEF='Top'> |
237 | <Shape> |
238 | <Extrusion creaseAngle='3.14' crossSection='0 1.1 0.65 0.4 0.7 0.2 0.7 -0.2 0 -1.6 -0.7 -0.2 -0.7 0.2 -0.65 0.4 0 1.1' scale='0.9 0.9 1 1 1 1 0.9 0.9' spine='0 5 0 0 5.1 0 0 5.9 0 0 6 0'/> |
239 | <Appearance> |
240 | <Material diffuseColor='0.8 0.63 0.7' transparency='0.2'/> |
241 | </Appearance> |
242 | </Shape> |
243 | </Transform> |
244 | <Transform DEF='Fin'> |
245 | <Shape> |
246 | <Extrusion creaseAngle='3.14' crossSection='0 2.2 0.2 1.8 0 -2.2 -0.2 1.8 0 2.2' scale='1 1 0.4 0.4' spine='0 0 0 0 5.9 0'/> |
247 | |
248 | <Material diffuseColor='0.8 0.43 0.3'/> |
249 | </Appearance> |
250 | </Shape> |
251 | </Transform> |
252 | <Transform DEF='Base'> |
253 | <Shape> |
254 | <Extrusion creaseAngle='2' crossSection='0 2.3 0.2 2.2 0.4 2 0.5 1.6 0.5 -1.6 0.3 -2 0 -2.3 -0.3 -2 -0.5 -1.6 -0.5 1.6 -0.4 2 -0.2 2.2 0 2.3' scale='1 1 1 1 0.9 0.9' spine='0 -0.5 0 0 0.1 0 0 0.11 0'/> |
255 | <Appearance USE='Orange'/> |
256 | </Shape> |
257 | </Transform> |
258 | <Transform translation='0 5.825 0'> |
259 | <Shape> |
260 | <Box size='0.8 0.3 1'/> |
261 | <Appearance> |
262 | <Material diffuseColor='0.15 0.15 0.25'/> |
263 | </Appearance> |
264 | </Shape> |
265 | </Transform> |
266 | </Transform> |
267 | </Group> |
268 | </Scene> |
269 | </X3D> |
Event Graph ROUTE Table entries with 2 ROUTE connections total, showing X3D event-model relationships for this scene.
Each row shows an event cascade that may occur during a single timestamp interval between frame renderings, as part of the X3D execution model.
Clock
TimeSensor fraction_changed SFFloat |
PropSpin
OrientationInterpolator set_fraction SFFloat |
then
|
PropSpin
OrientationInterpolator value_changed SFRotation |
propeller
Transform rotation SFRotation |
<!--
Color legend: X3D terminology
<X3dNode
DEF='idName' field='value'/>
matches XML terminology
<XmlElement
DEF='idName' attribute='value'/>
(Light-blue background: event-based behavior node or statement)
(Grey background inside box: inserted documentation)
(Magenta background: X3D Extensibility)
-->
<!-- For additional help information about X3D scenes, please see X3D Tooltips, X3D Resources, and X3D Scene Authoring Hints. -->