TransportTrack#
A cooperative control task where a group of UAVs carry a box-shaped payload connected via rigid links. The goal for the agents is to collectively transport the payload to track a reference trajectory.
Observation#
The observation space is specified by a :py:class:CompositeSpec containing the following items:
obs_self(1, *): The state of each UAV observed by itself, containing its kinematic information with the position being relative to the payload. It also includes a one-hot vector indicating each drone’s identity.obs_others(k-1, *): The observed states of other agents.obs_payload(1, *): The state of the frame, cotaining its position (relative to the reference), rotation (in quaternions and direction vectors), and velocities.
Reward#
pos: Reward for tracking the trajectory, computed as :math:\exp(-a * \text{pos_error}).seperation: A factor that penalizes all agents when the minimum seperation is too small.up: Reward for keeping the payload upright.swing: Reward for avoid large swinging of the payload.joint_limit: Reward for kepping the joint states in a reasonalble range to avoid glitchy behaviors.effort: Reward computed from the effort of the drone to optimize the energy consumption.
The total reward is computed as:
Config#
Parameter |
Type |
Default |
Description |
|---|---|---|---|
|
str |
“hummingbird” |
|
|
int |
4 |
|
|
float |
0.5 |
A threshold value that gives penalty when the minimum seperation between the UAVs is too small. |
|
List[flaot, float] |
[0.5, 0.8] |
A tuple of two values that specifies the range of the payload mass to sample from in each episode (as ratio to the drone’s mass). |
|
int |
4 |
The number of future time steps to observe the reference positions along the trajectory. |
|
float |
0.7 |
A threshold value that triggers termination when the payload deviates too far from the reference position. |