execute_trajectory.py
Go to the documentation of this file.
1 #!/usr/bin/env python
2 
3 import argparse
4 import rospy
5 import tf_conversions
6 from crazyflie_driver.msg import FullState
7 import geometry_msgs
8 import uav_trajectory
9 
10 
11 if __name__ == '__main__':
12  parser = argparse.ArgumentParser()
13  parser.add_argument("trajectory", type=str, help="CSV file containing trajectory")
14  args = parser.parse_args()
15 
16  rospy.init_node('full_state')
17 
19  traj.loadcsv(args.trajectory)
20 
21  rate = rospy.Rate(100)
22 
23  msg = FullState()
24  msg.header.seq = 0
25  msg.header.stamp = rospy.Time.now()
26  msg.header.frame_id = "/world"
27 
28  pub = rospy.Publisher("/crazyflie/cmd_full_state", FullState, queue_size=1)
29  start_time = rospy.Time.now()
30 
31  while not rospy.is_shutdown():
32  msg.header.seq += 1
33  msg.header.stamp = rospy.Time.now()
34  t = (msg.header.stamp - start_time).to_sec()
35  print(t)
36  if t > traj.duration:
37  break
38  # t = traj.duration
39 
40  e = traj.eval(t)
41 
42  msg.pose.position.x = e.pos[0]
43  msg.pose.position.y = e.pos[1]
44  msg.pose.position.z = e.pos[2]
45  msg.twist.linear.x = e.vel[0]
46  msg.twist.linear.y = e.vel[1]
47  msg.twist.linear.z = e.vel[2]
48  msg.acc.x = e.acc[0]
49  msg.acc.y = e.acc[1]
50  msg.acc.z = e.acc[2]
51  msg.pose.orientation = geometry_msgs.msg.Quaternion(*tf_conversions.transformations.quaternion_from_euler(0, 0, e.yaw))
52  msg.twist.angular.x = e.omega[0]
53  msg.twist.angular.y = e.omega[1]
54  msg.twist.angular.z = e.omega[2]
55 
56  pub.publish(msg)
57  rate.sleep()


crazyflie_demo
Author(s): Wolfgang Hoenig
autogenerated on Mon Sep 28 2020 03:40:12