Trajectory Optimization
Overview
DHB-XR provides optimization-based trajectory adaptation using CasADi and Fatrop solvers.
Main Functions
batched_decode_dhb_dr
batched_decode_dhb_dr
batched_decode_dhb_dr(
linear_invariants_batch,
angular_invariants_batch,
initial_poses,
method=EncodingMethod.POSITION,
dhb_method=DHBMethod.DOUBLE_REFLECTION,
drop_padded=True,
use_gpu=False,
casadi_path=DEFAULT_FN_PATH,
)
Decode multiple trajectories in batch.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
linear_invariants_batch
|
ndarray
|
(B, T, 4) or list of (T, 4) |
required |
angular_invariants_batch
|
ndarray
|
(B, T, 4) or list of (T, 4) |
required |
initial_poses
|
List[Dict[str, ndarray]]
|
list of B dicts with 'position' (3,) and 'quaternion' (4,) wxyz. |
required |
method
|
EncodingMethod
|
'pos' or 'vel' for invariant interpretation |
POSITION
|
dhb_method
|
DHBMethod
|
DHBMethod enum (DOUBLE_REFLECTION or ORIGINAL) |
DOUBLE_REFLECTION
|
drop_padded
|
bool
|
Whether to drop padded frames |
True
|
use_gpu
|
bool
|
If True and CUDA available, use CusADi GPU acceleration |
False
|
casadi_path
|
str
|
Path to compiled CasADi function for GPU decode |
DEFAULT_FN_PATH
|
Returns:
| Type | Description |
|---|---|
(positions_batch, quaternions_batch)
|
(B, N, 3), (B, N, 4). |
Source code in src/dhb_xr/optimization/cusadi_solver.py
Usage Example
from dhb_xr.optimization.casadi_solver import CasadiTrajectoryOptimizer
import numpy as np
# Create optimizer
optimizer = CasadiTrajectoryOptimizer(batch_size=1)
# Sample data
lin_inv = np.random.randn(1, 20, 4)
ang_inv = np.random.randn(1, 20, 4)
init_poses = [{"position": np.zeros(3), "quaternion": np.array([1, 0, 0, 0])}]
# Optimize trajectory
positions, quaternions = optimizer.forward(lin_inv, ang_inv, init_poses)