Perception algorithms are ubiquitous in modern autonomy stacks, providing necessary environmental information to operate in the real world.
Many of these algorithms depend on the visibility of keypoints, which must remain within the robot’s line-of-sight (LoS), for reliable operation.
This paper tackles the challenge of maintaining LoS on such keypoints during robot movement.
We propose a novel method that addresses these issues by ensuring applicability to various sensor footprints, adaptability to arbitrary nonlinear dynamics and constantly enforces LoS throughout the robot's path.
We show through our experiments that the proposed approach achieves significantly reduced LoS violation and runtime when compared to existing state-of-the-art methods in several representative and challenging scenarios.
The main packages are:
cvxpy
- is used to formulation and solve the convex subproblemsjax
- is used for determining the Jacobians using automatic differentiation as well as the just-in-time (JIT) compilation of the dynamics and their Jacobiansnumpy
- is used for numerical operationsscipy
- is used for the numerical integration of the dynamicspyaml
- is used for reading the configuration filestermcolor
- is used for pretty command line outputplotly
- is used for all visualizations
These can be installed via conda or pip.
Via Conda (Recommended)
- Clone the repo
git clone https://github.com/UW-ACL/los_guidance.git git submodule update --init --recursive cd los_guidance/los_guidance
- Install environment packages (this will take about a minute or two):
conda env create -f environment.yml
- Activate the environment:
conda activate los_guidance
Via Pip
- Prerequisites Python = 3.11
- Clone the repo
git clone https://github.com/UW-ACL/los_guidance.git git submodule update --init --recursive cd los_guidance/los_guidance
- Install environment packages:
pip install -r requirements.txt
The main script is main.py
which can be run with the following command:
python main.py --params-file quadsim/params/dr_vp.py --plot trajectory
The valid options for the --params-file
flag are:
quadsim/params/dr_vp.py
- the relative navigation scenario using CT-LoSquadsim/params/dr_vp_nodal.py
- the relative navigation scenario using DT-LoSquadsim/params/cinema_vp.py
- the cinematography scenario using CT-LoSquadsim/params/cinema_vp_nodal.py
- the cinematography scenario using DT-LoS.
You can also add the --plot
flag to visualize the results, in which case the valid options are the following:
trajectory
- plots the 3D trajectory and the LoS constraints as an animationcamera_view
- plots the camera view of the keypoints as an animationconic_view
- plots the conic view of the keypoints as an animationscp_iters
- plots the SCvx iterationsconstr_vio
- plots the LoS constraint violationcontrol
- plots the control inputslosses
- plots the components of the convex subproblems objectivestates
- plots the full state trajectory of the system
This work was supported by a NASA Space Technology Graduate Research Opportunity and the Office of Naval Research under grant N00014-17-1-2433. The authors would like to acknowledge Natalia Pavlasek, Griffin Norris, Samuel Buckner, and Purnanand Elango for their many helpful discussions and support throughout this work.
Distributed under the GPL-3.0 License. See LICENSE.txt
for more information.