Phoenix 6 Features¶
Phoenix 6 currently offers the following features and will further expand.
Phoenix 6¶
The following features are available for free in the Phoenix 6 API.
Comprehensive API¶
Device signal getters return a StatusSignal object, expanding the functionality of status signals.
Control devices with an extensive list of flexible, strongly-typed control request objects.
Canonical Units¶
Uses the popular C++ units library and standardizes on SI units.
Provides overloads using the Java units library.
Signals are documented with the unit type and the minimum and maximum values.
Improved Device Control¶
New and improved control output types and closed-loop configuration.
Improved Motion Magic® with jerk control and support for modifying the profile on the fly.
New Motion Magic® Expo control to use an exponential profile following system dynamics, reducing both overshoot and time to target.
Kalman-based algorithms to reduce latency while maintaining smooth data.
Swerve API¶
High-performance Swerve API using synchronous, latency-compensated odometry.
Eliminate the boilerplate from copying swerve template code.
Supported in Java, C++, and Python.
Minimized GC impact in Java and Python using native C++ implementation.
Improved odometry performance with CANivore and Phoenix Pro.
Tuner X Swerve Project Generator gets swerve drive up and running quickly.
Built-in high-fidelity simulation support.
Enhanced Support for CAN FD¶
Improved CAN FD framing further reduces any CAN bus utilization issues.
Larger CAN frames allow for the addition of more advanced features.
New Tuner X Self Tests and Plotting¶
Detailed and resolute self tests to improve debugging.
Plot signals at the configured signal update frequency.
Combine multiple signal axes together and customize display of signal plots.
Free High-Fidelity Simulation¶
Simulation closely follows the behavior of real hardware.
Write unit-tests for your robot code, and make sure the robot works before deploying.
Continuous Wrap Mode¶
Takes the shortest path for continuous mechanisms.
Ideal for mechanisms such as Swerve Drive Steer.
Phoenix Pro¶
Certain Phoenix 6 features require the device or CANivore to be Pro licensed. The list of features that require licensing is available below.
Field Oriented Control (FOC)¶
~15% increase in peak power.
Increased torque output; faster acceleration and higher speeds under load.
Greater efficiency; the motor draws less current for the same output power, increasing battery life.
Support for direct torque control.
Time Base Synchronization¶
Using CANivore Timesync, signals from all devices are sampled and published to the CAN bus at the same time.
API can synchronously wait for data from multiple devices on a CANivore to arrive.
Device timestamps captured when the signal is sampled provides best possible latency compensation.
Fused CANcoder¶
Fuse a CANcoder with the motor’s internal rotor, getting absolute data all the time while using the fast internal sensor for closed looping.
Real-Time High-Fidelity Signal Logger¶
Log all status signals from every device with timestamps from CAN.
Data captured as it arrives at the full update rate of the status signals.
Improved sensitivity and accuracy of system identification with WPILib SysId.
Automatically starts logging during an FRC match.
Support for custom user signals alongside auto-captured data.
Efficient
hoot
logging format minimizes disk space and CPU usage.Export to multiple formats including WPILOG and MCAP.
Free users can export a limited set of signals to WPILOG.
Replay Hoot Logs¶
Rerun your robot program in simulation using status signals and custom signals from a
hoot
log generated by the robot.No architecture changes necessary for automatic replay of device status signals.
Robot automatically enables in the correct mode and runs through all maneuvers in the hoot log.
Test code changes such as odometry improvements or failure condition detection and handling.
Support for step timing and changing the speed of playback.
Feature Breakdown¶
A full comparison of features between the free Phoenix 6 API and Phoenix Pro is shown below.
Feature |
Phoenix 6 (rio) |
Phoenix 6 + Pro (rio) |
Phoenix 6 (CANivore) |
Phoenix 6 + Pro (CANivore) |
---|---|---|---|---|
Canonical Units |
x |
x |
x |
x |
x |
x |
x |
x |
|
x |
x |
x |
x |
|
Kalman-based Velocity |
x |
x |
x |
x |
x |
x |
x |
x |
|
System Timestamps |
x |
x |
x |
x |
x |
x |
x |
x |
|
x |
x |
x |
x |
|
x |
x |
x |
x |
|
x |
x |
x |
x |
|
x |
x |
x |
x |
|
x |
x |
x |
x |
|
Simple Differential Control |
x |
x |
x |
x |
x |
x |
x |
x |
|
x |
x |
x |
x |
|
CANivore Timestamps |
x |
x |
||
x |
x |
|||
x |
x |
|||
x |
x |
|||
x |
x |
|||
x |
x |
|||
Signal Logger MCAP Export |
x |
x |
||
Hoot Log Replay |
x |
x |
||
x |
||||
Device Timestamps |
x |
|||
x |
||||
Full Differential Control |
x |
|||
+ |
++ |
++ |
+++ |
Note
+ The Swerve API is freely available; however, performance improves when used on a CANivore bus and further improves when used with Pro devices. For more information, see Factors that Impact Odometry.