Controller

The Controller module is responsible for execution of planned trajectories on the robot. It does this by tracking the trajectory, and thus is sometimes referred to as a trajectory tracker.

The Controller module receives a time series of robot states, then interpolates to find the desired state to achieve. It generates a control command to achieve this state using the algorithms described below. It is configured to run as fast as or faster than the odometry rate, which is typically set to 50-100Hz.

Currently, the following drive trains are supported:

  • Differential drive

Inputs

  • PoseTree: The library providing the pose frame transform queries

  • Trajectory: The input trajectory to track

  • State: The state estimate to indicate the robot’s current pose

  • Robot remote control: An optional link to the remote controller, so as to only send commands when in Autonomy mode. The robot can operate in three modes: Autonomy, Manual, and Teleoperation.

The controller codelet additionally has algorithmic parameters, which are detailed in the API documentation.

Outputs

  • Command: A tuple of linear and rotational (angular) velocities to drive the robot

Currently, the Controller module supports two algorithms: Backstepping Controller and PID Controller.

Backstepping Controller

This is the default controller, which computes errors in the state variables (position, heading) and uses the errors to select commands to drive the robot.

PID Controller

When the use_pid_controller parameter is set to True, the PID controller is enabled and used to track the trajectory while controlling for drift and error.

NvIsaacControllerExtension

Extension containing control operators.

nvidia::isaac::AckermannControlOperator

Generates control messages for an Ackermann base from a trajectory

Parameters:

name

Atlas

lookup_name

atlas

description

Link to ATLAS

flags

GXF_PARAMETER_FLAGS_NONE

type

GXF_PARAMETER_TYPE_HANDLE

default

N/A

name

Allocator

lookup_name

allocator

description

Memory allocator for tensor

flags

GXF_PARAMETER_FLAGS_NONE

type

GXF_PARAMETER_TYPE_HANDLE

default

N/A

name

Command

lookup_name

command

description

Calculated Ackermann base command

flags

GXF_PARAMETER_FLAGS_NONE

type

GXF_PARAMETER_TYPE_HANDLE

default

N/A

name

State

lookup_name

state

description

Robot state from Odometry

flags

GXF_PARAMETER_FLAGS_NONE

type

GXF_PARAMETER_TYPE_HANDLE

default

N/A

name

Trajectory

lookup_name

trajectory

description

Timeseries of Ackermann base states

flags

GXF_PARAMETER_FLAGS_NONE

type

GXF_PARAMETER_TYPE_HANDLE

default

N/A

name

Use PID Controller

lookup_name

use_pid_controller

description

Whether to use the Ackermann PID controller

flags

GXF_PARAMETER_FLAGS_NONE

type

GXF_PARAMETER_TYPE_BOOL

default

N/A

name

PID Controller Baseline

lookup_name

pid_controller_baseline

description

Baseline in meters of the robot, for use in the PID controller

flags

GXF_PARAMETER_FLAGS_NONE

type

GXF_PARAMETER_TYPE_FLOAT64

default

0.5

name

Time Offset to Compensate for Command Delay

lookup_name

command_delay

description

A look-ahead time (in seconds) to get the current command from the received plan in order to compensate delay in execution of the command. Control at current_time + command_delay is sent.

flags

GXF_PARAMETER_FLAGS_NONE

type

GXF_PARAMETER_TYPE_FLOAT64

default

0.0

nvidia::isaac::DifferentialBaseController

Generates control messages for a differential base from a trajectory

Parameters:

name

Sight

lookup_name

sight

description

A sight transmitter handle.

flags

GXF_PARAMETER_FLAGS_OPTIONAL

type

GXF_PARAMETER_TYPE_HANDLE

default

N/A

name

Rebot Remote Control

lookup_name

robot_remote_control

description

Optional link to a RebotRemoteControl, if provided, the controller will only be active if isAutonomyOn is true.

flags

GXF_PARAMETER_FLAGS_OPTIONAL

type

GXF_PARAMETER_TYPE_HANDLE

default

N/A

name

Atlas

lookup_name

atlas

description

Link to ATLAS

flags

