Robot Remote Control

The Robot Remote Control is a component of the Isaac AMR Navigation Stack. It can be used to remote control a robot with a gamepad. It can only remote control robots that can consume a differential base control input, ie. linear and angular velocity.

In addition to pure remote control, this extension can also be used to manually override a robot that is moving autonomously with the navigation stack and it can be used to implement a deadman switch on robot (s.t. a robot only moves when a button is pressed).

  • Joystick State: Message containing the state of the joystick/gamepad. See Linux Joystick.

  • Automoy Command: Optionally the command from an autonomy stack can be provided. The remote control will either forward this command or override it with the values from the joystick.

  • Command: The command containing linear and angular velocity that can be sent to the robot.

flowchart LR JS[Linux Joystick] --> |Joystick State| RRC A:::hidden --> |"Autonomy Command <br>(optional)"| RRC RRC[Robot Remote Control] --> |Command| OUT:::hidden

The Robot Remote Control can also be used on a robot that is using the autonomy stack. In that case per default the robot remote control will forward the autonomy commands to the robot. But if the joysticks on the gamepad are used / touched the remote control will override the autonomy commands and send the manual commands from the gamepad instead.

When the deadman switch mode is enabled the robot will only move when the specified deadman switch button is pressed. This holds for both autonomous or manual mode, meaning that for the robot to move the button needs to be pressed, both in manual or autonomous mode.

Run the following command to execute this app:

Copy
Copied!
            

docker run -it --gpus all --rm --network=host --privileged \ -v /dev:/dev \ -v /sys:/sys \ nvcr.io/<your_staging_area>/robot_remote_control_segway:isaac_2.0-aarch64

NvIsaacRobotRemoteControlExtension

Reads Joystick messages and generates base commands

nvidia::isaac::RobotRemoteControl

Codelet to translate from joystick messages to differential base commands. (Deprecated, will be replaced by JoystickToCommandMapper)

Parameters:

name

Joystick State

lookup_name

rx_joystick_state

description

Current state of the Joystick

flags

GXF_PARAMETER_FLAGS_OPTIONAL

type

GXF_PARAMETER_TYPE_HANDLE

default

N/A

name

Autonomy Command

lookup_name

rx_autonomy_command

description

Command calculated by the autonomy stack

flags

GXF_PARAMETER_FLAGS_OPTIONAL

type

GXF_PARAMETER_TYPE_HANDLE

default

N/A

name

Command Output Channel

lookup_name

tx_command

description

Target differential drive robot state

flags

GXF_PARAMETER_FLAGS_NONE

type

GXF_PARAMETER_TYPE_HANDLE

default

N/A

name

Memory Allocator

lookup_name

allocator

description

Handle to the memory allocator used for output messages

flags

GXF_PARAMETER_FLAGS_NONE

type

GXF_PARAMETER_TYPE_HANDLE

default

N/A

name

Atlas Frontend

lookup_name

atlas

description

Handle to atlas frontend to access pose tree

flags

GXF_PARAMETER_FLAGS_NONE

type

GXF_PARAMETER_TYPE_HANDLE

default

N/A

name

Linear Speed Limit

lookup_name

speed_limit_linear

description

Maximum linear speed allowed to travel at (m/s)

flags

GXF_PARAMETER_FLAGS_NONE

type

GXF_PARAMETER_TYPE_FLOAT64

default

1.1

name

Angular Speed Limit

lookup_name

speed_limit_angular

description

Maximum angular speed allowed to rotate at (rad/s)

flags

GXF_PARAMETER_FLAGS_NONE

type

GXF_PARAMETER_TYPE_FLOAT64

default

1.0

name

Timeout (in seconds)

lookup_name

timeout_s

description

