diff --git a/quad/src/quad_app/debug_level_readme.txt b/quad/src/quad_app/debug_level_readme.txt deleted file mode 100644 index 49e181c720a7ee1b6df3ea750f345bfe334c83b8..0000000000000000000000000000000000000000 --- a/quad/src/quad_app/debug_level_readme.txt +++ /dev/null @@ -1,101 +0,0 @@ - -DEBUG LEVEL ONE - -// Sensor blocks - int cur_pitch; - int cur_roll; - int cur_yaw; - int gyro_y; - int gyro_x; - int gyro_z; - int lidar; - int flow_vel_x; // optical flow - int flow_vel_y; - int flow_vel_x_filt; - int flow_vel_y_filt; - int flow_quality; // Quality value returned by optical flow sensor - int flow_distance; - -// Sensor processing - int yaw_correction; - int of_angle_corr; // Corrects for the optical flow mounting angle - int of_integ_x; // Integrates the optical flow data - int of_integ_y; - int of_trim_x; // Trim value for optical flow integrated value - int of_trim_y; - int of_trimmed_x; // Trimmed optical flow integrated value (of_integ_x + of_trim_x) - int of_trimmed_y; - - -DEBUG LEVEL TWO - -// PID blocks - int roll_pid; - int pitch_pid; - int yaw_pid; - int roll_r_pid; - int pitch_r_pid; - int yaw_r_pid; - int x_pos_pid; - int y_pos_pid; - int alt_pid; - -DEBUG LEVEL THREE - -// Velocity nodes - int x_vel_pid; - int y_vel_pid; - int x_vel; - int y_vel; - int x_vel_clamp; - int y_vel_clamp; - int vel_x_gain; - int vel_y_gain; - - // VRPN blocks - int vrpn_x; - int vrpn_y; - int vrpn_alt; - int vrpn_pitch, vrpn_roll; - - // RC blocks - int rc_pitch; - int rc_roll; - int rc_yaw; - int rc_throttle; - - // Desired positions - int x_set; - int y_set; - int alt_set; - int yaw_set; - -DEBUG LEVEL FOUR - - - // Clamps - int clamp_d_pwmP; - int clamp_d_pwmR; - int clamp_d_pwmY; - int yaw_clamp; - // Loop times - int angle_time; - int pos_time; - - // Signal mixer - int mixer; - int throttle_trim; - int throttle_trim_add; - int pitch_trim; - int pitch_trim_add; - int yaw_trim; - int yaw_trim_add; - - //psi dot integration chain - int psi_dot; - int psi_dot_offset; - int psi_dot_sum; - int psi; - int psi_offset; - int psi_sum; - int mag_yaw; //Complementary filtered magnetometer/gyro yaw diff --git a/quad/src/quad_app/debug_rt.c b/quad/src/quad_app/debug_rt.c deleted file mode 100644 index 147a65e9999c4a26e01a927f32ead6701cba7c6c..0000000000000000000000000000000000000000 --- a/quad/src/quad_app/debug_rt.c +++ /dev/null @@ -1,257 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <stdarg.h> - -#include "debug_rt.h" - - - -/* - Helper to return single bit of u32 data. This returns the "position"'th bit of the given u32, - assuming it is Zero indexed. -*/ -u32 read_bit(u32 data, int position){ - return (data >> position) & 1; -} - -/* - This method is used to configure the bits within the flags struct by reading in the data sent from the user via the groundstation. - - Params: - configData: Payload from configuration packet sent from the groundstation. Each bit (starting at 31, downto 10) represents a flag either being disabled (0) or enabled (1) - - SensorRTFlags_t * flags: This contains a pointer to the flags struct. This struct is held within the quad's memory and is used to determine which information within the quad's sensors - will be sent back during each control loop. Due to the limited bandwidth capacity of the UART, it is undesirable to have a large amount of these flags enabled - when sending data. - Returns: - int size: Total number of data types desired to be displayed via flight data tool. -*/ -int process_configuration_packet(u32 configData, SensorRTFlags_t * flags) -{ - int size = 0; - flags -> lidarflags -> quadHeight = read_bit(configData, 31); size += read_bit(configData, 31); - flags -> optflowflags -> x_flow = read_bit(configData, 30); size += 2 * read_bit(configData, 30); - flags -> optflowflags -> y_flow = read_bit(configData, 29); size += 2 * read_bit(configData, 29); - flags -> optflowflags -> x_filter = read_bit(configData, 28); size += 2 * read_bit(configData, 28); - flags -> optflowflags -> y_filter = read_bit(configData, 27); size += 2 * read_bit(configData, 27); - flags -> optflowflags -> x_velocity = read_bit(configData, 26); size += 2 * read_bit(configData, 26); - flags -> optflowflags -> y_velocity = read_bit(configData, 25); size += 2 * read_bit(configData, 25); - flags -> imuflags -> gyro_x = read_bit(configData, 24); size += read_bit(configData, 24); - flags -> imuflags -> gyro_y = read_bit(configData, 23); size += read_bit(configData, 23); - flags -> imuflags -> gyro_z = read_bit(configData, 22); size += read_bit(configData, 22); - flags -> imuflags -> acc_x = read_bit(configData, 21); size += read_bit(configData, 21); - flags -> imuflags -> acc_y = read_bit(configData, 20); size += read_bit(configData, 20); - flags -> imuflags -> acc_z = read_bit(configData, 19); size += read_bit(configData, 19); - flags -> imuflags -> mag_x = read_bit(configData, 18); size += read_bit(configData, 18); - flags -> imuflags -> mag_y = read_bit(configData, 17); size += read_bit(configData, 17); - flags -> imuflags -> mag_z = read_bit(configData, 16); size += read_bit(configData, 16); - flags -> errorflags -> lidar = read_bit(configData, 15); size += read_bit(configData, 15); - flags -> errorflags -> consec_lidar = read_bit(configData, 14); size += read_bit(configData, 14); - flags -> errorflags -> optFlow = read_bit(configData, 13); size += read_bit(configData, 13); - flags -> errorflags -> consec_optFlow = read_bit(configData, 12); size += read_bit(configData, 12); - flags -> errorflags -> imu = read_bit(configData, 11); size += read_bit(configData, 11); - flags -> errorflags -> consec_imu = read_bit(configData, 10); size += read_bit(configData, 10); - flags -> flag_count = size; - return size; -} - -/* - This method populates a payload full of sensor data and transmits it to the groundstation (for real-time data logging feature) - - Params: - CommDriver *comm: This contains a pointer to the communication medium currently being used to communicate with the groundstation. In its current state, this will be - the UART capabilities located on the quad. - - raw_sensor_t * data: This contains a pointer to the struct containing all of the current sensor data that has been collected by the various peripherals on the quad. This - will be used to populate the majority of the information within the payload packet. - - SensorRTFlags_t * flags: This contains a pointer to the flags struct. This struct is held within the quad's memory and is used to determine which information within the sensors - will be sent back during each control loop. Due to the limited bandwidth capacity of the UART, it is undesirable to have a large amount of these flags - enabled when sending data. The exact contents of the flags struct are detailed in the process_configuration_packet method as well as the struct definition - within this file's header. - - Returns: - bytes_sent: Total number of bytes that were transferred via the communication channel (UART). This number can be used to determine the succesful transfer of data. -*/ -int send_RT_data(struct CommDriver *comm, raw_sensor_t * data, SensorRTFlags_t * flags) -{ - //include 4 bytes to carry flags info - u32 * payload = malloc(sizeof(u32) * (flags -> flag_count) + 4); - int currentPosition = 0; - u32 flag_info = 0x00000000; - /* - Since payload is calloced (all zeros), a simple | operation should set this properly - */ - if(flags -> lidarflags -> quadHeight) - { - payload[currentPosition] = (u32)(data -> lidar.distance_m); - currentPosition++; - //populate correct bit within flag_info. Due to the fact that enabled flags are stored only on the quad's memory, this information will need to be sent to the groundstation with every - //packet to ensure the correct formatting of data before being graphed. - flag_info |= QUAD_HEIGHT_FLAG; - } - //64-bit data must be sent in two concurrent 32 bit data blocks within the payload. The MSB's of the data are stored first, then the LSB's. - if(flags -> optflowflags -> x_flow) - { - payload[currentPosition] = ((u64)(data -> optical_flow.flow_x_rad)) >> 32; //MSB - currentPosition++; - payload[currentPosition] = ((u64)(data -> optical_flow.flow_x_rad)) & 0x00000000FFFFFFFF; //LSB - currentPosition++; - flag_info |= X_FLOW_FLAG; - } - - if(flags -> optflowflags -> y_flow) - { - payload[currentPosition] = ((u64)(data -> optical_flow.flow_y_rad)) >> 32; //MSB - currentPosition++; - payload[currentPosition] = ((u64)(data -> optical_flow.flow_y_rad)) & 0x00000000FFFFFFFF; //LSB - currentPosition++; - flag_info |= Y_FLOW_FLAG; - } - - if(flags -> optflowflags -> x_filter) - { - payload[currentPosition] = ((u64)(data -> optical_flow.xVelFilt)) >> 32; //MSB - currentPosition++; - payload[currentPosition] = ((u64)(data -> optical_flow.xVelFilt)) & 0x00000000FFFFFFFF; //LSB - currentPosition++; - flag_info |= X_FILTER_FLAG; - } - - if(flags -> optflowflags -> y_filter) - { - payload[currentPosition] = ((u64)(data -> optical_flow.yVelFilt)) >> 32; //MSB - currentPosition++; - payload[currentPosition] = ((u64)(data -> optical_flow.yVelFilt)) & 0x00000000FFFFFFFF; //LSB - currentPosition++; - flag_info |= Y_FILTER_FLAG; - } - if(flags -> optflowflags -> x_velocity) - { - payload[currentPosition] = ((u64)(data -> optical_flow.xVel)) >> 32; //MSB - currentPosition++; - payload[currentPosition] = ((u64)(data -> optical_flow.xVel)) & 0x00000000FFFFFFFF; //LSB - currentPosition++; - flag_info |= X_VELOCITY_FLAG; - } - - if(flags -> optflowflags -> y_velocity) - { - payload[currentPosition] = ((u64)(data -> optical_flow.yVel)) >> 32; //MSB - currentPosition++; - payload[currentPosition] = ((u64)(data -> optical_flow.yVel)) & 0x00000000FFFFFFFF; //LSB - currentPosition++; - flag_info |= Y_VELOCITY_FLAG; - } - - if(flags -> imuflags -> gyro_x) - { - payload[currentPosition] = (u32)(data -> gam.gyro_xVel_p); - currentPosition++; - flag_info |= X_GYRO_FLAG; - } - - if(flags -> imuflags -> gyro_y) - { - payload[currentPosition] = (u32)(data -> gam.gyro_yVel_q); - currentPosition++; - flag_info |= Y_GYRO_FLAG; - } - - if(flags -> imuflags -> gyro_z) - { - payload[currentPosition] = (u32)(data -> gam.gyro_zVel_r); - currentPosition++; - flag_info |= Z_GYRO_FLAG; - } - - if(flags -> imuflags -> acc_x) - { - payload[currentPosition] = (u32)(data -> gam.accel_x); - currentPosition++; - flag_info |= X_ACCEL_FLAG; - } - - if(flags -> imuflags -> acc_y) - { - payload[currentPosition] = (u32)(data -> gam.accel_y); - currentPosition++; - flag_info |= Y_ACCEL_FLAG; - } - - if(flags -> imuflags -> acc_z) - { - payload[currentPosition] = (u32)(data -> gam.accel_z); - currentPosition++; - flag_info |= Z_ACCEL_FLAG; - } - - if(flags -> imuflags -> mag_x) - { - payload[currentPosition] = (u32)(data -> gam.mag_x); - currentPosition++; - flag_info |= X_MAG_FLAG; - } - - if(flags -> imuflags -> mag_y) - { - payload[currentPosition] = (u32)(data -> gam.mag_y); - currentPosition++; - flag_info |= Y_MAG_FLAG; - } - - if(flags -> imuflags -> mag_z) - { - payload[currentPosition] = (u32)(data -> gam.mag_z); - currentPosition++; - flag_info |= Z_MAG_FLAG; - } - - if(flags -> errorflags -> lidar) - { - payload[currentPosition] = (u32)(data -> lidar.error.errorCount); - currentPosition++; - flag_info |= LIDAR_ERR_FLAG; - } - - if(flags -> errorflags -> consec_lidar) - { - payload[currentPosition] = (u32)(data -> lidar.error.consErrorCount); - currentPosition++; - flag_info |= LIDAR_CONSEC_ERR_FLAG; - } - - if(flags -> errorflags -> optFlow) - { - payload[currentPosition] = (u32)(data -> optical_flow.error.errorCount); - currentPosition++; - flag_info |= OPTFL_ERR_FLAG; - } - - if(flags -> errorflags -> consec_optFlow) - { - payload[currentPosition] = (u32)(data -> optical_flow.error.consErrorCount); - currentPosition++; - flag_info |= OPTFL_CONSEC_ERR_FLAG; - } - - if(flags -> errorflags -> imu) - { - payload[currentPosition] = (u32)(data -> gam.error.errorCount); - currentPosition++; - flag_info |= IMU_ERR_FLAG; - } - - if(flags -> errorflags -> consec_imu) - { - payload[currentPosition] = (u32)(data -> gam.error.consErrorCount); - currentPosition++; - flag_info |= IMU_CONSEC_ERR_FLAG; - } - //package the last 4 bytes of info as binary representation of the enabled flags - payload[currentPosition] = flag_info; - int bytes_sent = send_data(comm->uart, SEND_RT_ID, 0, (u8*)payload, sizeof(payload)); - free(payload); - return bytes_sent; -} diff --git a/quad/src/quad_app/debug_rt.h b/quad/src/quad_app/debug_rt.h deleted file mode 100644 index 22afae72ed78e79e8a98d8b4095bd26dd874e0f3..0000000000000000000000000000000000000000 --- a/quad/src/quad_app/debug_rt.h +++ /dev/null @@ -1,45 +0,0 @@ -#include <stdio.h> - -#include "PID.h" -#include "type_def.h" -#include "communication.h" -#include "computation_graph.h" -#include "timer.h" - -#define ON 1 -#define OFF 0 -#define ERROR -1 - -#define SEND_RT_ID 20 - -#define QUAD_HEIGHT_FLAG 0x80000000 -#define X_FLOW_FLAG 0x40000000 -#define Y_FLOW_FLAG 0x20000000 -#define X_FILTER_FLAG 0x10000000 -#define Y_FILTER_FLAG 0x08000000 -#define X_VELOCITY_FLAG 0x04000000 -#define Y_VELOCITY_FLAG 0x02000000 -#define X_GYRO_FLAG 0x01000000 -#define Y_GYRO_FLAG 0x00800000 -#define Z_GYRO_FLAG 0x00400000 -#define X_ACCEL_FLAG 0x00200000 -#define Y_ACCEL_FLAG 0x00100000 -#define Z_ACCEL_FLAG 0x00080000 -#define X_MAG_FLAG 0x00040000 -#define Y_MAG_FLAG 0x00020000 -#define Z_MAG_FLAG 0x00010000 -#define LIDAR_ERR_FLAG 0x00008000 -#define LIDAR_CONSEC_ERR_FLAG 0x00004000 -#define OPTFL_ERR_FLAG 0x00002000 -#define OPTFL_CONSEC_ERR_FLAG 0x00001000 -#define IMU_ERR_FLAG 0x00000800 -#define IMU_CONSEC_ERR_FLAG 0x00000400 - -void initializeFlags( SensorRTFlags_t * flag_pointer); - -void freeFlags(SensorRTFlags_t * flags); - -int send_RT_data(struct CommDriver *comm, raw_sensor_t * data, SensorRTFlags_t * flags); - -u32 shift(u32 data, int position); -