Skip to content

GRAAL-Lab/path_following_algorithms

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 

Repository files navigation

DynamicGoalBasedALOS Library

Overview

The DynamicGoalBasedALOS library provides a dynamic goal-oriented extension to the Adaptive Line-of-Sight (ALOS) guidance law, initially developed by Thor I. Fossen. This library introduces a mechanism for handling dynamic goals in 3D path-following scenarios, suitable for autonomous vehicles, marine craft, and aircraft.

Key Features

  • Implements a 3D ALOS guidance law with dynamic goal adaptation.
  • I-based control for look-ahead distance adjustments.
  • Robust handling of cross-track and vertical-track errors.
  • Configurable parameters for flexible integration and experimentation.

Installation

Prerequisites

Ensure the following dependencies are installed:

  • Eigen (for linear algebra computations)
  • PkgConfig (for configuration management)
  • CTB PID Library (for PID control)
  • C++17 or later (tested with GCC and Clang)

Building the Library

Clone the repository and build the library:

git clone git@bitbucket.org:isme_robotics/path-following-algorithms.git
cd dynamic_goal_alos
mkdir build && cd build
cmake ..
sudo make install

Usage

Initialization

To use the library, include the header and initialize the DynamicGoalBasedALOS object:

#include "dynamic_goal_ALOS.hpp"

dynamic_goal_alos::DynamicGoalBasedALOSParams params;
// Configure `params` as needed, or load them from a .conf file
params = dynamic_goal_alos::LoadALOSParamsFromConf("config_name");

dynamic_goal_alos::DynamicGoalBasedALOS alos(params);

API Functions

UpdateLookAheadDistance

Updates the look-ahead distance based on the error metrics.

double newDelta = alos.UpdateLookAheadDistance(crossTrackError, verticalTrackError, tangentsDifferenceNorm);

ALOS3D

Calculates the desired heading and pitch to guide the vehicle towards the goal.

bool success = alos.ALOS3D(currentPos, goalPos, closestPos, delta, dt, desiredHeading, desiredPitch, crossTrackError, verticalTrackError);

LoadALOSParamsFromConf

Loads parameters from a configuration file.

auto params = dynamic_goal_alos::LoadALOSParamsFromConf("config_name");

GetDelta

Returns the current look-ahead distance:

double currentDelta = alos.GetDelta();

Configuration

Parameters

The DynamicGoalBasedALOSParams struct supports the following configurable parameters:

  • Look-ahead Distance:
    • deltaMin: Minimum look-ahead distance.
    • deltaMax: Maximum look-ahead distance.
  • Cross-Track and Vertical-Track Weights:
    • crossTrackErrorWeight, verticalTrackErrorWeight, tangentsDifferenceNormWeight.
  • Gains for Adaptive Control:
    • gamma_crosstrack, gamma_verticaltrack.
  • PID Gains for Look-Ahead Distance:
    • gainsDelta: Struct containing Kp, Ki, Kd, etc.
  • Dynamic Initialization Values:
    • betaHat_c_init, thetaHat_c_init.
  • Bounds for Beta and Theta:
    • betaHat_c_min, betaHat_c_max, thetaHat_c_min, thetaHat_c_max.

Configuration File Example

Example .conf file:

DynamicGoalBasedALOS {
    deltaMin = 1.0;
    deltaMax = 10.0;
    dt = 0.1;
    gamma_crosstrack = 0.01;
    gamma_verticaltrack = 0.01;
    epsilon = 0.01;
    betaHat_c_max = 1.0;
    betaHat_c_min = -1.0;
    thetaHat_c_max = 1.0;
    thetaHat_c_min = -1.0;
    crossTrackErrorWeight = 1.0;
    verticalTrackErrorWeight = 1.0;
    tangentsDifferenceNormWeight = 1.0;
    betaHat_c_init = 0.0;
    thetaHat_c_init = 0.0;
    gainsDelta = [0.1, 0.01, 0.001, 1.0, 0.0, 0.1];
}

Author Details

LinkedIn: Youssef Attia

Email: youssef.attia@edu.unige.it

Reference:

Fossen, T. I., & Aguiar, A. P. (2024). A uniform semiglobal exponential stable adaptive line-of-sight (ALOS) guidance law for 3-D path following. Automatica, 163, 111556. https://doi.org/10.1016/j.automatica.2024.111556

License

This project is licensed under the MIT License. See the LICENSE file for details.

About

No description or website provided.

Topics

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors