ThunderAuto

Description

ThunderAuto is a tool used by FRC teams to create efficient trajectories for autonomous robots to follow. Trajectories created in ThunderAuto can be exported to CSV files which can be easily read from the robot program.

ThunderAuto’s code is hosted on GitHub here.

ThunderAuto Path Editor

Creating a Project

Select the “New Project” button on the Welcome popup, or use the shortcut Ctrl+N.

ThunderAuto New Project Window

Path
The location to save the .thunderauto project and all of the exported .csv files. Somewhere in the deploy folder of the robot project is recommended.
Field
Which field to use. The application is updated with each year's game field every year. To import a custom field image, select Custom and choose an image file.
Controller Type
The type of drivetrain the robot has. Only Holonomic (Swerve) drivebases are currently supported. Ramsete drivebases coming soon.
Robot Length
Length of the robot with bumpers (meters).
Robot Width
Width of the robot with bumpers (meters).

Editing Paths

Pan around with Shift+Left-Click or Middle-Click. Zoom with the scroll wheel.

To reset the view, use the shortcut Ctrl+0, or select View -> Reset View from the top menu bar.

Adding/Removing Points

Ways to add waypoints:

  • Right-click anywhere in the editor to open a context menu:
    • You may add a point to the start/end of the path, or before/after the currently selected point.
  • Double-click the curve to add in a point, or double-click anywhere else to add a point to the closest end of the path.

Ways to remove waypoints:

  • Select a point and press the Delete or Backspace key.
  • Right-click a point and select Delete from the context menu.

ThunderAuto Editor New Point

Point Properties

ThunderAuto Editor Dragging GIF

Points can be selected and dragged around in the editor page.

Point properties such as position, rotation, and heading can be manually edited in the Properties page.

If the Stop checkbox is checked, the robot will decelerate to a stop at that waypoint. When stopped, the point’s incoming and outgoing headings can differ.

Linking Points

ThunderAuto Properties

The position of waypoints can be linked together in the properties page. Open the waypoint link popup by clicking the link icon next to a corresponding waypoint. In the popup, you can create a named link or select an existing link.

Links are useful when creating sequential paths that share endpoints.

Point Actions

Actions can be assigned to waypoints in the Properties page. Actions are simply flags that can be checked on/off for each waypoint. Actions can be used in the robot program to trigger certain behaviors.

Reversing Paths

Reverse a path in the top menu bar, or by right-clicking a path in the path manager page.

Constraints

Constrain the robot’s maximum linear acceleration, linear velocity, and centripetal acceleration in the properties page.

Managing Paths

ThunderAuto Path Manager Page Paths can be created, renamed, duplicated, and deleted in the Path Manager page.

Double-click a path to rename it. Right-click a path to duplicate or delete it.

Exporting Paths

Export individual paths in the Properties page, or export all paths with the menu bar button.

CSV Format

Paths are exported to CSV files in the project’s directory. Each CSV file shares the name of the path it corresponds to.

The CSV file contains the following columns:

  1. Time (s)
  2. X Position (m)
  3. Y Position (m)
  4. Velocity (m/s)
  5. Rotation (rad)
  6. Action (bit field)

For reading the CSV from a robot program, see 1511’s 2023 robot code here.

Building from Source

ThunderAuto uses CMake to generate build files. To build ThunderAuto from source, follow these steps:

  1. Clone the repository
    git clone https://github.com/frc1511/ThunderAuto
    cd ThunderAuto
    
  2. Update submodules
    git submodule init
    git submodule update
    
  3. Configure the project

    For Windows, ThunderAuto supports both DirectX11 and OpenGL backends. DirectX11 is the default, but you can switch to OpenGL by setting the TH_OPENGL CMake option to ON.

     cmake . -B build
    
  4. Build the project
    cmake --build build
    

Rolling Thunder Programming Subteam - The Greatest Subteam on 1511