Goal - Make Pepper go somewhere. The robot will try to reach safely the target location, while avoiding obstacles.
Typical usage - You want Pepper to find a path to reach a target location.
How it works¶
Defining a target frame¶
GoTo, the pattern is:
|Define the target location by retrieving or calculating a Frame.|
Tuning GoTo behavior¶
When building the GoTo, it is possible to specify some parameters that will affect the GoTo Action running behavior. One can specify:
- the path planning policy,
- the final orientation policy,
- a maximum navigating speed.
Path Planning Policy
GET_AROUND_OBSTACLESpolicy (default): the robot computes and follows the path that is the most likely to reach the target, he may follow non-straight paths around obstacles.
STRAIGHT_LINES_ONLYpolicy: the robot first aligns with the target then goes straight to it. If there is an obstacle in his way, he stops and does not try to go around it.
Final Orientation Policy
FREE_ORIENTATIONpolicy (default): the GoTo does not control the robot final orientation, it will only try to reach the target frame 2D position.
ALIGN_Xpolicy: the GoTo finishes by aligning the robot frame X-Axis with the target frame X-Axis.
Maximum Navigating Speed
One can specify a maximum navigating speed in m/s. There is no guarantee that the robot will reach that speed, only that it will not go faster than the specified maximum speed. By default, the robot will not go faster than 0.35 m/s.
Make the robot go straight to a target, at 0.55 m/s, and align with the target X-axis at the end.
Move to a static target¶
You want Pepper to reach the point located one meter in front of him.
Retrieve the robot frame and define the target location relatively to Pepper current location:
Performance & Limitations¶
Pepper is able to avoid obstacles while moving to a specific location. If there are obstacles on his way, he will try to get around them to reach his destination.
Need for error handling¶
Many elements of the environment are likely to disturb the robot and cause GoTo execution errors:
- brightness which disturbs the sensors,
- obstacles impossible to overcome,
- uneven ground,
- humans or animals which form temporary obstacles, etc.
Knowing that, the developer must handle the occurrence of an error and determine, according to the use case, if the robot should abandon the task and express his current issue, or try again, and for how long or until which result.