12 from jsk_footstep_msgs.msg
import Footstep, FootstepArray, ExecFootstepsAction, ExecFootstepsGoal
13 from geometry_msgs.msg
import Pose
19 q = quaternion_from_matrix(mat)
20 p = translation_from_matrix(mat)
22 pose.orientation.x = q[0]
23 pose.orientation.y = q[1]
24 pose.orientation.z = q[2]
25 pose.orientation.w = q[3]
26 pose.position.x = p[0]
27 pose.position.y = p[1]
28 pose.position.z = p[2]
32 return concatenate_matrices(translation_matrix([pose.position.x,
35 quaternion_matrix([pose.orientation.x,
40 return concatenate_matrices(translation_matrix([trans[0],
43 quaternion_matrix([rot[0],
49 pub_footsteps.publish(footstep)
50 goal = ExecFootstepsGoal(footstep=footstep)
51 client.send_goal(goal)
52 client.wait_for_result()
54 def oneFootstep(origin, leg, x=0, y=0, z=0, roll=0, pitch=0, yaw=0):
57 translation = [x, y, z]
58 q = quaternion_from_euler(roll, pitch, yaw)
60 target = concatenate_matrices(origin, offset)
63 msg.dimensions.x = 0.23
64 msg.dimensions.y = 0.13
65 msg.dimensions.z = 0.001
69 tf_listener.waitForTransform(
'lleg_end_coords',
'odom', rospy.Time(0), rospy.Duration(10))
70 (trans, rot) = tf_listener.lookupTransform(
'odom',
'lleg_end_coords', rospy.Time(0))
75 footsteps = FootstepArray()
76 footsteps.footsteps = [
oneFootstep(origin, Footstep.LEFT, 0, 0),
84 footsteps.header.frame_id =
"odom" 85 footsteps.header.stamp = rospy.Time.now()
90 footsteps = FootstepArray()
91 footsteps.footsteps = [
oneFootstep(origin, Footstep.LEFT, 0, 0),
99 footsteps.header.frame_id =
"odom" 100 footsteps.header.stamp = rospy.Time.now()
105 footsteps = FootstepArray()
106 footsteps.footsteps = [
oneFootstep(origin, Footstep.LEFT, 0, 0),
114 footsteps.header.frame_id =
"odom" 115 footsteps.header.stamp = rospy.Time.now()
120 footsteps = FootstepArray()
121 footsteps.footsteps = [
oneFootstep(origin, Footstep.LEFT, 0, 0, 0),
122 oneFootstep(origin, Footstep.RIGHT, 0.2, -0.2, 0.0),
124 oneFootstep(origin, Footstep.RIGHT, 0.6, -0.2, 0.1),
126 oneFootstep(origin, Footstep.RIGHT, 1.0, -0.2, 0.2),
128 oneFootstep(origin, Footstep.RIGHT, 1.2, -0.2, 0.3)]
129 footsteps.header.frame_id =
"odom" 130 footsteps.header.stamp = rospy.Time.now()
135 footsteps = FootstepArray()
136 footsteps.footsteps = [
oneFootstep(origin, Footstep.LEFT, 0, 0, 0),
137 oneFootstep(origin, Footstep.RIGHT, 0.2, -0.2, 0.0),
139 oneFootstep(origin, Footstep.RIGHT, 0.6, -0.2, -0.1),
141 oneFootstep(origin, Footstep.RIGHT, 1.0, -0.2, -0.2),
143 oneFootstep(origin, Footstep.RIGHT, 1.2, -0.2, -0.3)]
144 footsteps.header.frame_id =
"odom" 145 footsteps.header.stamp = rospy.Time.now()
150 footsteps = FootstepArray()
151 footsteps.footsteps = [
oneFootstep(origin, Footstep.LEFT, 0, 0, 0),
152 oneFootstep(origin, Footstep.RIGHT, 0.2, -0.2, 0.0),
153 oneFootstep(origin, Footstep.LEFT, 0.4, 0, 0.1, pitch=-0.2),
154 oneFootstep(origin, Footstep.RIGHT, 0.6, -0.2, 0.1, pitch=-0.2),
155 oneFootstep(origin, Footstep.LEFT, 0.8, 0, 0.2, pitch=-0.2),
156 oneFootstep(origin, Footstep.RIGHT, 1.0, -0.2, 0.2, pitch=-0.2),
157 oneFootstep(origin, Footstep.LEFT, 1.2, 0, 0.3, pitch=0.0),
158 oneFootstep(origin, Footstep.RIGHT, 1.2, -0.2, 0.3, pitch=0.0)]
159 footsteps.header.frame_id =
"odom" 160 footsteps.header.stamp = rospy.Time.now()
165 footsteps = FootstepArray()
166 footsteps.footsteps = [
oneFootstep(origin, Footstep.LEFT, 0, 0, 0),
167 oneFootstep(origin, Footstep.RIGHT, 0.2, -0.2, 0.0),
168 oneFootstep(origin, Footstep.LEFT, 0.4, 0, -0.1, pitch=0.2),
169 oneFootstep(origin, Footstep.RIGHT, 0.6, -0.2, -0.1, pitch=0.2),
170 oneFootstep(origin, Footstep.LEFT, 0.8, 0, -0.2, pitch=0.2),
171 oneFootstep(origin, Footstep.RIGHT, 1.0, -0.2, -0.2, pitch=0.2),
172 oneFootstep(origin, Footstep.LEFT, 1.2, 0, -0.3, pitch=0.0),
173 oneFootstep(origin, Footstep.RIGHT, 1.2, -0.2, -0.3, pitch=0.0)]
174 footsteps.header.frame_id =
"odom" 175 footsteps.header.stamp = rospy.Time.now()
179 if __name__ ==
"__main__":
180 rospy.init_node(
"test_footstep_controller")
183 pub_footsteps = rospy.Publisher(
'footstep', FootstepArray, latch=
True, queue_size=1)
184 rospy.loginfo(
"Waiting for footstep controller")
185 client.wait_for_server()
186 rospy.loginfo(
"Found footstep controller")