bool MutationDelGoal::operator()( Decomposition & decompo ) { if( decompo.size() <= 1 ) { return false; } else { #ifndef NDEBUG eo::log << eo::debug << "D"; eo::log.flush(); eo::log << eo::xdebug << " DelGoal:" << std::endl << "\tBefore: "; simplePrint( eo::log << eo::xdebug, decompo ); #endif unsigned int i = rng.random( std::min( static_cast<unsigned int>(decompo.size()), static_cast<unsigned int>(decompo.last_reached() + 1) ) ); decompo.erase( decompo.iter_at( i ) ); #ifndef NDEBUG eo::log << eo::xdebug << "\tdelete the " << i << "th goal" << std::endl; eo::log << eo::xdebug << "\tAfter: "; simplePrint( eo::log << eo::xdebug, decompo ); #endif return true; } }
int motion_init(void){ int ret = 1; Wire.begin(I2C_MASTER, 0x00, I2C_PINS_18_19, I2C_PULLUP_EXT, I2C_RATE_400); while(ret){ if(MPU6050_Test_I2C()){simplePrint("MPU is alive\n");} Setup_MPU6050(); delay(10); ret = MPU6050_Check_Registers(); } return(ret); }
void testAssignment() { BinTree<int> t; t.add(10,"").add(12,"L").add(14,"R").add(15,"LR"); simplePrint(t); BinTree<int> t1; t1 = t; assert (t1.member(10) && t1.member (12) && t1.member (14) && t1.member (15)); }
void Setup_MPU6050(){ simplePrint("Setup\n"); //Sets sample rate to 1000/1+1 = 500Hz LDByteWriteI2C(MPU6050_ADDRESS, MPU6050_RA_SMPLRT_DIV, 0x01); //Disable FSync, 48Hz DLPF LDByteWriteI2C(MPU6050_ADDRESS, MPU6050_RA_CONFIG, 0x03); //Disable gyro self tests, scale of 500 degrees/s LDByteWriteI2C(MPU6050_ADDRESS, MPU6050_RA_GYRO_CONFIG, 0b00001000); //Disable accel self tests, scale of +-4g, no DHPF LDByteWriteI2C(MPU6050_ADDRESS, MPU6050_RA_ACCEL_CONFIG, 0b00001000); //Freefall threshold of <|0mg| LDByteWriteI2C(MPU6050_ADDRESS, MPU6050_RA_FF_THR, 0x00); //Freefall duration limit of 0 LDByteWriteI2C(MPU6050_ADDRESS, MPU6050_RA_FF_DUR, 0x00); //Motion threshold of >0mg LDByteWriteI2C(MPU6050_ADDRESS, MPU6050_RA_MOT_THR, 0x00); //Motion duration of >0s LDByteWriteI2C(MPU6050_ADDRESS, MPU6050_RA_MOT_DUR, 0x00); //Zero motion threshold LDByteWriteI2C(MPU6050_ADDRESS, MPU6050_RA_ZRMOT_THR, 0x00); //Zero motion duration threshold LDByteWriteI2C(MPU6050_ADDRESS, MPU6050_RA_ZRMOT_DUR, 0x00); //Disable sensor output to FIFO buffer LDByteWriteI2C(MPU6050_ADDRESS, MPU6050_RA_FIFO_EN, 0x00); //AUX I2C setup //Sets AUX I2C to single master control, plus other config LDByteWriteI2C(MPU6050_ADDRESS, MPU6050_RA_I2C_MST_CTRL, 0x00); //Setup AUX I2C slaves LDByteWriteI2C(MPU6050_ADDRESS, MPU6050_RA_I2C_SLV0_ADDR, 0x00); LDByteWriteI2C(MPU6050_ADDRESS, MPU6050_RA_I2C_SLV0_REG, 0x00); LDByteWriteI2C(MPU6050_ADDRESS, MPU6050_RA_I2C_SLV0_CTRL, 0x00); LDByteWriteI2C(MPU6050_ADDRESS, MPU6050_RA_I2C_SLV1_ADDR, 0x00); LDByteWriteI2C(MPU6050_ADDRESS, MPU6050_RA_I2C_SLV1_REG, 0x00); LDByteWriteI2C(MPU6050_ADDRESS, MPU6050_RA_I2C_SLV1_CTRL, 0x00); LDByteWriteI2C(MPU6050_ADDRESS, MPU6050_RA_I2C_SLV2_ADDR, 0x00); LDByteWriteI2C(MPU6050_ADDRESS, MPU6050_RA_I2C_SLV2_REG, 0x00); LDByteWriteI2C(MPU6050_ADDRESS, MPU6050_RA_I2C_SLV2_CTRL, 0x00); LDByteWriteI2C(MPU6050_ADDRESS, MPU6050_RA_I2C_SLV3_ADDR, 0x00); LDByteWriteI2C(MPU6050_ADDRESS, MPU6050_RA_I2C_SLV3_REG, 0x00); LDByteWriteI2C(MPU6050_ADDRESS, MPU6050_RA_I2C_SLV3_CTRL, 0x00); LDByteWriteI2C(MPU6050_ADDRESS, MPU6050_RA_I2C_SLV4_ADDR, 0x00); LDByteWriteI2C(MPU6050_ADDRESS, MPU6050_RA_I2C_SLV4_REG, 0x00); LDByteWriteI2C(MPU6050_ADDRESS, MPU6050_RA_I2C_SLV4_DO, 0x00); LDByteWriteI2C(MPU6050_ADDRESS, MPU6050_RA_I2C_SLV4_CTRL, 0x00); LDByteWriteI2C(MPU6050_ADDRESS, MPU6050_RA_I2C_SLV4_DI, 0x00); //MPU6050_RA_I2C_MST_STATUS //Read-only //Setup INT pin and AUX I2C pass through LDByteWriteI2C(MPU6050_ADDRESS, MPU6050_RA_INT_PIN_CFG, 0x00); //Enable data ready interrupt LDByteWriteI2C(MPU6050_ADDRESS, MPU6050_RA_INT_ENABLE, 0x00); //MPU6050_RA_DMP_INT_STATUS //Read-only //MPU6050_RA_INT_STATUS 3A //Read-only //MPU6050_RA_ACCEL_XOUT_H //Read-only //MPU6050_RA_ACCEL_XOUT_L //Read-only //MPU6050_RA_ACCEL_YOUT_H //Read-only //MPU6050_RA_ACCEL_YOUT_L //Read-only //MPU6050_RA_ACCEL_ZOUT_H //Read-only //MPU6050_RA_ACCEL_ZOUT_L //Read-only //MPU6050_RA_TEMP_OUT_H //Read-only //MPU6050_RA_TEMP_OUT_L //Read-only //MPU6050_RA_GYRO_XOUT_H //Read-only //MPU6050_RA_GYRO_XOUT_L //Read-only //MPU6050_RA_GYRO_YOUT_H //Read-only //MPU6050_RA_GYRO_YOUT_L //Read-only //MPU6050_RA_GYRO_ZOUT_H //Read-only //MPU6050_RA_GYRO_ZOUT_L //Read-only //MPU6050_RA_EXT_SENS_DATA_00 //Read-only //MPU6050_RA_EXT_SENS_DATA_01 //Read-only //MPU6050_RA_EXT_SENS_DATA_02 //Read-only //MPU6050_RA_EXT_SENS_DATA_03 //Read-only //MPU6050_RA_EXT_SENS_DATA_04 //Read-only //MPU6050_RA_EXT_SENS_DATA_05 //Read-only //MPU6050_RA_EXT_SENS_DATA_06 //Read-only //MPU6050_RA_EXT_SENS_DATA_07 //Read-only //MPU6050_RA_EXT_SENS_DATA_08 //Read-only //MPU6050_RA_EXT_SENS_DATA_09 //Read-only //MPU6050_RA_EXT_SENS_DATA_10 //Read-only //MPU6050_RA_EXT_SENS_DATA_11 //Read-only //MPU6050_RA_EXT_SENS_DATA_12 //Read-only //MPU6050_RA_EXT_SENS_DATA_13 //Read-only //MPU6050_RA_EXT_SENS_DATA_14 //Read-only //MPU6050_RA_EXT_SENS_DATA_15 //Read-only //MPU6050_RA_EXT_SENS_DATA_16 //Read-only //MPU6050_RA_EXT_SENS_DATA_17 //Read-only //MPU6050_RA_EXT_SENS_DATA_18 //Read-only //MPU6050_RA_EXT_SENS_DATA_19 //Read-only //MPU6050_RA_EXT_SENS_DATA_20 //Read-only //MPU6050_RA_EXT_SENS_DATA_21 //Read-only //MPU6050_RA_EXT_SENS_DATA_22 //Read-only //MPU6050_RA_EXT_SENS_DATA_23 //Read-only //MPU6050_RA_MOT_DETECT_STATUS //Read-only //Slave out, dont care LDByteWriteI2C(MPU6050_ADDRESS, MPU6050_RA_I2C_SLV0_DO, 0x00); LDByteWriteI2C(MPU6050_ADDRESS, MPU6050_RA_I2C_SLV1_DO, 0x00); LDByteWriteI2C(MPU6050_ADDRESS, MPU6050_RA_I2C_SLV2_DO, 0x00); LDByteWriteI2C(MPU6050_ADDRESS, MPU6050_RA_I2C_SLV3_DO, 0x00); //More slave config LDByteWriteI2C(MPU6050_ADDRESS, MPU6050_RA_I2C_MST_DELAY_CTRL, 0x00); //Reset sensor signal paths LDByteWriteI2C(MPU6050_ADDRESS, MPU6050_RA_SIGNAL_PATH_RESET, 0x00); //Motion detection control LDByteWriteI2C(MPU6050_ADDRESS, MPU6050_RA_MOT_DETECT_CTRL, 0x00); //Disables FIFO, AUX I2C, FIFO and I2C reset bits to 0 LDByteWriteI2C(MPU6050_ADDRESS, MPU6050_RA_USER_CTRL, 0x00); //Sets clock source to gyro reference w/ PLL LDByteWriteI2C(MPU6050_ADDRESS, MPU6050_RA_PWR_MGMT_1, 0b00000010); //Controls frequency of wakeups in accel low power mode plus the sensor standby modes LDByteWriteI2C(MPU6050_ADDRESS, MPU6050_RA_PWR_MGMT_2, 0x00); //MPU6050_RA_BANK_SEL //Not in datasheet //MPU6050_RA_MEM_START_ADDR //Not in datasheet //MPU6050_RA_MEM_R_W //Not in datasheet //MPU6050_RA_DMP_CFG_1 //Not in datasheet //MPU6050_RA_DMP_CFG_2 //Not in datasheet //MPU6050_RA_FIFO_COUNTH //Read-only //MPU6050_RA_FIFO_COUNTL //Read-only //Data transfer to and from the FIFO buffer LDByteWriteI2C(MPU6050_ADDRESS, MPU6050_RA_FIFO_R_W, 0x00); //MPU6050_RA_WHO_AM_I //Read-only, I2C address }
void motion_calibrate(void){ Calibrate_Gyros(); simplePrint("Gyros calibrated\n"); }