Types¶
Geometry¶
SE3Pose(position: np.ndarray, rotation: np.ndarray)
dataclass
¶
Represents a 6D pose in SE(3) - position and orientation. Orientation is stored as a 3x3 rotation matrix.
from_matrix(matrix: np.ndarray) -> SE3Pose
classmethod
¶
Create SE3Pose from 4x4 homogeneous transformation matrix.
Source code in drone_planning/types/geometry.py
from_position_quat(position: np.ndarray, quaternion: np.ndarray) -> SE3Pose
classmethod
¶
Create SE3Pose from position and quaternion (w, x, y, z).
Source code in drone_planning/types/geometry.py
from_position_rpy(position: np.ndarray, roll: float, pitch: float, yaw: float) -> SE3Pose
classmethod
¶
Create SE3Pose from position and roll-pitch-yaw angles.
Source code in drone_planning/types/geometry.py
to_matrix() -> np.ndarray
¶
to_quaternion() -> np.ndarray
¶
to_rpy() -> tuple[float, float, float]
¶
Planning¶
PlanningStatus
¶
Bases: Enum
Status of a motion planning attempt.
PlannerConfig(planner_name: str = 'rrtc', time_limit: float = 10.0, point_radius: float = 0.0, simplify: bool = True, interpolate: bool = True, resolution: float = 64.0, joint_limits: dict[str, tuple[float, float]] | None = None)
dataclass
¶
Configuration parameters for the motion planner.
PlanningResult(status: PlanningStatus, path: np.ndarray | None, planning_time_ns: int, path_cost: float)
dataclass
¶
Result of a motion planning attempt.
KinodynamicConfig(time_limit: float = 1.0, rho: float = 1.0, velocity_scale: float = 1.0, acceleration_scale: float = 1.0, limit_aware_duration: bool = True, max_extension_time: float = 3.0, velocity_sample_scale: float = 0.5, velocity_metric_weight: float = 0.3, rest_sample_probability: float = 0.3, simplify: bool = True, simplify_iterations: int = 5, simplify_time_limit: float = 0.05, max_iterations: int = 200000, seed: int = 0)
dataclass
¶
Parameters for :meth:~drone_planning.planning.MotionPlanner.plan_kinodynamic.
The planner is FLASK (flatness-based kinodynamic RRT-Connect). The
velocity and acceleration limits default to the PX4 values in
:mod:drone_planning.x500; velocity_scale / acceleration_scale
shrink or grow all of them at once.
KinodynamicResult(status: PlanningStatus, trajectory: KinodynamicTrajectory | None, planning_time_ns: int, iterations: int, cost: float, simplify_time_ns: int = 0, start_tree_size: int = 0, goal_tree_size: int = 0, edges_checked: int = 0)
dataclass
¶
Result of a kinodynamic planning attempt.
On success trajectory is a
:class:~drone_planning.trajectory.KinodynamicTrajectory — already
time-parameterised, so no separate time-parameterisation step is
needed.