🕹️ 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.
- 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 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.
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 velocity allowed. Default: |
|
Max linear velocity allowed. 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: |
|
Topics for velocity commands used in collision checking. Default: |
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.