config changes
This commit is contained in:
		
							parent
							
								
									fefcd6e44f
								
							
						
					
					
						commit
						28a6d087d7
					
				@ -17,4 +17,5 @@ message Config {
 | 
			
		||||
  float drive_power = 2;
 | 
			
		||||
  PidParams angle_pid = 3;
 | 
			
		||||
  float min_flip_pitch = 4;
 | 
			
		||||
  float mag_declination = 5;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										26
									
								
								main/ugv.cc
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								main/ugv.cc
									
									
									
									
									
								
							@ -46,6 +46,8 @@ config::Config UGV::DefaultConfig() {
 | 
			
		||||
 | 
			
		||||
  c.set_min_target_dist(10.0);
 | 
			
		||||
  c.set_min_flip_pitch(90.0);
 | 
			
		||||
  c.set_drive_power(0.3);
 | 
			
		||||
  c.set_mag_declination(11.5);
 | 
			
		||||
  return c;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -82,6 +84,15 @@ void UGV::UpdateAHRS() {
 | 
			
		||||
  io::Vec3f &g = inputs_.mpu.gyro_rate, &a = inputs_.mpu.accel,
 | 
			
		||||
            &m = inputs_.mpu.mag;
 | 
			
		||||
  ahrs_.update(g.x, g.y, g.z, a.x, a.y, a.z, m.x, m.y, m.z);
 | 
			
		||||
  yaw_ = ahrs_.getYaw() + conf_.mag_declination();
 | 
			
		||||
  while (yaw_ > 360.) {
 | 
			
		||||
    yaw_ -= 360.;
 | 
			
		||||
  }
 | 
			
		||||
  while (yaw_ < 0.) {
 | 
			
		||||
    yaw_ += 360.;
 | 
			
		||||
  }
 | 
			
		||||
  pitch_ = ahrs_.getPitch();
 | 
			
		||||
  roll_ = ahrs_.getRoll();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void UGV::DoDebugPrint() {
 | 
			
		||||
@ -89,16 +100,16 @@ void UGV::DoDebugPrint() {
 | 
			
		||||
  ESP_LOGD(TAG, "inputs: acc=(%f, %f, %f) gyro=(%f, %f, %f) mag=(%f, %f, %f)",
 | 
			
		||||
           mpu.accel.x, mpu.accel.y, mpu.accel.z, mpu.gyro_rate.x,
 | 
			
		||||
           mpu.gyro_rate.y, mpu.gyro_rate.z, mpu.mag.x, mpu.mag.y, mpu.mag.z);
 | 
			
		||||
  //ESP_LOGD(TAG, "ahrs: yaw=%f, pitch=%f, roll=%f", ahrs_.getYaw(),
 | 
			
		||||
  //         ahrs_.getPitch(), ahrs_.getRoll());
 | 
			
		||||
  ESP_LOGD(TAG, "ahrs: yaw=%f, pitch=%f, roll=%f", yaw_, pitch_, roll_);
 | 
			
		||||
  ESP_LOGD(TAG, "target angle: %f", angle_controller_.Setpoint());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void UGV::ReadComms() {
 | 
			
		||||
  comms->Lock();
 | 
			
		||||
  UpdateLocationFromGPS(*(comms->status.mutable_location()), inputs_.gps);
 | 
			
		||||
  comms->status.set_yaw_angle(ahrs_.getYaw());
 | 
			
		||||
  comms->status.set_pitch_angle(ahrs_.getPitch());
 | 
			
		||||
  comms->status.set_roll_angle(ahrs_.getRoll());
 | 
			
		||||
  comms->status.set_yaw_angle(yaw_);
 | 
			
		||||
  comms->status.set_pitch_angle(pitch_);
 | 
			
		||||
  comms->status.set_roll_angle(roll_);
 | 
			
		||||
  UGV_State comms_ugv_state = comms->status.state();
 | 
			
		||||
  if (comms_ugv_state != current_state_) {
 | 
			
		||||
    ESP_LOGI(TAG, "Comms updated UGV state to %d", comms_ugv_state);
 | 
			
		||||
@ -135,12 +146,12 @@ void UGV::OnTick() {
 | 
			
		||||
  ReadComms();
 | 
			
		||||
  next_state_ = current_state_;
 | 
			
		||||
 | 
			
		||||
  angle_controller_.Input(ahrs_.getYaw());
 | 
			
		||||
  angle_controller_.Input(yaw_);
 | 
			
		||||
  float drive_power    = 0.;
 | 
			
		||||
  outputs_.left_motor  = 0.0;
 | 
			
		||||
  outputs_.right_motor = 0.0;
 | 
			
		||||
 | 
			
		||||
  float pitch          = ahrs_.getRoll(); // TODO: fix quaternion -> YPR
 | 
			
		||||
  float pitch          = roll_; // TODO: fix quaternion -> YPR
 | 
			
		||||
  auto  min_flip_pitch = conf_.min_flip_pitch();
 | 
			
		||||
  bool  is_upside_down = (pitch > min_flip_pitch) || (pitch < -min_flip_pitch);
 | 
			
		||||
 | 
			
		||||
@ -217,6 +228,7 @@ void UGV::OnTick() {
 | 
			
		||||
      float tgt_bearing = current_pos.bearing_toward(target_);
 | 
			
		||||
      angle_controller_.Enable();
 | 
			
		||||
      angle_controller_.Setpoint(tgt_bearing);
 | 
			
		||||
      drive_power = conf_.drive_power();
 | 
			
		||||
      break;
 | 
			
		||||
    }
 | 
			
		||||
    case UGV_State::STATE_TEST:
 | 
			
		||||
 | 
			
		||||
@ -43,6 +43,9 @@ class UGV {
 | 
			
		||||
  int64_t     last_print_;
 | 
			
		||||
  UGV_State   current_state_;
 | 
			
		||||
  UGV_State   next_state_;
 | 
			
		||||
  float       yaw_;
 | 
			
		||||
  float       pitch_;
 | 
			
		||||
  float       roll_;
 | 
			
		||||
 | 
			
		||||
  void UpdateAHRS();
 | 
			
		||||
  void DoDebugPrint();
 | 
			
		||||
 | 
			
		||||
@ -1,10 +1,12 @@
 | 
			
		||||
REVISION: 1
 | 
			
		||||
angle_pid:
 | 
			
		||||
  kp: 0.10
 | 
			
		||||
  ki: 0.0
 | 
			
		||||
  ki: 0.0001
 | 
			
		||||
  kd: 0.4
 | 
			
		||||
  max_output: 0.5
 | 
			
		||||
  max_i_error: 15.0
 | 
			
		||||
 | 
			
		||||
min_target_dist: 10.0
 | 
			
		||||
min_flip_pitch: 90.0
 | 
			
		||||
drive_power: 0.3
 | 
			
		||||
mag_declination: 11.5
 | 
			
		||||
 | 
			
		||||
@ -20,7 +20,7 @@ DESCRIPTOR = _descriptor.FileDescriptor(
 | 
			
		||||
  package='ugv.config',
 | 
			
		||||
  syntax='proto3',
 | 
			
		||||
  serialized_options=_b('H\003'),
 | 
			
		||||
  serialized_pb=_b('\n\x0c\x63onfig.proto\x12\nugv.config\"X\n\tPidParams\x12\n\n\x02kp\x18\x01 \x01(\x02\x12\n\n\x02ki\x18\x02 \x01(\x02\x12\n\n\x02kd\x18\x03 \x01(\x02\x12\x12\n\nmax_output\x18\x04 \x01(\x02\x12\x13\n\x0bmax_i_error\x18\x05 \x01(\x02\"x\n\x06\x43onfig\x12\x17\n\x0fmin_target_dist\x18\x01 \x01(\x02\x12\x13\n\x0b\x64rive_power\x18\x02 \x01(\x02\x12(\n\tangle_pid\x18\x03 \x01(\x0b\x32\x15.ugv.config.PidParams\x12\x16\n\x0emin_flip_pitch\x18\x04 \x01(\x02\x42\x02H\x03\x62\x06proto3')
 | 
			
		||||
  serialized_pb=_b('\n\x0c\x63onfig.proto\x12\nugv.config\"X\n\tPidParams\x12\n\n\x02kp\x18\x01 \x01(\x02\x12\n\n\x02ki\x18\x02 \x01(\x02\x12\n\n\x02kd\x18\x03 \x01(\x02\x12\x12\n\nmax_output\x18\x04 \x01(\x02\x12\x13\n\x0bmax_i_error\x18\x05 \x01(\x02\"\x91\x01\n\x06\x43onfig\x12\x17\n\x0fmin_target_dist\x18\x01 \x01(\x02\x12\x13\n\x0b\x64rive_power\x18\x02 \x01(\x02\x12(\n\tangle_pid\x18\x03 \x01(\x0b\x32\x15.ugv.config.PidParams\x12\x16\n\x0emin_flip_pitch\x18\x04 \x01(\x02\x12\x17\n\x0fmag_declination\x18\x05 \x01(\x02\x42\x02H\x03\x62\x06proto3')
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -120,6 +120,13 @@ _CONFIG = _descriptor.Descriptor(
 | 
			
		||||
      message_type=None, enum_type=None, containing_type=None,
 | 
			
		||||
      is_extension=False, extension_scope=None,
 | 
			
		||||
      serialized_options=None, file=DESCRIPTOR),
 | 
			
		||||
    _descriptor.FieldDescriptor(
 | 
			
		||||
      name='mag_declination', full_name='ugv.config.Config.mag_declination', index=4,
 | 
			
		||||
      number=5, type=2, cpp_type=6, label=1,
 | 
			
		||||
      has_default_value=False, default_value=float(0),
 | 
			
		||||
      message_type=None, enum_type=None, containing_type=None,
 | 
			
		||||
      is_extension=False, extension_scope=None,
 | 
			
		||||
      serialized_options=None, file=DESCRIPTOR),
 | 
			
		||||
  ],
 | 
			
		||||
  extensions=[
 | 
			
		||||
  ],
 | 
			
		||||
@ -132,8 +139,8 @@ _CONFIG = _descriptor.Descriptor(
 | 
			
		||||
  extension_ranges=[],
 | 
			
		||||
  oneofs=[
 | 
			
		||||
  ],
 | 
			
		||||
  serialized_start=118,
 | 
			
		||||
  serialized_end=238,
 | 
			
		||||
  serialized_start=119,
 | 
			
		||||
  serialized_end=264,
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
_CONFIG.fields_by_name['angle_pid'].message_type = _PIDPARAMS
 | 
			
		||||
 | 
			
		||||
@ -34,11 +34,14 @@ class UGV_CLI:
 | 
			
		||||
            'q': self.exit,
 | 
			
		||||
            'disable': self.disable,
 | 
			
		||||
            'd': self.disable,
 | 
			
		||||
            'target': self.set_target,
 | 
			
		||||
            'config': self.set_config,
 | 
			
		||||
            'c': self.set_config,
 | 
			
		||||
            'set_target': self.set_target,
 | 
			
		||||
            'st': self.set_target,
 | 
			
		||||
            'set_config': self.set_config,
 | 
			
		||||
            'sc': self.set_config,
 | 
			
		||||
            'drive_heading': self.drive_heading,
 | 
			
		||||
            'dh': self.drive_heading,
 | 
			
		||||
            'drive_to_target': self.drive_to_target,
 | 
			
		||||
            'dt': self.drive_to_target,
 | 
			
		||||
            'get_status': self.get_status,
 | 
			
		||||
            's': self.get_status,
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user