Camera#
Description#
The Camera
component simulates a camera attached to a link on the drone.
The camera itself can be gimballed to achieve a horizon lock effect.
In addition, the field-of-view (FOV), tilt angle, resolution, and offset distance from the main link can be adjusted.
On image capture, the camera returns an RGBA image, a depth map, and a segmentation map with pixel values representing the IDs of objects in the environment.
Camera FPS#
Camera capture consumes a significant amount of overhead, see this github issue. It is not recommended to perform camera capture on every physics step.
Class Description#
- class PyFlyt.core.abstractions.Camera(p: BulletClient, uav_id: int, camera_id: int, use_gimbal: bool, camera_FOV_degrees: float, camera_angle_degrees: float, camera_resolution: tuple[int, int], camera_position_offset: ndarray = array([0., 0., 0.]), is_tracking_camera: bool = False, cinematic: bool = False)#
A camera component.
The Camera component simulates a camera attached to a link on the drone. The camera itself can be gimballed to achieve a horizon lock effect. In addition, the field-of-view (FOV), tilt angle, resolution, and offset distance from the main link can be adjusted. On image capture, the camera returns an RGBA image, a depth map, and a segmentation map with pixel values representing the IDs of objects in the environment.
- Parameters:
p (bullet_client.BulletClient) – PyBullet physics client ID.
uav_id (int) – ID of the drone.
camera_id (int) – integer representing the ID of the link that the camera is attached to.
use_gimbal (bool) – whether to lock the horizon of the camera.
camera_FOV_degrees (float) – the field-of-view of the camera in degrees.
camera_angle_degrees (float) – when gimballed, this is the angle of downtilt from horizon; when not gimballed, this is theh angle of uptile from horizon.
camera_resolution (tuple[int, int]) – the resolution of the camera in terms of [height, width].
camera_position_offset (np.ndarray = np.array([0.0, 0.0, 0.0])) – an (3,) array representing an offset of where the camera is from the center of the link in camera_id.
is_tracking_camera (bool = False) – if the camera is a tracking camera, the focus point of the camera is adjusted to focus on the center body of the aircraft instead of at infinity.
cinematic (bool = False) – it’s not a bug, it’s a feature.
- capture_image() tuple[ndarray, ndarray, ndarray] #
Captures the 3 relevant images from the camera.
- Returns:
rgbaImg, depthImg, segImg
- Return type:
tuple[np.ndarray, np.ndarray, np.ndarray]
- get_states()#
This does not need to be called for camera. Call capture_image() instead within update_last().
- physics_update()#
This does not need to be called for camera, call capture_image instead.
- state_update()#
This does not need to be called for camera.
- property view_mat: ndarray#
Generates the view matrix for the camera depending on the current orientation and implicit parameters.
- Returns:
view matrix.
- Return type:
np.ndarray