filmov
tv
Improved trajectory (w/ obstacle routing)

Показать описание
One arbitrary day, a bunch of us from the Multi Rotor Society in SUTD (Singapore University of Technology and Design) chanced upon the F1tenth Virtual Autonomous Racing event that was to be held in conjunction with IROS (International Conference on Intelligent Robots and Systems).
We decided to approach it hackathon style in an attempt to complete it between after dinner after our Dynamics mid-term paper (about 2200) and the submission deadline (0800 the next day).
Alas, it didn't go great as most of us were too sleepy to function. While we did complete the main objectives, we never managed to validate the obstacle avoidance function in the actual simulator. There was also much confusion amongst the team about how to submit our product (not resolved at point of writing).
In any case, this video showcases our main approach to the problem, which was based on processing an image of the circuit. The pipeline is as follows:
1. Load and threshold image to obtain binary image representing track extents
2. Erode track extents as a safety buffer (image is a scaled representation and will suffer from issues stemming from discretization)
3. Obtain Sobel derivatives axis-wise, computing overall gradient. Additionally, wrap the gradient between 0 and 180 degrees. We do not yet know the direction of flow of the vehicle.
4. Use in-painting (Telea) to interpolate between track extents
5. Apply a Gaussian Blur to smoothen artifacts from interpolation, especially around corners
6. Mask with the original binary image to ensure track extents are preserved (the eventual direction vectors are visualized in HSV in this video)
7. The agent retrieves the track direction at the current position and searches for the longest horizon within a slight angle variation. This accomplishes 2 things: a. reduces chances of wall/obstacle collision as horizon would be short in this case b. preferentially selects straight paths through series of curves where possible.
This visualization respects the maximum speed of the agent and the need to slow down with the shortening of the horizon (indicating obstacle or track curvature).
The time taken by the agent to complete 1 lap of this circuit is approximately 65 seconds, which would have placed amongst the top 8 on the qualifying leaderboard (available at link below).
Furthermore, by precomputing all movement vectors, what we are left to do would be to retrieve these vectors and factor in only highly local obstacles indicating the presence of an opposing agent, greatly reducing computational load/time.
In any case, it was a fun exercise in what is possibly the last competition I will be doing with this club!
Team members: Kenneth (myself), Amos Sim, Ryan Lim, Tan Weiheng
We decided to approach it hackathon style in an attempt to complete it between after dinner after our Dynamics mid-term paper (about 2200) and the submission deadline (0800 the next day).
Alas, it didn't go great as most of us were too sleepy to function. While we did complete the main objectives, we never managed to validate the obstacle avoidance function in the actual simulator. There was also much confusion amongst the team about how to submit our product (not resolved at point of writing).
In any case, this video showcases our main approach to the problem, which was based on processing an image of the circuit. The pipeline is as follows:
1. Load and threshold image to obtain binary image representing track extents
2. Erode track extents as a safety buffer (image is a scaled representation and will suffer from issues stemming from discretization)
3. Obtain Sobel derivatives axis-wise, computing overall gradient. Additionally, wrap the gradient between 0 and 180 degrees. We do not yet know the direction of flow of the vehicle.
4. Use in-painting (Telea) to interpolate between track extents
5. Apply a Gaussian Blur to smoothen artifacts from interpolation, especially around corners
6. Mask with the original binary image to ensure track extents are preserved (the eventual direction vectors are visualized in HSV in this video)
7. The agent retrieves the track direction at the current position and searches for the longest horizon within a slight angle variation. This accomplishes 2 things: a. reduces chances of wall/obstacle collision as horizon would be short in this case b. preferentially selects straight paths through series of curves where possible.
This visualization respects the maximum speed of the agent and the need to slow down with the shortening of the horizon (indicating obstacle or track curvature).
The time taken by the agent to complete 1 lap of this circuit is approximately 65 seconds, which would have placed amongst the top 8 on the qualifying leaderboard (available at link below).
Furthermore, by precomputing all movement vectors, what we are left to do would be to retrieve these vectors and factor in only highly local obstacles indicating the presence of an opposing agent, greatly reducing computational load/time.
In any case, it was a fun exercise in what is possibly the last competition I will be doing with this club!
Team members: Kenneth (myself), Amos Sim, Ryan Lim, Tan Weiheng