hanyazou / TelloPy

DJI Tello drone controller python package
Other
687 stars 291 forks source link

Take orientation #11

Closed vtushevskiy closed 5 years ago

vtushevskiy commented 6 years ago

Is there a way to take orientation of drone? For example, I would like to receive compass data. What direction is drone heading?

There is topic about flight data: https://tellopilots.com/threads/has-anyone-decoded-the-log-headers-messages-from-the-tello.511/page-5#post-5411

Did you implement some of additional logs?

hanyazou commented 5 years ago

I added DJI log data parser at 1bea61022c60efe216dcbbdeaf6fa60ee8a22bc0 based on the DJI log structure information at Kragrathea/TelloLib

For now, these 19 values from Tello are hold in Tello object. You can use the values like drone.log_data.imu.acc_x and so on. It is not so difficult to add implementation of additional value handling. But there are any similar values and I don't know which value can be used as orientation.

FromViewer,new_mvo_feedback,29,80,Vel_X,2,short,True,Vel_X = _payload.getShort(2); FromViewer,new_mvo_feedback,29,80,Vel_Y,4,short,True,Vel_Y = _payload.getShort(4); FromViewer,new_mvo_feedback,29,80,Vel_Z,6,short,True,Vel_Z = _payload.getShort(6); FromViewer,new_mvo_feedback,29,80,Pos_X,8,float,True,Pos_X = _payload.getFloat(8); FromViewer,new_mvo_feedback,29,80,Pos_Y,12,float,True,Pos_Y = _payload.getFloat(12); FromViewer,new_mvo_feedback,29,80,Pos_Z,16,float,True,Pos_Z = _payload.getFloat(16);

FromViewer,IMU_ATTI,2048,120,acc_x_00,20,float,True,acc_x_00 = _payload.getFloat(20); FromViewer,IMU_ATTI,2048,120,acc_y_00,24,float,True,acc_y_00 = _payload.getFloat(24); FromViewer,IMU_ATTI,2048,120,acc_z_00,28,float,True,acc_z_00 = _payload.getFloat(28); FromViewer,IMU_ATTI,2048,120,gyro_x_00,32,float,True,gyro_x_00 = _payload.getFloat(32); FromViewer,IMU_ATTI,2048,120,gyro_y_00,36,float,True,gyro_y_00 = _payload.getFloat(36); FromViewer,IMU_ATTI,2048,120,gyro_z_00,40,float,True,gyro_z_00 = _payload.getFloat(40);

FromViewer,IMU_ATTI,2048,120,q0_00,48,float,True,q0_00 = _payload.getFloat(48); FromViewer,IMU_ATTI,2048,120,q1_00,52,float,True,q1_00 = _payload.getFloat(52); FromViewer,IMU_ATTI,2048,120,q2_00,56,float,True,q2_00 = _payload.getFloat(56); FromViewer,IMU_ATTI,2048,120,q3_00,60,float,True,q3_00 = _payload.getFloat(60);

FromViewer,IMU_ATTI,2048,120,vg_x_00,76,float,True,vg_x_00 = _payload.getFloat(76); FromViewer,IMU_ATTI,2048,120,vg_y_00,80,float,True,vg_y_00 = _payload.getFloat(80); FromViewer,IMU_ATTI,2048,120,vg_z_00,84,float,True,vg_z_00 = _payload.getFloat(84);