GXF_PARAMETER_FLAGS_NONE

type

GXF_PARAMETER_TYPE_HANDLE

default

N/A

name

Allocator

lookup_name

allocator

description

Memory allocator for tensor

flags

GXF_PARAMETER_FLAGS_NONE

type

GXF_PARAMETER_TYPE_HANDLE

default

N/A

name

Output Command

lookup_name

tx_command

description

The command to be executed to follow the trajectory

flags

GXF_PARAMETER_FLAGS_NONE

type

GXF_PARAMETER_TYPE_HANDLE

default

N/A

name

Input State

lookup_name

rx_state

description

Current state of the robot.

flags

GXF_PARAMETER_FLAGS_NONE

type

GXF_PARAMETER_TYPE_HANDLE

default

N/A

name

Input Trajectory

lookup_name

rx_trajectory

description

The trajectory we aim to follow.

flags

GXF_PARAMETER_FLAGS_NONE

type

GXF_PARAMETER_TYPE_HANDLE

default

N/A

name

Estimate Delay

lookup_name

estimate_delay

description

Estimate the delay between the command and its execution automatically. If false the command_delay will be used instead.

flags

GXF_PARAMETER_FLAGS_DYNAMIC

type

GXF_PARAMETER_TYPE_BOOL

default

True

name

Delay Estimation Half Period

lookup_name

delay_estimation_half_period

description

Amount of time accounting for half of the current average.

flags

GXF_PARAMETER_FLAGS_DYNAMIC

type

GXF_PARAMETER_TYPE_FLOAT64

default

1.0

name

Delay Estimation Minimum Score

lookup_name

delay_estimation_minimum_score

description

Minimum score to accept the estimated delay.

flags

GXF_PARAMETER_FLAGS_DYNAMIC

type

GXF_PARAMETER_TYPE_FLOAT64

default

0.98

name

Forward Command

lookup_name

forward_command

description

Simply forward the command from the trajectory

flags

GXF_PARAMETER_FLAGS_DYNAMIC

type

GXF_PARAMETER_TYPE_BOOL

default

True

name

Use PID Controller

lookup_name

use_pid_controller

description

Whether to use the Differential PID controller

flags

GXF_PARAMETER_FLAGS_DYNAMIC

type

GXF_PARAMETER_TYPE_BOOL

default

False

name

Controller Epsilon Gain

lookup_name

controller_epsilon_gain

description

Gain used to compute the forward gain.

flags

GXF_PARAMETER_FLAGS_DYNAMIC

type

GXF_PARAMETER_TYPE_FLOAT64

default

1.0

name

Controller B Gain

lookup_name

controller_b_gain

description

Gain used to compute the heading gain.

flags

GXF_PARAMETER_FLAGS_DYNAMIC

type

GXF_PARAMETER_TYPE_FLOAT64

default

1.0

name

Time Offset to Compensate for Command Delay

lookup_name

command_delay

description

A look-ahead time (in seconds) to get the current command from the received plan in order to compensate delay in execution of the command. Control at current_time + command_delay is sent.

flags

GXF_PARAMETER_FLAGS_DYNAMIC

type

GXF_PARAMETER_TYPE_FLOAT64

default

0.2

name

Forward Error PID parameters

lookup_name

pid_pos_x

description

Parameters of the PID controller for the forward error.

flags

GXF_PARAMETER_FLAGS_DYNAMIC

type

GXF_PARAMETER_TYPE_FLOAT64

default

2.19200247e-316

name

Latteral Error PID parameters

lookup_name

pid_pos_y

description

Parameters of the PID controller for the latteral error.

flags

GXF_PARAMETER_FLAGS_DYNAMIC

type

GXF_PARAMETER_TYPE_FLOAT64

default

3.03143977e-316

name

Heading Error PID parameters

lookup_name

pid_heading

description

Parameters of the PID controller for the heading error.

flags

GXF_PARAMETER_FLAGS_DYNAMIC

type

GXF_PARAMETER_TYPE_FLOAT64

default

2.6381303e-316

© Copyright 2018-2023, NVIDIA Corporation. Last updated on Sep 11, 2023.