Project

General

Profile

uavatt component

Ports

uav_input (in)

Data structure
  • struct ::or_uav::input uav_input

    • struct ::or::time::ts ts

      • long sec

      • long nsec

    • boolean intrinsic

    • optional< struct ::or::rb3d::force > thrust

      • double x

      • double y

      • double z

    • optional< struct ::or::t3d::att > att

      • double qw

      • double qx

      • double qy

      • double qz

    • optional< struct ::or::t3d::avel > avel

      • double wx

      • double wy

      • double wz

    • optional< struct ::or::t3d::aacc > aacc

      • double awx

      • double awy

      • double awz

Attitude/thrust control input.


wrench_measure (out)

Data structure
  • struct ::or_wrench_estimator::state wrench_measure

    • struct ::or::time::ts ts

      • long sec

      • long nsec

    • boolean intrinsic

    • optional< struct ::or::rb3d::force > force

      • double x

      • double y

      • double z

    • optional< struct ::or::rb3d::force_cov > force_cov

      • double cov[6]

    • optional< struct ::or::rb3d::torque > torque

      • double x

      • double y

      • double z

    • optional< struct ::or::rb3d::torque_cov > torque_cov

      • double cov[6]

Provides current wrench measurements.

This port contains the current wrench exerted by the UAV according to the propeller measurements and the geometric model.


rotor_input (out)

Data structure
  • struct ::or_rotorcraft::input rotor_input

    • struct ::or::time::ts ts

      • long sec

      • long nsec

    • enum ::or_rotorcraft::control_type control ∈ { velocity, throttle }

    • sequence< double, 8 > desired


rotor_measure (in)

Data structure
  • struct ::or_rotorcraft::output rotor_measure

    • sequence< struct ::or_rotorcraft::rotor_state, 8 > rotor

      • struct ::or::time::ts ts

        • long sec

        • long nsec

      • boolean emerg

      • boolean spinning

      • boolean starting

      • boolean disabled

      • double velocity

      • double throttle

      • double consumption

      • double energy_level


state (in)

Data structure
  • struct ::or_pose_estimator::state state

    • struct ::or::time::ts ts

      • long sec

      • long nsec

    • boolean intrinsic

    • optional< struct ::or::t3d::pos > pos

      • double x

      • double y

      • double z

    • optional< struct ::or::t3d::att > att

      • double qw

      • double qx

      • double qy

      • double qz

    • optional< struct ::or::t3d::vel > vel

      • double vx

      • double vy

      • double vz

    • optional< struct ::or::t3d::avel > avel

      • double wx

      • double wy

      • double wz

    • optional< struct ::or::t3d::acc > acc

      • double ax

      • double ay

      • double az

    • optional< struct ::or::t3d::aacc > aacc

      • double awx

      • double awy

      • double awz

    • optional< struct ::or::t3d::pos_cov > pos_cov

      • double cov[6]

    • optional< struct ::or::t3d::att_cov > att_cov

      • double cov[10]

    • optional< struct ::or::t3d::att_pos_cov > att_pos_cov

      • double cov[12]

    • optional< struct ::or::t3d::vel_cov > vel_cov

      • double cov[6]

    • optional< struct ::or::t3d::avel_cov > avel_cov

      • double cov[6]

    • optional< struct ::or::t3d::acc_cov > acc_cov

      • double cov[6]

    • optional< struct ::or::t3d::aacc_cov > aacc_cov

      • double cov[6]


Services

set_mass (attribute)

Inputs
  • double mass


set_geom (attribute)

Inputs
  • double mass Mass (kg)

  • double G[48] Mapping from propellers velocity² to wrench

Set mass and allocation matrix

This is a generic function for setting the geometric parameters of the controlled robot. See set_gtmrp_geom (function) for a specialized function for tilted multi rotors robots.


set_gtmrp_geom (function)

Inputs
  • unsigned short rotors (default "4") Number of rotors

  • double cx (default "0") X position of center of rotors wrt center of mass (m)

  • double cy (default "0") Y position of center of rotors wrt center of mass (m)

  • double cz (default "0") Z position of center of rotors wrt center of mass (m)

  • double armlen (default "0.23") Distance of rotors to the center (m)

  • double mass (default "1") Total mass (kg)

  • double rx (default "0") X rotation of the first rotor thrust vector (deg)

  • double ry (default "0") Y rotation of the first rotor thrust vector (deg)

  • short rz (default "-1") Z spin direction of the first rotor (1: ccw, -1: cw)

  • double cf (default "0.00065") Propeller thrust coefficient (N.s²)

  • double ct (default "1e-05") Propeller torque coefficient (N.m.s²)

Throws
  • exception ::uavatt::e_inval

    • string<128> what

Compute allocation matrix and inertia tensor for tilt rotors robots.

Generically Tilted Multi-Rotor Platforms (GTMRP) are made of a set of rotors evenly distributed in a horizontal plane. The rotors are tilted around an axis lying in the plane, all by the same angle but with alternating signs on the X axis. The spinning direction is also alternating.

