61 m_pcControllableEntity(nullptr),
62 m_pcDistanceScannerEquippedEntity(nullptr),
63 m_pcTurretEntity(nullptr),
64 m_pcEmbodiedEntity(nullptr),
65 m_pcGripperEquippedEntity(nullptr),
66 m_pcGroundSensorEquippedEntity(nullptr),
67 m_pcLEDEquippedEntity(nullptr),
68 m_pcLightSensorEquippedEntity(nullptr),
69 m_pcOmnidirectionalCameraEquippedEntity(nullptr),
70 m_pcPerspectiveCameraEquippedEntity(nullptr),
71 m_pcProximitySensorEquippedEntity(nullptr),
72 m_pcRABEquippedEntity(nullptr),
73 m_pcWheeledEntity(nullptr),
74 m_pcWiFiEquippedEntity(nullptr),
75 m_pcBatteryEquippedEntity(nullptr) {
82 const std::string& str_controller_id,
86 size_t un_rab_data_size,
87 const std::string& str_bat_model,
89 bool b_perspcam_front,
91 Real f_perspcam_focal_length,
92 Real f_perspcam_range) :
94 m_pcControllableEntity(nullptr),
95 m_pcDistanceScannerEquippedEntity(nullptr),
96 m_pcTurretEntity(nullptr),
97 m_pcEmbodiedEntity(nullptr),
98 m_pcGripperEquippedEntity(nullptr),
99 m_pcGroundSensorEquippedEntity(nullptr),
100 m_pcLEDEquippedEntity(nullptr),
101 m_pcLightSensorEquippedEntity(nullptr),
102 m_pcOmnidirectionalCameraEquippedEntity(nullptr),
103 m_pcPerspectiveCameraEquippedEntity(nullptr),
104 m_pcProximitySensorEquippedEntity(nullptr),
105 m_pcRABEquippedEntity(nullptr),
106 m_pcWheeledEntity(nullptr),
107 m_pcWiFiEquippedEntity(nullptr),
108 m_pcBatteryEquippedEntity(nullptr) {
117 m_pcEmbodiedEntity =
new CEmbodiedEntity(
this,
"body_0", c_position, c_orientation);
119 SAnchor& cTurretAnchor = m_pcEmbodiedEntity->AddAnchor(
"turret");
122 SAnchor& cPerspCamAnchor = m_pcEmbodiedEntity->AddAnchor(
"perspective_camera",
123 CVector3(BODY_RADIUS, 0.0, BEACON_ELEVATION),
128 m_pcWheeledEntity->SetWheel(0,
CVector3(0.0f, HALF_INTERWHEEL_DISTANCE, 0.0f), WHEEL_RADIUS);
129 m_pcWheeledEntity->SetWheel(1,
CVector3(0.0f, -HALF_INTERWHEEL_DISTANCE, 0.0f), WHEEL_RADIUS);
133 m_pcLEDEquippedEntity->AddLEDRing(
134 CVector3(0.0f, 0.0f, LED_RING_ELEVATION),
136 HALF_LED_ANGLE_SLICE,
139 m_pcLEDEquippedEntity->AddLED(
140 CVector3(0.0f, 0.0f, BEACON_ELEVATION),
143 m_pcProximitySensorEquippedEntity =
146 m_pcProximitySensorEquippedEntity->AddSensorRing(
147 CVector3(0.0f, 0.0f, PROXIMITY_SENSOR_RING_ELEVATION),
148 PROXIMITY_SENSOR_RING_RADIUS,
149 PROXIMITY_SENSOR_RING_START_ANGLE,
150 PROXIMITY_SENSOR_RING_RANGE,
152 m_pcEmbodiedEntity->GetOriginAnchor());
154 m_pcLightSensorEquippedEntity =
157 m_pcLightSensorEquippedEntity->AddSensorRing(
158 CVector3(0.0f, 0.0f, PROXIMITY_SENSOR_RING_ELEVATION),
159 PROXIMITY_SENSOR_RING_RADIUS,
160 PROXIMITY_SENSOR_RING_START_ANGLE,
161 PROXIMITY_SENSOR_RING_RANGE,
163 m_pcEmbodiedEntity->GetOriginAnchor());
165 m_pcGripperEquippedEntity =
168 CVector3(BODY_RADIUS, 0.0f, GRIPPER_ELEVATION),
172 m_pcGroundSensorEquippedEntity =
175 m_pcGroundSensorEquippedEntity->AddSensor(
CVector2(0.063, 0.0116),
177 m_pcEmbodiedEntity->GetOriginAnchor());
178 m_pcGroundSensorEquippedEntity->AddSensor(
CVector2(-0.063, 0.0116),
180 m_pcEmbodiedEntity->GetOriginAnchor());
181 m_pcGroundSensorEquippedEntity->AddSensor(
CVector2(-0.063, -0.0116),
183 m_pcEmbodiedEntity->GetOriginAnchor());
184 m_pcGroundSensorEquippedEntity->AddSensor(
CVector2(0.063, -0.0116),
186 m_pcEmbodiedEntity->GetOriginAnchor());
187 m_pcGroundSensorEquippedEntity->AddSensor(
CVector2(0.08, 0.0),
189 m_pcEmbodiedEntity->GetOriginAnchor());
190 m_pcGroundSensorEquippedEntity->AddSensor(
CVector2(0.042, 0.065),
192 m_pcEmbodiedEntity->GetOriginAnchor());
193 m_pcGroundSensorEquippedEntity->AddSensor(
CVector2(0.0, 0.08),
195 m_pcEmbodiedEntity->GetOriginAnchor());
196 m_pcGroundSensorEquippedEntity->AddSensor(
CVector2(-0.042, 0.065),
198 m_pcEmbodiedEntity->GetOriginAnchor());
199 m_pcGroundSensorEquippedEntity->AddSensor(
CVector2(-0.08, 0.0),
201 m_pcEmbodiedEntity->GetOriginAnchor());
202 m_pcGroundSensorEquippedEntity->AddSensor(
CVector2(-0.042, -0.065),
204 m_pcEmbodiedEntity->GetOriginAnchor());
205 m_pcGroundSensorEquippedEntity->AddSensor(
CVector2(0.0, -0.08),
207 m_pcEmbodiedEntity->GetOriginAnchor());
208 m_pcGroundSensorEquippedEntity->AddSensor(
CVector2(0.042, -0.065),
210 m_pcEmbodiedEntity->GetOriginAnchor());
212 m_pcDistanceScannerEquippedEntity =
216 m_pcRABEquippedEntity =
221 m_pcEmbodiedEntity->GetOriginAnchor(),
223 CVector3(0.0f, 0.0f, RAB_ELEVATION));
226 m_pcOmnidirectionalCameraEquippedEntity =
228 "omnidirectional_camera_0",
232 OMNIDIRECTIONAL_CAMERA_ELEVATION));
235 m_pcPerspectiveCameraEquippedEntity =
237 "perspective_camera_0",
239 f_perspcam_focal_length,
257 m_pcControllableEntity->SetController(str_controller_id);
284 m_pcEmbodiedEntity->Init(
GetNode(t_tree,
"body"));
285 SAnchor& cTurretAnchor = m_pcEmbodiedEntity->AddAnchor(
"turret");
289 m_pcWheeledEntity->SetWheel(0,
CVector3(0.0f, HALF_INTERWHEEL_DISTANCE, 0.0f), WHEEL_RADIUS);
290 m_pcWheeledEntity->SetWheel(1,
CVector3(0.0f, -HALF_INTERWHEEL_DISTANCE, 0.0f), WHEEL_RADIUS);
294 m_pcLEDEquippedEntity->AddLEDRing(
295 CVector3(0.0f, 0.0f, LED_RING_ELEVATION),
297 HALF_LED_ANGLE_SLICE,
300 m_pcLEDEquippedEntity->AddLED(
301 CVector3(0.0f, 0.0f, BEACON_ELEVATION),
304 m_pcProximitySensorEquippedEntity =
307 m_pcProximitySensorEquippedEntity->AddSensorRing(
308 CVector3(0.0f, 0.0f, PROXIMITY_SENSOR_RING_ELEVATION),
309 PROXIMITY_SENSOR_RING_RADIUS,
310 PROXIMITY_SENSOR_RING_START_ANGLE,
311 PROXIMITY_SENSOR_RING_RANGE,
313 m_pcEmbodiedEntity->GetOriginAnchor());
315 m_pcLightSensorEquippedEntity =
318 m_pcLightSensorEquippedEntity->AddSensorRing(
319 CVector3(0.0f, 0.0f, PROXIMITY_SENSOR_RING_ELEVATION),
320 PROXIMITY_SENSOR_RING_RADIUS,
321 PROXIMITY_SENSOR_RING_START_ANGLE,
322 PROXIMITY_SENSOR_RING_RANGE,
324 m_pcEmbodiedEntity->GetOriginAnchor());
326 m_pcGripperEquippedEntity =
329 CVector3(BODY_RADIUS, 0.0f, GRIPPER_ELEVATION),
333 m_pcGroundSensorEquippedEntity =
336 m_pcGroundSensorEquippedEntity->AddSensor(
CVector2(0.063, 0.0116),
338 m_pcEmbodiedEntity->GetOriginAnchor());
339 m_pcGroundSensorEquippedEntity->AddSensor(
CVector2(-0.063, 0.0116),
341 m_pcEmbodiedEntity->GetOriginAnchor());
342 m_pcGroundSensorEquippedEntity->AddSensor(
CVector2(-0.063, -0.0116),
344 m_pcEmbodiedEntity->GetOriginAnchor());
345 m_pcGroundSensorEquippedEntity->AddSensor(
CVector2(0.063, -0.0116),
347 m_pcEmbodiedEntity->GetOriginAnchor());
348 m_pcGroundSensorEquippedEntity->AddSensor(
CVector2(0.08, 0.0),
350 m_pcEmbodiedEntity->GetOriginAnchor());
351 m_pcGroundSensorEquippedEntity->AddSensor(
CVector2(0.042, 0.065),
353 m_pcEmbodiedEntity->GetOriginAnchor());
354 m_pcGroundSensorEquippedEntity->AddSensor(
CVector2(0.0, 0.08),
356 m_pcEmbodiedEntity->GetOriginAnchor());
357 m_pcGroundSensorEquippedEntity->AddSensor(
CVector2(-0.042, 0.065),
359 m_pcEmbodiedEntity->GetOriginAnchor());
360 m_pcGroundSensorEquippedEntity->AddSensor(
CVector2(-0.08, 0.0),
362 m_pcEmbodiedEntity->GetOriginAnchor());
363 m_pcGroundSensorEquippedEntity->AddSensor(
CVector2(-0.042, -0.065),
365 m_pcEmbodiedEntity->GetOriginAnchor());
366 m_pcGroundSensorEquippedEntity->AddSensor(
CVector2(0.0, -0.08),
368 m_pcEmbodiedEntity->GetOriginAnchor());
369 m_pcGroundSensorEquippedEntity->AddSensor(
CVector2(0.042, -0.065),
371 m_pcEmbodiedEntity->GetOriginAnchor());
373 m_pcDistanceScannerEquippedEntity =
381 m_pcRABEquippedEntity =
386 m_pcEmbodiedEntity->GetOriginAnchor(),
388 CVector3(0.0f, 0.0f, RAB_ELEVATION));
393 m_pcOmnidirectionalCameraEquippedEntity =
395 "omnidirectional_camera_0",
399 OMNIDIRECTIONAL_CAMERA_ELEVATION));
402 bool bPerspCamFront =
true;
404 Real fPerspCamFocalLength = 0.035;
406 Real fPerspCamRange = 2.0;
412 SAnchor& cPerspCamAnchor = m_pcEmbodiedEntity->AddAnchor(
"perspective_camera",
413 CVector3(BODY_RADIUS, 0.0, BEACON_ELEVATION),
415 m_pcPerspectiveCameraEquippedEntity =
417 "perspective_camera_0",
419 fPerspCamFocalLength,
433 m_pcBatteryEquippedEntity->Init(
GetNode(t_tree,
"battery"));
439 m_pcControllableEntity->Init(
GetNode(t_tree,
"controller"));