../_images/tiagopro-icon.png ../_images/tiago-icon.png ../_images/triago-icon.png ../_images/mobile-bases-icon.png

🕹️ 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 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 module is automatically started at the startup of the robot. To view its log run the following command:

pal module log assisted_teleop 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, and activates a red blinking pattern on the robot’s LEDs to signal the obstruction.

../_images/assisted_mode_collision.svg

Attention

Since the Assisted Teleop relies on the Local Costmap for collision checking, it is essential to ensure that the Navigation Module is running and the Local Costmap is being 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

global frame

The global frame used for transformations. Default: "odom".

robot_base_frame

The reference frame of the robot’s base. Default: "base_link".

costmap_topic

Topic of the costmap used for collision checking. Default: "/local_costmap/costmap_raw".

footprint_topic

Topic of the footprint used for collision checking. Default: "/local_costmap_published_footprint".

vel_topic

Topic for velocity commands used in collision checking. Default: ""/joy_vel"".

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".

All the parameters above are dynamic, and 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 node, 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_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_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 node, 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, assisted_teleop.

/assisted_teleop:
   ros__parameters:
      # Your assisted_teleop parameters

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

pal module restart assisted_teleop

Note

This change is is persistent and will be loaded every time you start the assisted_teleop 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.