ModalaiDrone

Inherits from: AerialRobot

Instantiates a ModalaiDrone containing mavlink client for sending commands to real drone.

Additionally sets up video stream manager for handling RTSP streams from the drone.

clip_velocity

ModalaiDrone.clip_velocity(vel: np.ndarray, velocity_limit: float)

Clip the velocity to be less than the velocity limit value.

Arguments
vel (np.ndarray)
required

velocity vector to be clipped

velocity_limit (float)
required

maximum velocity limit for the drone in m/s

Returns

clipped velocity vector

getPosition

ModalaiDrone.getPosition()

Get the current position of the drone with respect to the world coordinate.

getVelocity

ModalaiDrone.getVelocity()

Get the current velocity of the drone with respect to the world coordinate.

getYaw

ModalaiDrone.getYaw()

Return the current yaw of the drone in radians. Yaw measures the rotation of the drone around the z axis of the aeronautical frame (right-handed, X front, Y right, Z down)

getOrientation

ModalaiDrone.getOrientation()

Return the current Orientation of the drone, these are internally stored as a quaternion (x, y, z, w) where w is the scalar component. These can be mapped to the euler angles in the aeronautical frame (right-handed, X front, Y right, Z down).

setYaw

ModalaiDrone.setYaw(yaw: float)

Set the yaw (in radians) of the drone to the specified position. Yaw measures the rotation of the drone around the z-axis (downwards). The yaw is wrapped to stay within [-pi, pi].

Arguments
yaw (float)
required

the target yaw (radians) for the drone

Returns

setYawDelta

ModalaiDrone.setYawDelta(yaw_delta: float)

Set a yaw delta (in radians) for the drone to rotate to. Yaw measures the rotation of the drone around the z-axis (downwards). The resulting yaw will be wrapped to stay within [-pi, pi].

Arguments
yaw_delta (float)
required

the change in yaw (radians) for the drone

Returns

setYawRate

ModalaiDrone.setYawRate(yaw_rate: float)

Set the yaw rate of the drone in radians/s. Yaw measures the rotation of the drone around the z-axis (downwards)

Arguments
yaw_rate (float)
required

the target yaw_rate (radians/s) for the drone

Returns

moveToPosition

ModalaiDrone.moveToPosition(position: Position, no_sideslip: bool)

Move the drone to position: (x_val, y_val, z_val) respect to the world coordinates in NED frame (right handed, z down). If no_sideslip is specified drone turns in direction of travel. Velocity is limited to be less than velocity limit value.

Arguments
position (Position)
required

Position

contains x, y, and z position in meters in NED frame

no_sideslip (bool)
required

whether to turn in direction of travel (default: False)

Returns

moveToPositionDelta

ModalaiDrone.moveToPositionDelta(position_delta: Position, no_sideslip: bool)

Move the drone by position_delta: (x_val, y_val, z_val) relative to the current location with respect to the world coordinates in NED frame (right handed, z down). If no_sideslip is specified drone turns in direction of travel. Velocity is limited to be less than velocity limit value.

Arguments
position_delta (Position)
required

Position

contains x, y, and z position deltas in meters in NED frame

no_sideslip (bool)
required

whether to turn in direction of travel (default: False)

Returns

moveToGPS

ModalaiDrone.moveToGPS(lat: float, lon: float, alt: float, alt_use_msl: bool)

Move the drone to GPS coordinate: (lat, lon, alt) with respect to world coordinates in WGS84 frame (right handed, z up). By default altitude is relative to starting point, can be set to absolute MSL using alt_use_msl. Note that NO velocity limiting is applied beyond PX4 limitation; drone moves using internal position tracking.

Arguments
lat (float)
required

target latitude in degrees

lon (float)
required

target longitude in degrees

alt (float)
required

target altitude in meters

alt_use_msl (bool)
required

flag to use altitude in absolute meters above sea level (MSL) (default: False)

Returns

moveByVelocity

ModalaiDrone.moveByVelocity(velocity: Velocity, duration: float, no_sideslip: bool)

Fly the drone with velocity in NED frame (right-handed, X north, Y east, Z down) in meters/s. If an optional duration is given, the velocity command is held for the specified number of seconds during which the function is blocking. After the duration is complete the final position is held. If no duration is specified (default), the command is held until another position or velocity command is given. If no_sideslip is specified drone turns in direction of travel. Velocity is limited to be less than velocity limit value.

Arguments
velocity (Velocity)
required

Velocity

contains x velocity (x_vel), y velocity (y_vel), z velocity (z_vel)

duration (float|None), optional

number of seconds that the drone should move before stopping, holds final position

no_sideslip (bool)
required

whether to turn in direction of travel (default: False)

Returns

takeoff

ModalaiDrone.takeoff()

Takeoff the ModalAI drone. Starts by arming the drone. Holds final position after takeoff.

land

ModalaiDrone.land()

Land the ModalAI drone. Descends at 1m/s until reaching 2m altitude. Final descent is at 0.25m/s until 0.1m altitude, then sets 0.5m/s velocity down for 2s to ensure touchdown before disarming the drone. NOTE: altitude values are given relative to starting location.

getImage

ModalaiDrone.getImage(camera_name: str, image_type: str)

return the image of camera(camera_name)

Arguments
camera_name (str), optional

name of the camera, one of hires_front_small or hires_down_small (default: hires_front_small)

image_type (str), optional

supported image types, (default: rgb)

Returns

Image

Image type containing the requested image.

Was this page helpful?