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. :doc:`Comprehensive API ` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - Device signal getters return a :doc:`StatusSignal ` object, expanding the functionality of status signals. - Control devices with an extensive list of flexible, strongly-typed :doc:`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 :doc:`control output types ` and :doc:`closed-loop ` configuration. - Improved :ref:`Motion Magic® ` with jerk control and support for modifying the profile on the fly. - New :ref:`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. :doc:`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 :doc:`odometry performance ` with CANivore and Phoenix Pro. - Tuner X :doc:`Swerve Project Generator ` gets swerve drive up and running quickly. - Built-in high-fidelity :doc:`simulation ` support. Enhanced Support for `CAN FD `__ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - Improved CAN FD framing further reduces any :doc:`CAN bus utilization ` issues. - Larger CAN frames allow for the addition of more advanced features. New Tuner X :doc:`Self Tests ` and :doc:`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 :doc:`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. :ref:`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 :doc:`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 :ref:`torque control `. Time Base Synchronization ^^^^^^^^^^^^^^^^^^^^^^^^^ - Using :ref:`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 ^^^^^^^^^^^^^^ - :ref:`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 :doc:`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 :ref:`custom user signals ` alongside auto-captured data. - Efficient ``hoot`` logging format minimizes disk space and CPU usage. - :doc:`Export to multiple formats ` including WPILOG and MCAP. - Free users can export a :ref:`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 | .. centered:: x | .. centered:: x | .. centered:: x | .. centered:: x | +-------------------------------------------------------------------------------------------------------------------------------+-----------------+-----------------------+----------------------+----------------------------+ | :doc:`Improved Bus Utilization ` | .. centered:: x | .. centered:: x | .. centered:: x | .. centered:: x | +-------------------------------------------------------------------------------------------------------------------------------+-----------------+-----------------------+----------------------+----------------------------+ | :ref:`CANcoder Always Absolute ` | .. centered:: x | .. centered:: x | .. centered:: x | .. centered:: x | +-------------------------------------------------------------------------------------------------------------------------------+-----------------+-----------------------+----------------------+----------------------------+ | Kalman-based Velocity | .. centered:: x | .. centered:: x | .. centered:: x | .. centered:: x | +-------------------------------------------------------------------------------------------------------------------------------+-----------------+-----------------------+----------------------+----------------------------+ | :ref:`Synchronous Wait for Data ` | .. centered:: x | .. centered:: x | .. centered:: x | .. centered:: x | +-------------------------------------------------------------------------------------------------------------------------------+-----------------+-----------------------+----------------------+----------------------------+ | System Timestamps | .. centered:: x | .. centered:: x | .. centered:: x | .. centered:: x | +-------------------------------------------------------------------------------------------------------------------------------+-----------------+-----------------------+----------------------+----------------------------+ | :ref:`Limited Signal Logger WPILOG Export ` | .. centered:: x | .. centered:: x | .. centered:: x | .. centered:: x | +-------------------------------------------------------------------------------------------------------------------------------+-----------------+-----------------------+----------------------+----------------------------+ | :doc:`Explicit Control Requests ` | .. centered:: x | .. centered:: x | .. centered:: x | .. centered:: x | +-------------------------------------------------------------------------------------------------------------------------------+-----------------+-----------------------+----------------------+----------------------------+ | :ref:`Motion Magic® ` | .. centered:: x | .. centered:: x | .. centered:: x | .. centered:: x | +-------------------------------------------------------------------------------------------------------------------------------+-----------------+-----------------------+----------------------+----------------------------+ | :ref:`Motion Magic® Velocity ` | .. centered:: x | .. centered:: x | .. centered:: x | .. centered:: x | +-------------------------------------------------------------------------------------------------------------------------------+-----------------+-----------------------+----------------------+----------------------------+ | :ref:`Motion Magic® Expo ` | .. centered:: x | .. centered:: x | .. centered:: x | .. centered:: x | +-------------------------------------------------------------------------------------------------------------------------------+-----------------+-----------------------+----------------------+----------------------------+ | :ref:`Continuous Wrap Mode ` | .. centered:: x | .. centered:: x | .. centered:: x | .. centered:: x | +-------------------------------------------------------------------------------------------------------------------------------+-----------------+-----------------------+----------------------+----------------------------+ | Simple Differential Control | .. centered:: x | .. centered:: x | .. centered:: x | .. centered:: x | +-------------------------------------------------------------------------------------------------------------------------------+-----------------+-----------------------+----------------------+----------------------------+ | :doc:`Improved Self-Test Snapshot ` | .. centered:: x | .. centered:: x | .. centered:: x | .. centered:: x | +-------------------------------------------------------------------------------------------------------------------------------+-----------------+-----------------------+----------------------+----------------------------+ | :doc:`Improved Tuner X Plotting ` | .. centered:: x | .. centered:: x | .. centered:: x | .. centered:: x | +-------------------------------------------------------------------------------------------------------------------------------+-----------------+-----------------------+----------------------+----------------------------+ | CANivore Timestamps | | | .. centered:: x | .. centered:: x | +-------------------------------------------------------------------------------------------------------------------------------+-----------------+-----------------------+----------------------+----------------------------+ | `CAN FD `__ | | | .. centered:: x | .. centered:: x | +-------------------------------------------------------------------------------------------------------------------------------+-----------------+-----------------------+----------------------+----------------------------+ | :ref:`Field Oriented Control (FOC) ` | | .. centered:: x | | .. centered:: x | +-------------------------------------------------------------------------------------------------------------------------------+-----------------+-----------------------+----------------------+----------------------------+ | :ref:`Fused CANcoder + TalonFX ` | | .. centered:: x | | .. centered:: x | +-------------------------------------------------------------------------------------------------------------------------------+-----------------+-----------------------+----------------------+----------------------------+ | :ref:`Sync CANcoder + Talon FX ` | | .. centered:: x | | .. centered:: x | +-------------------------------------------------------------------------------------------------------------------------------+-----------------+-----------------------+----------------------+----------------------------+ | :doc:`Full Signal Logger Export ` | | .. centered:: x | | .. centered:: x | +-------------------------------------------------------------------------------------------------------------------------------+-----------------+-----------------------+----------------------+----------------------------+ | Signal Logger `MCAP `__ Export | | .. centered:: x | | .. centered:: x | +-------------------------------------------------------------------------------------------------------------------------------+-----------------+-----------------------+----------------------+----------------------------+ | Hoot Log Replay | | .. centered:: x | | .. centered:: x | +-------------------------------------------------------------------------------------------------------------------------------+-----------------+-----------------------+----------------------+----------------------------+ | :ref:`Time-Synced Signal Publishing ` | | | | .. centered:: x | +-------------------------------------------------------------------------------------------------------------------------------+-----------------+-----------------------+----------------------+----------------------------+ | Device Timestamps | | | | .. centered:: x | +-------------------------------------------------------------------------------------------------------------------------------+-----------------+-----------------------+----------------------+----------------------------+ | :ref:`Dynamic Motion Magic® ` | | | | .. centered:: x | +-------------------------------------------------------------------------------------------------------------------------------+-----------------+-----------------------+----------------------+----------------------------+ | Full Differential Control | | | | .. centered:: x | +-------------------------------------------------------------------------------------------------------------------------------+-----------------+-----------------------+----------------------+----------------------------+ | :doc:`Swerve API ` | .. centered:: + | .. centered:: ++ | .. centered:: ++ | .. centered:: +++ | +-------------------------------------------------------------------------------------------------------------------------------+-----------------+-----------------------+----------------------+----------------------------+ .. note:: :sup:`+` 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 :doc:`/docs/application-notes/update-frequency-impact`.