:mod:`airsimdroneracinglab.types` ================================= .. py:module:: airsimdroneracinglab.types Module Contents --------------- Classes ~~~~~~~ .. autoapisummary:: airsimdroneracinglab.types.MsgpackMixin airsimdroneracinglab.types.ImageType airsimdroneracinglab.types.DrivetrainType airsimdroneracinglab.types.LandedState airsimdroneracinglab.types.WeatherParameter airsimdroneracinglab.types.Vector3r airsimdroneracinglab.types.Quaternionr airsimdroneracinglab.types.Pose airsimdroneracinglab.types.CollisionInfo airsimdroneracinglab.types.GeoPoint airsimdroneracinglab.types.YawMode airsimdroneracinglab.types.RCData airsimdroneracinglab.types.ImageRequest airsimdroneracinglab.types.ImageResponse airsimdroneracinglab.types.CarControls airsimdroneracinglab.types.KinematicsState airsimdroneracinglab.types.EnvironmentState airsimdroneracinglab.types.CarState airsimdroneracinglab.types.MultirotorState airsimdroneracinglab.types.ProjectionMatrix airsimdroneracinglab.types.CameraInfo airsimdroneracinglab.types.LidarData airsimdroneracinglab.types.ImuData airsimdroneracinglab.types.BarometerData airsimdroneracinglab.types.MagnetometerData airsimdroneracinglab.types.GnssFixType airsimdroneracinglab.types.GnssReport airsimdroneracinglab.types.GpsData airsimdroneracinglab.types.DistanceSensorData airsimdroneracinglab.types.PIDGains airsimdroneracinglab.types.AngleRateControllerGains airsimdroneracinglab.types.AngleLevelControllerGains airsimdroneracinglab.types.VelocityControllerGains airsimdroneracinglab.types.PositionControllerGains airsimdroneracinglab.types.TrajectoryTrackerGains airsimdroneracinglab.types.MeshPositionVertexBuffersResponse .. py:class:: MsgpackMixin .. method:: __repr__(self) :returns: Description :rtype: TYPE .. method:: to_msgpack(self, *args, **kwargs) :param \*args: Description :param \*\*kwargs: Description :returns: Description :rtype: TYPE .. method:: from_msgpack(cls, encoded) :classmethod: :param encoded: Description :type encoded: TYPE :returns: Description :rtype: TYPE .. py:class:: ImageType .. attribute:: DepthPerspective Description :type: int .. attribute:: DepthPlanner Description :type: int .. attribute:: DepthVis Description :type: int .. attribute:: DisparityNormalized Description :type: int .. attribute:: Infrared Description :type: int .. attribute:: Scene Description :type: int .. attribute:: Segmentation Description :type: int .. attribute:: SurfaceNormals Description :type: int .. attribute:: Scene :annotation: = 0 .. attribute:: DepthPlanner :annotation: = 1 .. attribute:: DepthPerspective :annotation: = 2 .. attribute:: DepthVis :annotation: = 3 .. attribute:: DisparityNormalized :annotation: = 4 .. attribute:: Segmentation :annotation: = 5 .. attribute:: SurfaceNormals :annotation: = 6 .. attribute:: Infrared :annotation: = 7 .. py:class:: DrivetrainType Type of DrivetrainType .. attribute:: ForwardOnly Fixes yaw along tangent of velocity vector (atan2(vy, vx)) :type: int .. attribute:: MaxDegreeOfFreedom Description :type: int .. attribute:: MaxDegreeOfFreedom :annotation: = 0 .. attribute:: ForwardOnly :annotation: = 1 .. py:class:: LandedState .. attribute:: Flying Description :type: int .. attribute:: Landed Description :type: int .. attribute:: Landed :annotation: = 0 .. attribute:: Flying :annotation: = 1 .. py:class:: WeatherParameter .. attribute:: Rain :annotation: = 0 .. attribute:: Roadwetness :annotation: = 1 .. attribute:: Snow :annotation: = 2 .. attribute:: RoadSnow :annotation: = 3 .. attribute:: MapleLeaf :annotation: = 4 .. attribute:: RoadLeaf :annotation: = 5 .. attribute:: Dust :annotation: = 6 .. attribute:: Fog :annotation: = 7 .. attribute:: Enabled :annotation: = 8 .. py:class:: Vector3r(x_val=0.0, y_val=0.0, z_val=0.0) Bases: :class:`airsimdroneracinglab.types.MsgpackMixin` .. attribute:: x_val Description :type: float .. attribute:: y_val Description :type: float .. attribute:: z_val Description :type: float .. attribute:: x_val :annotation: = 0.0 .. attribute:: y_val :annotation: = 0.0 .. attribute:: z_val :annotation: = 0.0 .. method:: nanVector3r() :staticmethod: :returns: Description :rtype: TYPE .. method:: __add__(self, other) :param other: Description :type other: TYPE :returns: Description :rtype: TYPE .. method:: __sub__(self, other) :param other: Description :type other: TYPE :returns: Description :rtype: TYPE .. method:: __truediv__(self, other) :param other: Description :type other: TYPE :returns: Description :rtype: TYPE :raises TypeError: Description .. method:: __mul__(self, other) :param other: Description :type other: TYPE :returns: Description :rtype: TYPE :raises TypeError: Description .. method:: dot(self, other) :param other: Description :type other: TYPE :returns: Description :rtype: TYPE :raises TypeError: Description .. method:: cross(self, other) :param other: Description :type other: TYPE :returns: Description :rtype: TYPE :raises TypeError: Description .. method:: get_length(self) :returns: Description :rtype: TYPE .. method:: distance_to(self, other) :param other: Description :type other: TYPE :returns: Description :rtype: TYPE .. method:: to_Quaternionr(self) :returns: Description :rtype: TYPE .. method:: to_numpy_array(self) :returns: Description :rtype: TYPE .. py:class:: Quaternionr(x_val=0.0, y_val=0.0, z_val=0.0, w_val=1.0) Bases: :class:`airsimdroneracinglab.types.MsgpackMixin` .. attribute:: w_val Description :type: float .. attribute:: x_val Description :type: float .. attribute:: y_val Description :type: float .. attribute:: z_val Description :type: float .. attribute:: w_val :annotation: = 0.0 .. attribute:: x_val :annotation: = 0.0 .. attribute:: y_val :annotation: = 0.0 .. attribute:: z_val :annotation: = 0.0 .. method:: nanQuaternionr() :staticmethod: :returns: Description :rtype: TYPE .. method:: __add__(self, other) :param other: Description :type other: TYPE :returns: Description :rtype: TYPE :raises TypeError: Description .. method:: __mul__(self, other) :param other: Description :type other: TYPE :returns: Description :rtype: TYPE :raises TypeError: Description .. method:: __truediv__(self, other) :param other: Description :type other: TYPE :returns: Description :rtype: TYPE :raises TypeError: Description .. method:: dot(self, other) :param other: Description :type other: TYPE :returns: Description :rtype: TYPE :raises TypeError: Description .. method:: cross(self, other) :param other: Description :type other: TYPE :returns: Description :rtype: TYPE :raises TypeError: Description .. method:: outer_product(self, other) :param other: Description :type other: TYPE :returns: Description :rtype: TYPE :raises TypeError: Description .. method:: rotate(self, other) :param other: Description :type other: TYPE :returns: Description :rtype: TYPE :raises TypeError: Description :raises ValueError: Description .. method:: conjugate(self) :returns: Description :rtype: TYPE .. method:: star(self) :returns: Description :rtype: TYPE .. method:: inverse(self) :returns: Description :rtype: TYPE .. method:: sgn(self) :returns: Description :rtype: TYPE .. method:: get_length(self) :returns: norm of quaternion :rtype: float .. method:: to_numpy_array(self) :returns: Description :rtype: np.array .. py:class:: Pose(position_val=Vector3r(), orientation_val=Quaternionr()) Bases: :class:`airsimdroneracinglab.types.MsgpackMixin` .. attribute:: orientation Description :type: Quaternionr .. attribute:: position Description :type: Vector3r .. attribute:: position .. attribute:: orientation .. method:: nanPose() :staticmethod: :returns: Description :rtype: TYPE .. py:class:: CollisionInfo Bases: :class:`airsimdroneracinglab.types.MsgpackMixin` .. attribute:: has_collided Description :type: bool .. attribute:: impact_point Description :type: TYPE .. attribute:: normal Description :type: TYPE .. attribute:: object_id Description :type: int .. attribute:: object_name Description :type: str .. attribute:: penetration_depth Description :type: float .. attribute:: position Description :type: TYPE .. attribute:: time_stamp Description :type: float .. attribute:: has_collided :annotation: = False .. attribute:: normal .. attribute:: impact_point .. attribute:: position .. attribute:: penetration_depth :annotation: = 0.0 .. attribute:: time_stamp :annotation: = 0.0 .. attribute:: object_name :annotation: = .. attribute:: object_id .. py:class:: GeoPoint Bases: :class:`airsimdroneracinglab.types.MsgpackMixin` .. attribute:: altitude Description :type: float .. attribute:: latitude Description :type: float .. attribute:: longitude Description :type: float .. attribute:: latitude :annotation: = 0.0 .. attribute:: longitude :annotation: = 0.0 .. attribute:: altitude :annotation: = 0.0 .. py:class:: YawMode(is_rate=True, yaw_or_rate=0.0) Bases: :class:`airsimdroneracinglab.types.MsgpackMixin` Struct YawMode with two fields, yaw_or_rate and is_rate. If is_rate field is True then yaw_or_rate field is interpreted as angular velocity in **degrees/sec**, which means you want vehicle to rotate continuously around its axis at that angular velocity while moving. If is_rate is False then yaw_or_rate is interpreted as angle in **degrees**, which means you want vehicle to rotate to specific angle (i.e. yaw) and keep that angle while moving. When yaw_mode.is_rate == true, the drivetrain parameter shouldn't be set to ForwardOnly because there's a contradiction as we're asking for the drone to keep front pointing ahead, but also rotate continuously. However if you have yaw_mode.is_rate = false in ForwardOnly mode then you can do some funky stuff. For example, you can have drone do circles and have yaw_or_rate set to 90 so camera is always pointed to center. In MaxDegreeofFreedom also you can get some funky stuff by setting yaw_mode.is_rate = true and say yaw_mode.yaw_or_rate = 20. This will cause drone to go in its path while rotating which may allow to do 360 scanning. In most cases, you just don't want yaw to change which you can do by setting yaw rate of 0. The shorthand for this is airsim.YawMode() .. attribute:: is_rate if True, yaw_or_rate is interpreted as angular velocity in **degrees/sec**, if False, yaw_or_rate is interpreted as angles in **degrees**, :type: bool .. attribute:: yaw_or_rate value of desired yaw rate, or desired yaw angle. Interpretation depends upon is_rate :type: float .. attribute:: is_rate :annotation: = True .. attribute:: yaw_or_rate :annotation: = 0.0 .. py:class:: RCData(timestamp=0, pitch=0.0, roll=0.0, throttle=0.0, yaw=0.0, switch1=0, switch2=0, switch3=0, switch4=0, switch5=0, switch6=0, switch7=0, switch8=0, is_initialized=False, is_valid=False) Bases: :class:`airsimdroneracinglab.types.MsgpackMixin` .. attribute:: is_initialized Description :type: bool .. attribute:: is_valid Description :type: bool .. attribute:: pitch Description :type: TYPE .. attribute:: roll Description :type: TYPE .. attribute:: switch1 Description :type: TYPE .. attribute:: switch2 Description :type: TYPE .. attribute:: switch3 Description :type: TYPE .. attribute:: switch4 Description :type: TYPE .. attribute:: switch5 Description :type: TYPE .. attribute:: switch6 Description :type: TYPE .. attribute:: switch7 Description :type: TYPE .. attribute:: switch8 Description :type: TYPE .. attribute:: throttle Description :type: TYPE .. attribute:: timestamp Description :type: int .. attribute:: yaw Description :type: TYPE .. attribute:: timestamp :annotation: = 0 .. attribute:: is_initialized :annotation: = False .. attribute:: is_valid :annotation: = False .. py:class:: ImageRequest(camera_name, image_type, pixels_as_float=False, compress=True) Bases: :class:`airsimdroneracinglab.types.MsgpackMixin` .. attribute:: camera_name Description :type: str .. attribute:: compress Description :type: bool .. attribute:: image_type Description :type: TYPE .. attribute:: pixels_as_float Description :type: bool .. attribute:: camera_name :annotation: = 0 .. attribute:: image_type .. attribute:: pixels_as_float :annotation: = False .. attribute:: compress :annotation: = False .. py:class:: ImageResponse Bases: :class:`airsimdroneracinglab.types.MsgpackMixin` .. attribute:: camera_orientation Description :type: TYPE .. attribute:: camera_position Description :type: TYPE .. attribute:: compress Description :type: bool .. attribute:: height Description :type: int .. attribute:: image_data_float Description :type: float .. attribute:: image_data_uint8 Description :type: TYPE .. attribute:: image_type Description :type: TYPE .. attribute:: message Description :type: str .. attribute:: pixels_as_float Description :type: float .. attribute:: time_stamp Description :type: TYPE .. attribute:: width Description :type: int .. attribute:: image_data_uint8 .. attribute:: image_data_float :annotation: = 0.0 .. attribute:: camera_position .. attribute:: camera_orientation .. attribute:: time_stamp .. attribute:: message :annotation: = .. attribute:: pixels_as_float :annotation: = 0.0 .. attribute:: compress :annotation: = True .. attribute:: width :annotation: = 0 .. attribute:: height :annotation: = 0 .. attribute:: image_type .. py:class:: CarControls(throttle=0, steering=0, brake=0, handbrake=False, is_manual_gear=False, manual_gear=0, gear_immediate=True) Bases: :class:`airsimdroneracinglab.types.MsgpackMixin` .. attribute:: throttle :annotation: = 0.0 .. attribute:: steering :annotation: = 0.0 .. attribute:: brake :annotation: = 0.0 .. attribute:: handbrake :annotation: = False .. attribute:: is_manual_gear :annotation: = False .. attribute:: manual_gear :annotation: = 0 .. attribute:: gear_immediate :annotation: = True .. method:: set_throttle(self, throttle_val, forward) .. py:class:: KinematicsState Bases: :class:`airsimdroneracinglab.types.MsgpackMixin` .. attribute:: angular_acceleration Description :type: Vector3r .. attribute:: angular_velocity Description :type: Vector3r .. attribute:: linear_acceleration Description :type: Vector3r .. attribute:: linear_velocity Description :type: Vector3r .. attribute:: orientation Description :type: Quaternionr .. attribute:: position Description :type: Vector3r .. attribute:: position .. attribute:: orientation .. attribute:: linear_velocity .. attribute:: angular_velocity .. attribute:: linear_acceleration .. attribute:: angular_acceleration .. py:class:: EnvironmentState Bases: :class:`airsimdroneracinglab.types.MsgpackMixin` .. attribute:: position .. attribute:: geo_point .. attribute:: gravity .. attribute:: air_pressure :annotation: = 0.0 .. attribute:: temperature :annotation: = 0.0 .. attribute:: air_density :annotation: = 0.0 .. py:class:: CarState Bases: :class:`airsimdroneracinglab.types.MsgpackMixin` .. attribute:: speed :annotation: = 0.0 .. attribute:: gear :annotation: = 0 .. attribute:: rpm :annotation: = 0.0 .. attribute:: maxrpm :annotation: = 0.0 .. attribute:: handbrake :annotation: = False .. attribute:: collision .. attribute:: kinematics_estimated .. attribute:: timestamp .. py:class:: MultirotorState Bases: :class:`airsimdroneracinglab.types.MsgpackMixin` .. attribute:: collision Description :type: CollisionInfo .. attribute:: gps_location Description :type: GeoPoint .. attribute:: kinematics_estimated Description :type: KinematicsState .. attribute:: landed_state Description :type: LandedState.Landed .. attribute:: rc_data Description :type: RCData .. attribute:: timestamp Description :type: np.uint64 .. attribute:: collision .. attribute:: kinematics_estimated .. attribute:: gps_location .. attribute:: timestamp .. attribute:: landed_state .. attribute:: rc_data .. py:class:: ProjectionMatrix Bases: :class:`airsimdroneracinglab.types.MsgpackMixin` .. attribute:: matrix Description :type: list .. attribute:: matrix :annotation: = [] .. py:class:: CameraInfo Bases: :class:`airsimdroneracinglab.types.MsgpackMixin` .. attribute:: fov Description :type: int .. attribute:: pose Description :type: TYPE .. attribute:: proj_mat Description :type: TYPE .. attribute:: pose .. attribute:: fov .. attribute:: proj_mat .. py:class:: LidarData Bases: :class:`airsimdroneracinglab.types.MsgpackMixin` .. attribute:: point_cloud :annotation: = 0.0 .. attribute:: time_stamp .. attribute:: pose .. py:class:: ImuData Bases: :class:`airsimdroneracinglab.types.MsgpackMixin` .. attribute:: time_stamp .. attribute:: orientation .. attribute:: angular_velocity .. attribute:: linear_acceleration .. py:class:: BarometerData Bases: :class:`airsimdroneracinglab.types.MsgpackMixin` .. attribute:: time_stamp .. attribute:: altitude .. attribute:: pressure .. attribute:: qnh .. py:class:: MagnetometerData Bases: :class:`airsimdroneracinglab.types.MsgpackMixin` .. attribute:: time_stamp .. attribute:: magnetic_field_body .. attribute:: magnetic_field_covariance :annotation: = 0.0 .. py:class:: GnssFixType Bases: :class:`airsimdroneracinglab.types.MsgpackMixin` .. attribute:: GNSS_FIX_NO_FIX :annotation: = 0 .. attribute:: GNSS_FIX_TIME_ONLY :annotation: = 1 .. attribute:: GNSS_FIX_2D_FIX :annotation: = 2 .. attribute:: GNSS_FIX_3D_FIX :annotation: = 3 .. py:class:: GnssReport Bases: :class:`airsimdroneracinglab.types.MsgpackMixin` .. attribute:: geo_point .. attribute:: eph :annotation: = 0.0 .. attribute:: epv :annotation: = 0.0 .. attribute:: velocity .. attribute:: fix_type .. attribute:: time_utc .. py:class:: GpsData Bases: :class:`airsimdroneracinglab.types.MsgpackMixin` .. attribute:: time_stamp .. attribute:: gnss .. attribute:: is_valid :annotation: = False .. py:class:: DistanceSensorData Bases: :class:`airsimdroneracinglab.types.MsgpackMixin` .. attribute:: time_stamp .. attribute:: distance .. attribute:: min_distance .. attribute:: max_distance .. attribute:: relative_pose .. py:class:: PIDGains(kp, ki, kd) Struct to store values of PID gains. Used to transmit controller gain values while instantiating AngleLevel/AngleRate/Velocity/PositionControllerGains objects. .. attribute:: kP Proportional gain :type: float .. attribute:: kI Integrator gain :type: float .. attribute:: kD Derivative gain :type: float .. method:: to_list(self) .. py:class:: AngleRateControllerGains(roll_gains=PIDGains(0.25, 0, 0), pitch_gains=PIDGains(0.25, 0, 0), yaw_gains=PIDGains(0.25, 0, 0)) Struct to contain controller gains used by angle level PID controller .. attribute:: roll_gains kP, kI, kD for roll axis :type: PIDGains .. attribute:: pitch_gains kP, kI, kD for pitch axis :type: PIDGains .. attribute:: yaw_gains kP, kI, kD for yaw axis :type: PIDGains .. method:: to_lists(self) .. py:class:: AngleLevelControllerGains(roll_gains=PIDGains(2.5, 0, 0), pitch_gains=PIDGains(2.5, 0, 0), yaw_gains=PIDGains(2.5, 0, 0)) Struct to contain controller gains used by angle rate PID controller .. attribute:: roll_gains kP, kI, kD for roll axis :type: PIDGains .. attribute:: pitch_gains kP, kI, kD for pitch axis :type: PIDGains .. attribute:: yaw_gains kP, kI, kD for yaw axis :type: PIDGains .. method:: to_lists(self) .. py:class:: VelocityControllerGains(x_gains=PIDGains(0.2, 0, 0), y_gains=PIDGains(0.2, 0, 0), z_gains=PIDGains(2.0, 2.0, 0)) Struct to contain controller gains used by velocity PID controller .. attribute:: x_gains kP, kI, kD for X axis :type: PIDGains .. attribute:: y_gains kP, kI, kD for Y axis :type: PIDGains .. attribute:: z_gains kP, kI, kD for Z axis :type: PIDGains .. method:: to_lists(self) .. py:class:: PositionControllerGains(x_gains=PIDGains(0.25, 0, 0), y_gains=PIDGains(0.25, 0, 0), z_gains=PIDGains(0.25, 0, 0)) Struct to contain controller gains used by position PID controller .. attribute:: x_gains kP, kI, kD for X axis :type: PIDGains .. attribute:: y_gains kP, kI, kD for Y axis :type: PIDGains .. attribute:: z_gains kP, kI, kD for Z axis :type: PIDGains .. method:: to_lists(self) .. py:class:: TrajectoryTrackerGains(kp_cross_track=7.5, kd_cross_track=0.0, kp_vel_cross_track=5.0, kd_vel_cross_track=0.0, kp_along_track=0.4, kd_along_track=0.0, kp_vel_along_track=0.04, kd_vel_along_track=0.0, kp_z_track=2.0, kd_z_track=0.0, kp_vel_z=0.4, kd_vel_z=0.0, kp_yaw=3.0, kd_yaw=0.1) Struct to contain trajectory tracker gains used by the pure pursuit controller for moveBySpline and moveBySplineVelConstraints .. attribute:: kp_cross_track P gain for position error measured perpendicular to path tangent, or in the "cross track" direction :type: float .. attribute:: kd_cross_track D gain for position error measured perpendicular to path tangent, or in the "cross track" direction :type: float .. attribute:: kp_vel_cross_track P gain for velocity error measured perpendicular to path tangent, or in the "cross track" direction :type: float .. attribute:: kd_vel_cross_track D gain for velocity error measured perpendicular to path tangent, or in the "cross track" direction :type: float .. attribute:: kp_along_track P gain for position error measured along path tangent :type: float .. attribute:: kd_along_track D gain for position error measured along path tangent :type: float .. attribute:: kp_vel_along_track P gain for velocity error measured along path tangent :type: float .. attribute:: kd_vel_along_track D gain for velocity error measured along path tangent :type: float .. attribute:: kp_z_track P gain for position error measured along world Z axis :type: float .. attribute:: kd_z_track D gain for position error measured along world Z axis :type: float .. attribute:: kp_vel_z P gain for velocity error measured along world Z axis :type: float .. attribute:: kd_vel_z D gain for velocity error measured along world Z axis :type: float .. attribute:: kp_yaw P gain for yaw error :type: float .. attribute:: kd_yaw D gain for yaw error :type: float .. method:: to_list(self) Call this before sending to setTrajectoryTrackerGains :returns: Description :rtype: list[float] .. py:class:: MeshPositionVertexBuffersResponse Bases: :class:`airsimdroneracinglab.types.MsgpackMixin` .. attribute:: position .. attribute:: orientation .. attribute:: vertices :annotation: = 0.0 .. attribute:: indices :annotation: = 0.0 .. attribute:: name :annotation: =