@@ -48,7 +48,8 @@ sdf::ElementPtr cameraToBadSdf()
4848
4949sdf::ElementPtr CameraToSdf (const std::string &_type,
5050 const std::string &_name, double _updateRate,
51- const std::string &_topic, bool _alwaysOn, bool _visualize)
51+ const std::string &_topic, const std::string &_cameraInfoTopic,
52+ bool _alwaysOn, bool _visualize)
5253{
5354 std::ostringstream stream;
5455 stream
@@ -62,6 +63,8 @@ sdf::ElementPtr CameraToSdf(const std::string &_type,
6263 << " <always_on>" << _alwaysOn <<" </always_on>"
6364 << " <visualize>" << _visualize << " </visualize>"
6465 << " <camera>"
66+ << " <camera_info_topic>" << _cameraInfoTopic
67+ << " </camera_info_topic>"
6568 << " <horizontal_fov>.75</horizontal_fov>"
6669 << " <image>"
6770 << " <width>640</width>"
@@ -146,8 +149,8 @@ TEST(Camera_TEST, CreateCamera)
146149{
147150 gz::sensors::Manager mgr;
148151
149- sdf::ElementPtr camSdf = CameraToSdf (" camera" , " my_camera" , 60.0 , " /cam " ,
150- true , true );
152+ sdf::ElementPtr camSdf = CameraToSdf (" camera" , " my_camera" , 60.0 ,
153+ " /cam " , " my_camera/camera_info " , true , true );
151154
152155 // Create a CameraSensor
153156 gz::sensors::CameraSensor *cam =
@@ -158,7 +161,7 @@ TEST(Camera_TEST, CreateCamera)
158161
159162 // Check topics
160163 EXPECT_EQ (" /cam" , cam->Topic ());
161- EXPECT_EQ (" /camera_info" , cam->InfoTopic ());
164+ EXPECT_EQ (" my_camera /camera_info" , cam->InfoTopic ());
162165
163166 // however camera is not loaded because a rendering scene is missing so
164167 // updates will not be successful and image size will be 0
@@ -190,32 +193,35 @@ TEST(Camera_TEST, Topic)
190193 // Default topic
191194 {
192195 const std::string topic;
193- auto cameraSdf = CameraToSdf (type, name, updateRate, topic, alwaysOn,
194- visualize);
196+ const std::string cameraInfoTopic;
197+ auto cameraSdf = CameraToSdf (type, name, updateRate, topic, cameraInfoTopic,
198+ alwaysOn, visualize);
195199
196200 auto camera = mgr.CreateSensor <ignition::sensors::CameraSensor>(cameraSdf);
197201 ASSERT_NE (nullptr , camera);
198202 EXPECT_NE (gz::sensors::NO_SENSOR, camera->Id ());
199203 EXPECT_EQ (" /camera" , camera->Topic ());
204+ EXPECT_EQ (" /camera_info" , camera->InfoTopic ());
200205 }
201206
202207 // Convert to valid topic
203208 {
204209 const std::string topic = " /topic with spaces/@~characters//" ;
205- auto cameraSdf = CameraToSdf (type, name, updateRate, topic, alwaysOn,
210+ auto cameraSdf = CameraToSdf (type, name, updateRate, topic, " " , alwaysOn,
206211 visualize);
207212
208213 auto camera = mgr.CreateSensor <ignition::sensors::CameraSensor>(cameraSdf);
209214 ASSERT_NE (nullptr , camera);
210215 EXPECT_NE (gz::sensors::NO_SENSOR, camera->Id ());
211216
212217 EXPECT_EQ (" /topic_with_spaces/characters" , camera->Topic ());
218+ EXPECT_EQ (" /topic_with_spaces/camera_info" , camera->InfoTopic ());
213219 }
214220
215221 // Invalid topic
216222 {
217223 const std::string topic = " @@@" ;
218- auto cameraSdf = CameraToSdf (type, name, updateRate, topic, alwaysOn,
224+ auto cameraSdf = CameraToSdf (type, name, updateRate, topic, " " , alwaysOn,
219225 visualize);
220226
221227 auto sensor = mgr.CreateSensor <gz::sensors::CameraSensor>(cameraSdf);
0 commit comments