1 minute read

This final week was focused on doing more testing and creating a new demo with 2 new standard library entries.

Obstacle Avoidance Demo

To continue on the testing of the new BT Studio and all of the changes done during this GSoC I tried solving another exercise from Robotics Academy, called Obstacle Avoidance, using Behavior Trees.

The reason to chose this exercise was that the VFF algorithym can be used to solve multiple robotics problems. So creating this demo will also increase the size of the standard library.

The exercise consist of going from point to point inside the circuit without crashing with the other cars or the walls. The circuit for this demo is Obstacle Avoidance Default.

After deciding on the world I focused on the design of the Behavior Tree. For that I decided that a sequence of 2 subtrees would be enough to solve it. The subtrees were:

  • VFF: responsible for calculating the speed that the robot will need to reach the target without crashing into any obstacles using laser.
  • SetSpeed: responsible for setting the speed of the robot.

For the actions I used 4 different ones:

  • GoalVFF: generates the Virtual Force Vector towards the goal, being each goal a point inside the circuit.
  • ObstacleVFF: generates the Virtual Force Vector of the obstacles using laser.
  • FinalVFF: calculates the final speed of the robot combining the forces from GoalVFF and ObstacleVFF.
  • SendSpeed: reads the linear and angular speed from FinalVFF and sends it to the car using the topic passed to the action (/cmd_vel).

New standard library entries

Using the subtrees from the Warehouse demo as the base I added 4 new entries to the standard library:

VFF

Used for calculating the desired speed to reach the target without crashing into any obstacles. That target is defined inside GoalVFF.

For more information please visit this link.

VFF

SetSpeed

Used for moving the robot to a given point.

SetSpeed

Github Pull Request

Repositories in use