This function is a specialization of the more generic set_geom (attribute).


set_saturation_weights (attribute)

Inputs
  • struct ::uavatt::ids::servo_s::satweight_s satweight

    • double thrust (default "10") Relative weight for thrust saturation

    • double lateral

    • double tilt (default "5") Relative weight for roll and pitch saturation

    • double head (default "1") Relative weight for heading saturation

Select relative priority for thrust, titlting and heading.

When the controller reaches the physical wrench limits of the platform (see set_wlimit (attribute)), an optimisation algorithm finds the closest feasible wrench that keeps the same thurst direction as well as the same roll and pitch torque direction.

The weights specified here allow to give higher priority to certain components of the wrench and let them be less affected by the optimization algorithm. Higher weight means that the corresponding component is less likely to change in intensity.


set_control_mode (attribute)

Inputs
  • enum ::uavatt::attitude_control_mode att_mode (default "::uavatt::tilt_prioritized") Attitude tracking control law ∈ { full_attitude, tilt_prioritized }

Select attitude tracking control law.

With tilt_prioritized, attitude error is split into a reduced attitude error, which describes the misalignment of the thrust direction, and a yaw error, which describes the heading orientation error. This is the default.

With full_attitude, a conventional controller, based on the full attitude error, is used.


set_wlimit (attribute)

Inputs
  • double wmin Minimum propeller velocity

  • double wmax Maximum propeller velocity


set_servo_gain (attribute)

Inputs
  • struct ::uavatt::ids::servo_s::gain_s gain

    • double Kqxy

    • double Kqz

    • double Kwxy

    • double Kwz


set_emerg (attribute)

Inputs
  • struct ::uavatt::ids::servo_s::emerg_s emerg

    • double dq (default "5") Attitude uncertainty threshold (deg)

    • double dw (default "20") Angular velocity uncertainty threshold (deg/s)

Set thresholds for emergency hovering.

dq and dw represent the maximum uncertainty tolerated in the input state (in) for attitude (dq) and angular velocity (dw), measured as 3 times the standard deviation. By default, dq is 5⁰ and dw 20⁰/s. Beyond that threshold, an emergency hovering is started.

The emergency hovering uses no feedback, as the state is considered invalid. Thus, stability is not guaranteed …​


get_servo_parameters (attribute)

Outputs
  • struct ::uavatt::ids::servo_s servo

    • struct ::uavatt::ids::servo_s::satweight_s satweight

      • double thrust

      • double lateral

      • double tilt

      • double head

    • struct ::uavatt::ids::servo_s::gain_s gain

      • double Kqxy

      • double Kqz

      • double Kwxy

      • double Kwz

    • enum ::uavatt::attitude_control_mode att_mode ∈ { full_attitude, tilt_prioritized }

    • double ramp

    • double scale

    • struct ::uavatt::ids::servo_s::emerg_s emerg

      • double dq

      • double dw


get_geom_parameters (attribute)

Outputs
  • struct ::uavatt::ids::body_s body

    • double G[48]

    • double iG[48]

    • double mass

    • unsigned short rotors

    • double wmin

    • double wmax

    • double wrench_min[6]

    • double wrench_max[6]

    • boolean init


get_reference (attribute)

Outputs
  • struct ::or_uav::input reference

    • struct ::or::time::ts ts

      • long sec

      • long nsec

    • boolean intrinsic

    • optional< struct ::or::rb3d::force > thrust

      • double x

      • double y

      • double z

    • optional< struct ::or::t3d::att > att

      • double qw

      • double qx

      • double qy

      • double qz

    • optional< struct ::or::t3d::avel > avel

      • double wx

      • double wy

      • double wz

    • optional< struct ::or::t3d::aacc > aacc

      • double awx

      • double awy

      • double awz


servo (activity)

Throws
  • exception ::uavatt::e_input

  • exception ::uavatt::e_geom

Context

Track a desired attitude


set_state (function)

Inputs
  • struct ::or::rb3d::force thrust: Thrust

    • double x

    • double y

    • double z

  • struct ::or::t3d::att att: Orientation

    • double qw

    • double qx

    • double qy

    • double qz

  • struct ::or::t3d::avel avel: Angular velocity

    • double wx

    • double wy

    • double wz

  • struct ::or::t3d::aacc aacc: Angular acceleration

    • double awx

    • double awy

    • double awz

Throws
  • exception ::uavatt::e_geom

Context

Set the desired state


stop (function)

Context

Stop tracking a desired attitude


log (function)

Inputs
  • string<64> path (default "/tmp/uavatt.log") Log file name

  • unsigned long decimation (default "1") Reduced logging frequency

Throws
  • exception ::uavatt::e_sys

    • short code

    • string<128> what

Log controller data


log_stop (function)

Stop logging


log_info (function)

Outputs
  • unsigned long miss Missed log entries

  • unsigned long total Total log entries

Show missed log entries


Tasks

main

Context