Question: help with python program Real world data problem: You were just hired by a large tech company which involves satellite navigation using Inertial Measurement Units




Real world data problem: You were just hired by a large tech company which involves satellite navigation using Inertial Measurement Units (IMU). An IMU consists of a 3 axis accelerometer and a 3 axis gyroscope. For example 3dm-g5-10 datasheet 84000095_rev_L.pdf But of course, that is a commercial IMU that you can buy off the shelf, your company makes much more precise devices to meet the needs of precision applications. Your job is to receive the raw IMU data and calculate and plot the position, orientation and velocity of the satellite as a function of time. The "Pose" consists of 6 dimension positions: - 3 linear: x,y,z in meters - 3 angular: roll, pitch, yaw in radians The "Twist" consists of 6 dimension velocities: - 3 linear: vx,vy,vz in m/s - 3 angular: v_roll, v_pitch, v_yaw radians/sec The axis are defined as: - x forward - y left - zup - roll = rotation about x axis - pitch = rotation about y axis - yaw = rotation about z axis The IMU produces analog voltages corresponding to the linear acceleration in x,y,z and the angular velocities in roll, pitch and yaw. The data is converted to a digital ADC value which must be scaled to real value floats using a calibration table. The calibration table is given as a json file. The data from the IMU comes in samples with an associated timestamp and the 6 measured values. Inputs: - IMU calibration data - Filename "cal.json" - all values are floats - data is a JSON file dictionary - "a_x_scale" "a_y_scale" "a_z_scale" "v_roll_scale" "v_pitch_scale" "v_yaw_scale" - for accelerations: a_x=ADC_value*a_x_scale [m/s2] - for gyros: v_roll=ADC_value a_roll*scale [rad/sec] - IMU data in comma separated format: - Filename "imu.csv" ,
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
