Skip to content

Commit 3debaf5

Browse files
Shokmancaguero
authored andcommitted
Add clock message support (#2)
* Add clock message support * Add rosgraph_msgs dependency * Fix tests from merge * Add methods to headers convert and builtin
1 parent 45ba7b2 commit 3debaf5

13 files changed

+171
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ service calls.Its support is limited to only the following message types:
1919
| geometry_msgs/PoseStamped | ignition::msgs::Pose |
2020
| geometry_msgs/Transform | ignition::msgs::Pose |
2121
| geometry_msgs/TransformStamped | ignition::msgs::Pose |
22+
| rosgraph_msgs/Clock | ignition::msgs::Clock |
2223
| sensor_msgs/Imu | ignition::msgs::IMU |
2324
| sensor_msgs/Image | ignition::msgs::Image |
2425
| sensor_msgs/LaserScan | ignition::msgs::LaserScan |

include/ros1_ign_bridge/builtin_interfaces_factories.hpp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
#include <geometry_msgs/Transform.h>
2424
#include <geometry_msgs/TransformStamped.h>
2525
#include <geometry_msgs/Vector3.h>
26+
#include <rosgraph_msgs/Clock.h>
2627
#include <sensor_msgs/FluidPressure.h>
2728
#include <sensor_msgs/Image.h>
2829
#include <sensor_msgs/Imu.h>
@@ -91,6 +92,25 @@ Factory<
9192
const ignition::msgs::StringMsg & ign_msg,
9293
std_msgs::String & ros1_msg);
9394

95+
// rosgraph_msgs
96+
template<>
97+
void
98+
Factory<
99+
rosgraph_msgs::Clock,
100+
ignition::msgs::Clock
101+
>::convert_1_to_ign(
102+
const rosgraph_msgs::Clock & ros1_msg,
103+
ignition::msgs::Clock & ign_msg);
104+
105+
template<>
106+
void
107+
Factory<
108+
rosgraph_msgs::Clock,
109+
ignition::msgs::Clock
110+
>::convert_ign_to_1(
111+
const ignition::msgs::Clock & ign_msg,
112+
rosgraph_msgs::Clock & ros1_msg);
113+
94114
// geometry_msgs
95115
template<>
96116
void

include/ros1_ign_bridge/convert_builtin_interfaces.hpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
#include <geometry_msgs/Pose.h>
2222
#include <geometry_msgs/PoseStamped.h>
2323
#include <geometry_msgs/Vector3.h>
24+
#include <rosgraph_msgs/Clock.h>
2425
#include <geometry_msgs/Transform.h>
2526
#include <geometry_msgs/TransformStamped.h>
2627
#include <sensor_msgs/FluidPressure.h>
@@ -65,6 +66,19 @@ convert_ign_to_1(
6566
const ignition::msgs::StringMsg & ign_msg,
6667
std_msgs::String & ros1_msg);
6768

69+
// rosgraph_msgs
70+
template<>
71+
void
72+
convert_ign_to_1(
73+
const ignition::msgs::Clock & ign_msg,
74+
rosgraph_msgs::Clock & ros1_msg);
75+
76+
template<>
77+
void
78+
convert_1_to_ign(
79+
const rosgraph_msgs::Clock & ros1_msg,
80+
ignition::msgs::Clock & ign_msg);
81+
6882
// geometry_msgs
6983
template<>
7084
void

package.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
<buildtool_depend>catkin</buildtool_depend>
99

1010
<depend>geometry_msgs</depend>
11+
<depend>rosgraph_msgs</depend>
1112
<depend>roscpp</depend>
1213
<depend>sensor_msgs</depend>
1314
<depend>std_msgs</depend>

src/builtin_interfaces_factories.cpp

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,17 @@ get_factory_builtin_interfaces(
6161
>
6262
>("geometry_msgs/Quaternion", ign_type_name);
6363
}
64+
if (
65+
(ros1_type_name == "rosgraph_msgs/Clock" || ros1_type_name == "") &&
66+
ign_type_name == "ignition.msgs.Clock")
67+
{
68+
return std::make_shared<
69+
Factory<
70+
rosgraph_msgs::Clock,
71+
ignition::msgs::Clock
72+
>
73+
>("rosgraph_msgs/Clock", ign_type_name);
74+
}
6475
if (
6576
(ros1_type_name == "geometry_msgs/Vector3" || ros1_type_name == "") &&
6677
ign_type_name == "ignition.msgs.Vector3d")
@@ -259,6 +270,31 @@ Factory<
259270
ros1_ign_bridge::convert_ign_to_1(ign_msg, ros1_msg);
260271
}
261272

273+
// rosgraph_msgs
274+
template<>
275+
void
276+
Factory<
277+
rosgraph_msgs::Clock,
278+
ignition::msgs::Clock
279+
>::convert_1_to_ign(
280+
const rosgraph_msgs::Clock & ros1_msg,
281+
ignition::msgs::Clock & ign_msg)
282+
{
283+
ros1_ign_bridge::convert_1_to_ign(ros1_msg, ign_msg);
284+
}
285+
286+
template<>
287+
void
288+
Factory<
289+
rosgraph_msgs::Clock,
290+
ignition::msgs::Clock
291+
>::convert_ign_to_1(
292+
const ignition::msgs::Clock & ign_msg,
293+
rosgraph_msgs::Clock & ros1_msg)
294+
{
295+
ros1_ign_bridge::convert_ign_to_1(ign_msg, ros1_msg);
296+
}
297+
262298
// geometry_msgs
263299
template<>
264300
void