Duration for which a received message (e.g. joystick state or autonomy command is valid. If nothing is valid a null command is used instead.

flags

GXF_PARAMETER_FLAGS_NONE

type

GXF_PARAMETER_TYPE_FLOAT64

default

N/A

name

Linear Speed Joystick Axis

lookup_name

linear_speed_axis

description

Which axis or stick to use for linear speed control

flags

GXF_PARAMETER_FLAGS_NONE

type

GXF_PARAMETER_TYPE_INT32

default

N/A

name

Angular Speed Joystick Axis

lookup_name

angular_speed_axis

description

Which axis or stick to use for angular speed control

flags

GXF_PARAMETER_FLAGS_NONE

type

GXF_PARAMETER_TYPE_INT32

default

N/A

name

Deadman Switch Button Index

lookup_name

deadman_switch_button_idx

description

Index of the button used as a deadman switch. Is only used if enable_deadman_switch is true.

flags

GXF_PARAMETER_FLAGS_OPTIONAL

type

GXF_PARAMETER_TYPE_INT32

default

N/A

name

Invert Linear Speed Axis Values

lookup_name

invert_linear_speed_axis

description

Use to invert the direction for the linear speed control stick

flags

GXF_PARAMETER_FLAGS_NONE

type

GXF_PARAMETER_TYPE_BOOL

default

False

name

Invert Angular Speed Axis Values

lookup_name

invert_angular_speed_axis

description

Use to invert the direction for the angular speed control stick

flags

GXF_PARAMETER_FLAGS_NONE

type

GXF_PARAMETER_TYPE_BOOL

default

False

name

Enable Deadman Switch

lookup_name

enable_deadman_switch

description

Use to enable/disable the deadman switch. If true the button specied with deadman_switch_button_idx has to be pressed for the robot to move.

flags

GXF_PARAMETER_FLAGS_DYNAMIC

type

GXF_PARAMETER_TYPE_BOOL

default

True

name

Robot Frame

lookup_name

robot_frame

description

Robot pose frame.

flags

GXF_PARAMETER_FLAGS_NONE

type

GXF_PARAMETER_TYPE_HANDLE

default

N/A

nvidia::isaac::JoystickToCommandMapper

Codelet to translate from joystick messages to differential base commands.

Parameters:

name

Joystick State

lookup_name

rx_joystick_state

description

Current state of the Joystick

flags

GXF_PARAMETER_FLAGS_NONE

type

GXF_PARAMETER_TYPE_HANDLE

default

N/A

name

Command Output Channel

lookup_name

tx_command

description

Message channel containing the produced command.

flags

GXF_PARAMETER_FLAGS_NONE

type

GXF_PARAMETER_TYPE_HANDLE

default

N/A

name

Toggle Mode Signal Channel

lookup_name

tx_toggle_mode

description

Message channel that is used to trigger a mode switch.

flags

GXF_PARAMETER_FLAGS_NONE

type

GXF_PARAMETER_TYPE_HANDLE

default

N/A

name

Deadman Switch Heartbeat Channel

lookup_name

tx_deadman_switch_heartbeat

description

Message channel that is used to send the deadman switch’s heartbeat

flags

GXF_PARAMETER_FLAGS_NONE

type

GXF_PARAMETER_TYPE_HANDLE

default

N/A

name

Memory Allocator

lookup_name

allocator

description

N/A

flags

GXF_PARAMETER_FLAGS_NONE

type

GXF_PARAMETER_TYPE_HANDLE

default

N/A

name

Composite Schema Server

lookup_name

composite_schema_server

description

N/A

flags

GXF_PARAMETER_FLAGS_NONE

type

GXF_PARAMETER_TYPE_HANDLE

default

N/A

name

Linear Speed Joystick Axis

lookup_name

linear_speed_axis

description

Which axis or stick to use for linear speed control

flags

GXF_PARAMETER_FLAGS_NONE

type

GXF_PARAMETER_TYPE_INT32

default

N/A

name

Reverse Linear Speed Axis Values

lookup_name

reverse_linear_speed_axis

description

Use to reverse the direction for the linear speed control stick

flags

GXF_PARAMETER_FLAGS_NONE

type

GXF_PARAMETER_TYPE_BOOL

default

False

name

Linear Speed Limit

lookup_name

speed_limit_linear

description

Maximum linear speed allowed to travel at (m/s)

flags

GXF_PARAMETER_FLAGS_NONE

type

GXF_PARAMETER_TYPE_FLOAT64

default

1.1

name

Angular Speed Joystick Axis

lookup_name

angular_speed_axis

description

Which axis or stick to use for angular speed control

flags

GXF_PARAMETER_FLAGS_NONE

type

GXF_PARAMETER_TYPE_INT32

default

N/A

name

Reverse Angular Speed Axis Values

lookup_name

reverse_angular_speed_axis

description

Use to reverse the direction for the angular speed control stick

flags

GXF_PARAMETER_FLAGS_NONE

type

GXF_PARAMETER_TYPE_BOOL

default

False

name

Angular Speed Limit

lookup_name

speed_limit_angular

description

Maximum angular speed allowed to rotate at (rad/s)

flags

GXF_PARAMETER_FLAGS_NONE

type

GXF_PARAMETER_TYPE_FLOAT64

default

1.0

name

Index of the button used to toggle the mode.

lookup_name

toggle_mode_button

description

Which button is used to toggle the mode switch between autonomy and manual.

flags

GXF_PARAMETER_FLAGS_NONE

type

GXF_PARAMETER_TYPE_INT32

default

N/A

name

Index of the button used for the deadman switch.

lookup_name

deadman_switch_button

description

Which button is required to stay pressed when using the deadman switch.

flags

GXF_PARAMETER_FLAGS_NONE

type

GXF_PARAMETER_TYPE_INT32

default

N/A

© Copyright 2018-2023, NVIDIA Corporation. Last updated on Oct 23, 2023.