16
16
*/
17
17
18
18
#include < mutex>
19
+ #include < ostream>
20
+ #include < string>
19
21
20
22
#include < gz/msgs/boolean.pb.h>
21
23
#include < gz/msgs/image.pb.h>
32
34
#include < gz/rendering/BoundingBoxCamera.hh>
33
35
#include < gz/transport/Node.hh>
34
36
#include < gz/transport/Publisher.hh>
37
+ #include < gz/transport/TopicUtils.hh>
35
38
36
39
#include " gz/sensors/BoundingBoxCameraSensor.hh"
37
40
#include " gz/sensors/RenderingEvents.hh"
@@ -88,15 +91,6 @@ class gz::sensors::BoundingBoxCameraSensorPrivate
88
91
// / \brief Just a mutex for thread safety
89
92
public: std::mutex mutex;
90
93
91
- // / \brief True if camera is triggered by a topic
92
- public: bool isTriggeredCamera{false };
93
-
94
- // / \brief True if camera has been triggered by a topic
95
- public: bool isTriggered{false };
96
-
97
- // / \brief Topic for camera trigger
98
- public: std::string triggerTopic{" " };
99
-
100
94
// / \brief BoundingBoxes type
101
95
public: rendering::BoundingBoxType type
102
96
{rendering::BoundingBoxType::BBT_VISIBLEBOX2D};
@@ -231,30 +225,13 @@ bool BoundingBoxCameraSensor::Load(const sdf::Sensor &_sdf)
231
225
232
226
if (_sdf.CameraSensor ()->Triggered ())
233
227
{
234
- if (!_sdf.CameraSensor ()->TriggerTopic ().empty ())
235
- {
236
- this ->dataPtr ->triggerTopic = _sdf.CameraSensor ()->TriggerTopic ();
237
- }
238
- else
228
+ std::string triggerTopic = _sdf.CameraSensor ()->TriggerTopic ();
229
+ if (triggerTopic.empty ())
239
230
{
240
- this ->dataPtr ->triggerTopic =
241
- transport::TopicUtils::AsValidTopic (
242
- this ->Topic () + " /trigger" );
243
-
244
- if (this ->dataPtr ->triggerTopic .empty ())
245
- {
246
- gzerr << " Invalid trigger topic name [" <<
247
- this ->dataPtr ->triggerTopic << " ]" << std::endl;
248
- return false ;
249
- }
231
+ triggerTopic = transport::TopicUtils::AsValidTopic (this ->Topic () +
232
+ " /trigger" );
250
233
}
251
-
252
- this ->dataPtr ->node .Subscribe (this ->dataPtr ->triggerTopic ,
253
- &BoundingBoxCameraSensor::OnTrigger, this );
254
-
255
- gzdbg << " Camera trigger messages for [" << this ->Name () << " ] subscribed"
256
- << " on [" << this ->dataPtr ->triggerTopic << " ]" << std::endl;
257
- this ->dataPtr ->isTriggeredCamera = true ;
234
+ this ->SetTriggered (true , triggerTopic);
258
235
}
259
236
260
237
if (!this ->AdvertiseInfo ())
@@ -303,9 +280,6 @@ bool BoundingBoxCameraSensor::CreateCamera()
303
280
return false ;
304
281
}
305
282
306
- // Camera Info Msg
307
- this ->PopulateInfo (sdfCamera);
308
-
309
283
if (!this ->dataPtr ->rgbCamera )
310
284
{
311
285
// Create rendering camera
@@ -356,6 +330,14 @@ bool BoundingBoxCameraSensor::CreateCamera()
356
330
this ->AddSensor (this ->dataPtr ->boundingboxCamera );
357
331
this ->AddSensor (this ->dataPtr ->rgbCamera );
358
332
333
+ this ->UpdateLensIntrinsicsAndProjection (this ->dataPtr ->rgbCamera ,
334
+ *sdfCamera);
335
+ this ->UpdateLensIntrinsicsAndProjection (this ->dataPtr ->boundingboxCamera ,
336
+ *sdfCamera);
337
+
338
+ // Camera Info Msg
339
+ this ->PopulateInfo (sdfCamera);
340
+
359
341
// Create the directory to store frames
360
342
if (sdfCamera->SaveFrames ())
361
343
{
@@ -430,16 +412,6 @@ bool BoundingBoxCameraSensor::Update(
430
412
this ->PublishInfo (_now);
431
413
}
432
414
433
- // render only if necessary
434
- {
435
- std::lock_guard<std::mutex> lock (this ->dataPtr ->mutex );
436
- if (this ->dataPtr ->isTriggeredCamera &&
437
- !this ->dataPtr ->isTriggered )
438
- {
439
- return true ;
440
- }
441
- }
442
-
443
415
// don't render if there are no subscribers nor saving
444
416
if (!this ->dataPtr ->imagePublisher .HasConnections () &&
445
417
!this ->dataPtr ->boxesPublisher .HasConnections () &&
@@ -578,11 +550,6 @@ bool BoundingBoxCameraSensor::Update(
578
550
++this ->dataPtr ->saveCounter ;
579
551
}
580
552
581
- if (this ->dataPtr ->isTriggeredCamera )
582
- {
583
- return this ->dataPtr ->isTriggered = false ;
584
- }
585
-
586
553
return true ;
587
554
}
588
555
@@ -598,13 +565,6 @@ unsigned int BoundingBoxCameraSensor::ImageWidth() const
598
565
return this ->dataPtr ->rgbCamera ->ImageWidth ();
599
566
}
600
567
601
- // ////////////////////////////////////////////////
602
- void BoundingBoxCameraSensor::OnTrigger (const gz::msgs::Boolean &/* _msg*/ )
603
- {
604
- std::lock_guard<std::mutex> lock (this ->dataPtr ->mutex );
605
- this ->dataPtr ->isTriggered = true ;
606
- }
607
-
608
568
// ////////////////////////////////////////////////
609
569
void BoundingBoxCameraSensorPrivate::SaveImage ()
610
570
{
0 commit comments