src/convert_builtin_interfaces.cpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,25 @@ convert_ign_to_1(
8585
ros1_msg.data = ign_msg.data();
8686
}
8787

88+
template<>
89+
void
90+
convert_ign_to_1(
91+
const ignition::msgs::Clock & ign_msg,
92+
rosgraph_msgs::Clock & ros1_msg)
93+
{
94+
ros1_msg.clock = ros::Time(ign_msg.sim().sec(), ign_msg.sim().nsec());
95+
}
96+
97+
template<>
98+
void
99+
convert_1_to_ign(
100+
const rosgraph_msgs::Clock & ros1_msg,
101+
ignition::msgs::Clock & ign_msg)
102+
{
103+
ign_msg.mutable_sim()->set_sec(ros1_msg.clock.sec);
104+
ign_msg.mutable_sim()->set_nsec(ros1_msg.clock.nsec);
105+
}
106+
88107
template<>
89108
void
90109
convert_1_to_ign(

test/launch/test_ign_subscriber.launch

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
/string@std_msgs/String@ignition.msgs.StringMsg
88
/quaternion@geometry_msgs/Quaternion@ignition.msgs.Quaternion
99
/vector3@geometry_msgs/Vector3@ignition.msgs.Vector3d
10+
/clock@rosgraph_msgs/Clock@ignition.msgs.Clock
1011
/point@geometry_msgs/Point@ignition.msgs.Vector3d
1112
/pose@geometry_msgs/Pose@ignition.msgs.Pose
1213
/pose_stamped@geometry_msgs/PoseStamped@ignition.msgs.Pose

test/launch/test_ros1_subscriber.launch

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
/string@std_msgs/String@ignition.msgs.StringMsg
88
/quaternion@geometry_msgs/Quaternion@ignition.msgs.Quaternion
99
/vector3@geometry_msgs/Vector3@ignition.msgs.Vector3d
10+
/clock@rosgraph_msgs/Clock@ignition.msgs.Clock
1011
/point@geometry_msgs/Point@ignition.msgs.Vector3d
1112
/pose@geometry_msgs/Pose@ignition.msgs.Pose
1213
/pose_stamped@geometry_msgs/PoseStamped@ignition.msgs.Pose

test/publishers/ign_publisher.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,11 @@ int main(int /*argc*/, char **/*argv*/)
6969
ignition::msgs::Vector3d vector3_msg;
7070
ros1_ign_bridge::testing::createTestMsg(vector3_msg);
7171

72+
// ignition::msgs::Clock.
73+
auto clock_pub = node.Advertise<ignition::msgs::Clock>("clock");
74+
ignition::msgs::Clock clock_msg;
75+
ros1_ign_bridge::testing::createTestMsg(clock_msg);
76+
7277
// ignition::msgs::Point.
7378
auto point_pub = node.Advertise<ignition::msgs::Vector3d>("point");
7479
ignition::msgs::Vector3d point_msg;
@@ -123,6 +128,7 @@ int main(int /*argc*/, char **/*argv*/)
123128
string_pub.Publish(string_msg);
124129
quaternion_pub.Publish(quaternion_msg);
125130
vector3_pub.Publish(vector3_msg);
131+
clock_pub.Publish(clock_msg);
126132
point_pub.Publish(point_msg);
127133
pose_pub.Publish(pose_msg);
128134
pose_stamped_pub.Publish(pose_stamped_msg);

test/publishers/ros1_publisher.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
#include <std_msgs/String.h>
2020
#include <geometry_msgs/Quaternion.h>
2121
#include <geometry_msgs/Vector3.h>
22+
#include <rosgraph_msgs/Clock.h>
2223
#include <geometry_msgs/Pose.h>
2324
#include <geometry_msgs/PoseStamped.h>
2425
#include <geometry_msgs/Transform.h>
@@ -58,6 +59,12 @@ int main(int argc, char ** argv)
5859
geometry_msgs::Vector3 vector3_msg;
5960
ros1_ign_bridge::testing::createTestMsg(vector3_msg);
6061

62+
// sensor_msgs::Clock.
63+
ros::Publisher clock_pub =
64+
n.advertise<rosgraph_msgs::Clock>("clock", 1000);
65+
rosgraph_msgs::Clock clock_msg;
66+
ros1_ign_bridge::testing::createTestMsg(clock_msg);
67+
6168
// geometry_msgs::Point.
6269
ros::Publisher point_pub =
6370
n.advertise<geometry_msgs::Point>("point", 1000);
@@ -119,6 +126,7 @@ int main(int argc, char ** argv)
119126
string_pub.publish(string_msg);
120127
quaternion_pub.publish(quaternion_msg);
121128
vector3_pub.publish(vector3_msg);
129+
clock_pub.publish(clock_msg);
122130
point_pub.publish(point_msg);
123131
pose_pub.publish(pose_msg);
124132
pose_stamped_pub.publish(pose_stamped_msg);

0 commit comments

Comments
 (0)