In an effort to provide new teams a straightforward way to work with the RoboMaster-branded microcontrollers, we created Taproot. Taproot’s goal is to drastically simplify the boilerplate code needed to get a RoboMaster team’s robot up and running. It also improves workflows, tooling, and overall code quality.

This project is designed to be a shared community library that other North America teams contribute to. You can view the library in GitLab. The library currently fully supports the RoboMaster Type A board, and support for the RoboMaster Type C board is in development. This includes support for the following:

  • Drivers for common RoboMaster/DJI hardware:

    • RoboMaster motors connected via CAN: C620, GM3508, GM3510 and others.

    • DR16 Receiver.

    • RoboMaster referee system via UART.

  • An organizational framework and round-robin scheduler taking inspiration from FIRST's wpilib.

  • Common building blocks such as:

    • Setpoint-based subsystems with jam detection logic and calibration.

    • Closed-loop power limiting.

    • Filtering, smoothing, and ramping primitives.

    • Computational helpers for wrapping measurements, such as angles.

  • Built-in error aggregation and reporting via optional UART terminal or OLED display.

  • Monitoring of key subsystems and status information via optional UART terminal or OLED display.

  • First class support for unit and integration testing (no hardware required).

Furthermore, we have comprehensive in-code and wiki style documentation that improves maintainability and reduces hurdles for new programmers, as well as a containerized development environment, an examples repository, and a template repository.

How to get involved?

Other RoboMaster teams are encouraged to utilize this library. We have licensed Taproot and the template project under the GPL to encourage collaboration and open publishing of RoboMaster controls codebases. We politely request that other teams using this library, or parts of it (including writing software inspired by its design), open-source their own code in turn. If you are interested in contributing to Taproot, we recommend opening an issue on our public issue board or joining our Discord, both linked above.