🕹️ Assisted Teleop

Attention

This page documents a Premium robot feature. It may or may not be available on your robot.

The Assisted Teleop extends the 🎮 Teleop functionalities by providing a built-in obstacle avoidance system. It is implemented as Nav2 controller and it modifies velocity commands received from the joystick to ensure safe navigation by preventing potential collisions.

Operating Modes

The Assisted Teleop provides two operating modes: Non-Assisted Mode and Assisted Mode.

  • Non-Assisted Mode:
    • The robot moves according to the velocity commands received from the joystick.

    • No obstacle avoidance is applied, allowing full manual control of the robot’s movements.

    • It is indicated by yellow LEDs on the robot’s base.

../_images/non_assisted_mode.svg
  • Assisted Mode:
    • The robot moves according to the velocity commands received from the joystick.

    • Obstacle avoidance is applied to prevent potential collisions.

    • It is indicated by blue LEDs on the robot’s base.

../_images/assisted_mode.svg

Switching Modes

The operating mode can be switched between Non-Assisted and Assisted from the joystick, using the following button combinations:

Attention

Before activating the Assisted mode, is mandatory to enable the Gamepad.

../_images/joystick_teleop_assisted.svg

(coloured commands indicate that you have to press 2 keys at a time in order to perform the action.)

Instruction

Gamepad keys

Enable Gamepad

START

Enable Assisted Mode

BACK+RB

Move

RB + Left Joystick

Rotate

RB + Right Joystick

Increase Linear Velocity

BACK+Y

Decrease Linear Velocity

BACK+A

Increase Angular Velocity

BACK+X

Decrease Angular Velocity

BACK+B

Enable force feedback

VIBRATION

Reset settings

stick-press Press Right Joystick or Left Joystick

Moreover is possible to switch between Non-Assisted and Assisted modes using the following ROS 2 action:

ros2 action send_goal /assisted_teleop_priority_action twist_mux_msgs/action/JoyPriority {}

The current state of Assisted Teleop can be checked using the following ROS 2 topic:

ros2 topic echo /assisted_teleop_priority

The Assisted Teleop Nav2 controller is automatically started at the startup of the robot. To view its log run the following command:

pal module log navigation cat

Attention

Make sure of disable the Assisted mode before disactivating the Gamepad when you want to use the Autonomous Navigation functionalities. Autonomous navigation functionalities are indicated by white LEDs

Obstacle avoidance

The Assisted Teleop features a real-time collision detection system that continuously projects the robot’s position whenever a velocity command is issued. Collision checking is performed using the Local costmap, specifically evaluating the robot’s footprint. If a potential collision is detected, the system immediately halts the robot, triggers force feedback on the joystick (TEMPORARILY DISABLED), and activates a red blinking pattern on the robot’s LEDs (TEMPORARILY DISABLED) to signal the obstruction.

../_images/assisted_mode_collision.svg

Attention

Since the Assisted Teleop is implemented as a Nav2 controller and relies on the Local Costmap for collision checking, it is essential to ensure that the Navigation Module is running and the Local Costmap is properly published.

Note

If your robot gets stuck because of a collision, you can switch to Non-Assisted mode to manually move it away.

Parameters

The Assisted Teleop provides the following parameters that can be customized to suit specific use cases:

Parameter

Description

max_angular_vel

Max angular velocity allowed. Default: 2.0.

max_linear_vel

Max linear velocity allowed. Default: 0.8.

simulate_ahead_time

Time (s) used to project the velocity forward for collision prediction. Default: 1.0.

simulation_time_step

Time step (s) used for simulation updates. Default: 0.05.

transform_tolerance

Allowed time tolerance (s) for TF transformations. Default: 0.5.

vel_topics

Topics for velocity commands used in collision checking. Default: ["/joy_vel", "/rviz_joy_vel", "/key_vel"].

All the parameters above are dynamic, execept for vel_topics, and these can be changed at runtime producing a change in the behavior of the node.

Configuration

In addition to the available PAL configurations for the assisted_teleop, you can create new configurations for your robot. To do so, you first need to create a new directory in the .pal folder of your robot.

mkdir -p ~/.pal/config

And then, within this folder, you can create a new assisted_teleop configuration file.

touch ~/.pal/config/99_my_assisted_teleop_controller_config.yaml

Attention

The name of the file should start with a number to ensure that it is loaded last and overrides the default PAL configurations.

Within the newly created 99_my_assisted_teleop_controller_config.yaml file, you can insert your custom assisted_teleop parameters. For the list of available parameters, their meaning and how they affect the assisted_teleop, you can refer to the parameters described above. When creating a new Navigation configuration file, you need to specify the node name it refers to, in this case, controller_server.

/controller_server:
   ros__parameters:
     AssistedTeleop:
       # Your assisted_teleop parameters

Once created, to start using your custom assisted_teleop configuration, you need to restart the navigation module with the command:

pal module restart navigation

Note

This change is is persistent and will be loaded every time you start the navigation module. If you want to revert to the default PAL configuration, you can simply delete the custom configuration file you created in the ~/.pal/config folder.

Troubleshoot

  • If the force feedback on the joystick is not working, you might need to enable it by pressing the VIBRATION button.