🕹️ 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.
- 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.
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.
(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 |
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.
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 |
---|---|
|
The global frame used for transformations. Default: |
|
The reference frame of the robot’s base. Default: |
|
Topic of the costmap used for collision checking. Default: |
|
Topic of the footprint used for collision checking. Default: |
|
Topic for velocity commands used in collision checking. Default: |
|
Time (s) used to project the velocity forward for collision prediction. Default: |
|
Time step (s) used for simulation updates. Default: |
|
Allowed time tolerance (s) for TF transformations. Default: |
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.