@@ -72,6 +72,7 @@ class NoisyTransformPublisher(Node):
7272 "wrong_velocity_frame" , False
7373 ).bool_value
7474 self ._start_from_origin = self ._get_param ("start_from_origin" , True ).bool_value
75+ self ._add_noise = self ._get_param ("add_noise" , True ).bool_value
7576 self ._parent_frame = self ._get_param ("parent_frame" , "odom" ).string_value
7677 self ._child_frame = self ._get_param ("child_frame" , "base_link" ).string_value
7778 self ._br = tf2_ros .TransformBroadcaster (self )
@@ -124,9 +125,12 @@ class NoisyTransformPublisher(Node):
124125 updated_odom .header = cur_gt_odom .header
125126
126127 prev_pose = _mat_from_pose (prev_noisy_odom .pose .pose )
127- noisy_trans = np .random .normal (scale = self ._xyz_std_dev )
128- noisy_rot = [0 , 0 , np .random .normal (scale = self ._yaw_std_dev )]
129- updated_pose = prev_pose @ pose_delta @ Exp (noisy_trans , noisy_rot )
128+ updated_pose = prev_pose @ pose_delta
129+ if self ._add_noise :
130+ noisy_trans = np .random .normal (scale = self ._xyz_std_dev )
131+ noisy_rot = [0 , 0 , np .random .normal (scale = self ._yaw_std_dev )]
132+ updated_pose @= Exp (noisy_trans , noisy_rot )
133+
130134 updated_odom .pose .pose .position .x = updated_pose [0 , 3 ]
131135 updated_odom .pose .pose .position .y = updated_pose [1 , 3 ]
132136 updated_odom .pose .pose .position .z = updated_pose [2 , 3 ]
@@ -166,10 +170,13 @@ class NoisyTransformPublisher(Node):
166170
167171def main (args = None ):
168172 rclpy .init ()
169- node = NoisyTransformPublisher ()
170- rclpy .spin (node )
171- node .destroy_node ()
172- rclpy .shutdown ()
173+ try :
174+ node = NoisyTransformPublisher ()
175+ rclpy .spin (node )
176+ except KeyboardInterrupt :
177+ pass
178+ finally :
179+ rclpy .try_shutdown ()
173180
174181
175182if __name__ == "__main__" :
0 commit comments