4 from gazebo_msgs.srv
import SetModelState
5 from gazebo_msgs.msg
import ModelState, ModelStates
6 from tf.transformations
import quaternion_from_euler
11 from track
import track, Point
16 state.model_name =
"racer" 17 state.pose.position.x = position.x
18 state.pose.position.y = position.y
19 state.pose.position.z = 0
21 q = quaternion_from_euler(orientation, math.pi, 0)
22 state.pose.orientation.x = q[0]
23 state.pose.orientation.z = q[1]
24 state.pose.orientation.w = q[2]
25 state.pose.orientation.y = q[3]
30 def reset(progress=0, angle=0, offset_from_center=0, forward=True):
31 position = track.get_position(progress * track.length, offset_from_center)
32 angle += position.angle
38 def reset_random(max_angle=0, max_offset_from_center=0, forward=True):
39 reset(random.random(), (random.random() * 2 - 1) * max_angle,
40 (random.random() * 2 - 1) * max_offset_from_center, forward)
43 set_model_state =
None 47 global set_model_state
48 rospy.wait_for_service(
'/gazebo/set_model_state')
49 set_model_state = rospy.ServiceProxy(
50 '/gazebo/set_model_state', SetModelState)
53 if __name__ ==
"__main__":
54 rospy.init_node(
"reset_car")