Loading [MathJax]/extensions/tex2jax.js
CTRE Phoenix 6 C++ 25.4.0
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
HasTalonControls.hpp
Go to the documentation of this file.
1/*
2 * Copyright (C) Cross The Road Electronics.  All rights reserved.
3 * License information can be found in CTRE_LICENSE.txt
4 * For support and suggestions contact support@ctr-electronics.com or file
5 * an issue tracker at https://github.com/CrossTheRoadElec/Phoenix-Releases
6 */
7#pragma once
8
57
58
59namespace ctre {
60namespace phoenix6 {
61namespace hardware {
62namespace traits {
63
64/**
65 * Contains all control functions available for devices that support Talon
66 * controls.
67 */
69{
70public:
71 virtual ~HasTalonControls() = default;
72
73
74 /**
75 * \brief Request a specified motor duty cycle.
76 *
77 * \details This control mode will output a proportion of the supplied
78 * voltage which is supplied by the user.
79 *
80 * - DutyCycleOut Parameters:
81 * - Output: Proportion of supply voltage to apply in fractional units between -1
82 * and +1
83 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
84 * increases peak power by ~15% on supported devices (see
85 * hardware#traits#SupportsFOC). Set to false to use trapezoidal
86 * commutation.
87 *
88 * FOC improves motor performance by leveraging torque (current)
89 * control. However, this may be inconvenient for applications that
90 * require specifying duty cycle or voltage. CTR-Electronics has
91 * developed a hybrid method that combines the performances gains of
92 * FOC while still allowing applications to provide duty cycle or
93 * voltage demand. This not to be confused with simple sinusoidal
94 * control or phase voltage control which lacks the performance
95 * gains.
96 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
97 * is zero (or within deadband). Set to false to use
98 * the NeutralMode configuration setting (default).
99 * This flag exists to provide the fundamental
100 * behavior of this control when output is zero, which
101 * is to provide 0V to the motor.
102 * - LimitForwardMotion: Set to true to force forward limiting. This allows
103 * users to use other limit switch sensors connected to
104 * robot controller. This also allows use of active
105 * sensors that require external power.
106 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
107 * users to use other limit switch sensors connected to
108 * robot controller. This also allows use of active
109 * sensors that require external power.
110 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
111 * LimitForwardMotion and LimitReverseMotion parameters,
112 * instead allowing motion.
113 *
114 * This can be useful on mechanisms such as an
115 * intake/feeder, where a limit switch stops motion while
116 * intaking but should be ignored when feeding to a
117 * shooter.
118 *
119 * The hardware limit faults and Forward/ReverseLimit
120 * signals will still report the values of the limit
121 * switches regardless of this parameter.
122 * - UseTimesync: Set to true to delay applying this control request until a
123 * timesync boundary (requires Phoenix Pro and CANivore). This
124 * eliminates the impact of nondeterministic network delays in
125 * exchange for a larger but deterministic control latency.
126 *
127 * This requires setting the ControlTimesyncFreqHz config in
128 * MotorOutputConfigs. Additionally, when this is enabled, the
129 * UpdateFreqHz of this request should be set to 0 Hz.
130 *
131 * \param request Control object to request of the device
132 * \returns Status Code of the request, 0 is OK
133 */
135
136 /**
137 * \brief Request a specified voltage.
138 *
139 * \details This control mode will attempt to apply the specified
140 * voltage to the motor. If the supply voltage is below the requested
141 * voltage, the motor controller will output the supply voltage.
142 *
143 * - VoltageOut Parameters:
144 * - Output: Voltage to attempt to drive at
145 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
146 * increases peak power by ~15% on supported devices (see
147 * hardware#traits#SupportsFOC). Set to false to use trapezoidal
148 * commutation.
149 *
150 * FOC improves motor performance by leveraging torque (current)
151 * control. However, this may be inconvenient for applications that
152 * require specifying duty cycle or voltage. CTR-Electronics has
153 * developed a hybrid method that combines the performances gains of
154 * FOC while still allowing applications to provide duty cycle or
155 * voltage demand. This not to be confused with simple sinusoidal
156 * control or phase voltage control which lacks the performance
157 * gains.
158 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
159 * is zero (or within deadband). Set to false to use
160 * the NeutralMode configuration setting (default).
161 * This flag exists to provide the fundamental
162 * behavior of this control when output is zero, which
163 * is to provide 0V to the motor.
164 * - LimitForwardMotion: Set to true to force forward limiting. This allows
165 * users to use other limit switch sensors connected to
166 * robot controller. This also allows use of active
167 * sensors that require external power.
168 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
169 * users to use other limit switch sensors connected to
170 * robot controller. This also allows use of active
171 * sensors that require external power.
172 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
173 * LimitForwardMotion and LimitReverseMotion parameters,
174 * instead allowing motion.
175 *
176 * This can be useful on mechanisms such as an
177 * intake/feeder, where a limit switch stops motion while
178 * intaking but should be ignored when feeding to a
179 * shooter.
180 *
181 * The hardware limit faults and Forward/ReverseLimit
182 * signals will still report the values of the limit
183 * switches regardless of this parameter.
184 * - UseTimesync: Set to true to delay applying this control request until a
185 * timesync boundary (requires Phoenix Pro and CANivore). This
186 * eliminates the impact of nondeterministic network delays in
187 * exchange for a larger but deterministic control latency.
188 *
189 * This requires setting the ControlTimesyncFreqHz config in
190 * MotorOutputConfigs. Additionally, when this is enabled, the
191 * UpdateFreqHz of this request should be set to 0 Hz.
192 *
193 * \param request Control object to request of the device
194 * \returns Status Code of the request, 0 is OK
195 */
197
198 /**
199 * \brief Request PID to target position with duty cycle feedforward.
200 *
201 * \details This control mode will set the motor's position setpoint
202 * to the position specified by the user. In addition, it will apply
203 * an additional duty cycle as an arbitrary feedforward value.
204 *
205 * - PositionDutyCycle Parameters:
206 * - Position: Position to drive toward in rotations.
207 * - Velocity: Velocity to drive toward in rotations per second. This is
208 * typically used for motion profiles generated by the robot program.
209 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
210 * increases peak power by ~15% on supported devices (see
211 * hardware#traits#SupportsFOC). Set to false to use trapezoidal
212 * commutation.
213 *
214 * FOC improves motor performance by leveraging torque (current)
215 * control. However, this may be inconvenient for applications that
216 * require specifying duty cycle or voltage. CTR-Electronics has
217 * developed a hybrid method that combines the performances gains of
218 * FOC while still allowing applications to provide duty cycle or
219 * voltage demand. This not to be confused with simple sinusoidal
220 * control or phase voltage control which lacks the performance
221 * gains.
222 * - FeedForward: Feedforward to apply in fractional units between -1 and +1.
223 * - Slot: Select which gains are applied by selecting the slot. Use the
224 * configuration api to set the gain values for the selected slot before
225 * enabling this feature. Slot must be within [0,2].
226 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
227 * is zero (or within deadband). Set to false to use
228 * the NeutralMode configuration setting (default).
229 * This flag exists to provide the fundamental
230 * behavior of this control when output is zero, which
231 * is to provide 0V to the motor.
232 * - LimitForwardMotion: Set to true to force forward limiting. This allows
233 * users to use other limit switch sensors connected to
234 * robot controller. This also allows use of active
235 * sensors that require external power.
236 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
237 * users to use other limit switch sensors connected to
238 * robot controller. This also allows use of active
239 * sensors that require external power.
240 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
241 * LimitForwardMotion and LimitReverseMotion parameters,
242 * instead allowing motion.
243 *
244 * This can be useful on mechanisms such as an
245 * intake/feeder, where a limit switch stops motion while
246 * intaking but should be ignored when feeding to a
247 * shooter.
248 *
249 * The hardware limit faults and Forward/ReverseLimit
250 * signals will still report the values of the limit
251 * switches regardless of this parameter.
252 * - UseTimesync: Set to true to delay applying this control request until a
253 * timesync boundary (requires Phoenix Pro and CANivore). This
254 * eliminates the impact of nondeterministic network delays in
255 * exchange for a larger but deterministic control latency.
256 *
257 * This requires setting the ControlTimesyncFreqHz config in
258 * MotorOutputConfigs. Additionally, when this is enabled, the
259 * UpdateFreqHz of this request should be set to 0 Hz.
260 *
261 * \param request Control object to request of the device
262 * \returns Status Code of the request, 0 is OK
263 */
265
266 /**
267 * \brief Request PID to target position with voltage feedforward
268 *
269 * \details This control mode will set the motor's position setpoint
270 * to the position specified by the user. In addition, it will apply
271 * an additional voltage as an arbitrary feedforward value.
272 *
273 * - PositionVoltage Parameters:
274 * - Position: Position to drive toward in rotations.
275 * - Velocity: Velocity to drive toward in rotations per second. This is
276 * typically used for motion profiles generated by the robot program.
277 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
278 * increases peak power by ~15% on supported devices (see
279 * hardware#traits#SupportsFOC). Set to false to use trapezoidal
280 * commutation.
281 *
282 * FOC improves motor performance by leveraging torque (current)
283 * control. However, this may be inconvenient for applications that
284 * require specifying duty cycle or voltage. CTR-Electronics has
285 * developed a hybrid method that combines the performances gains of
286 * FOC while still allowing applications to provide duty cycle or
287 * voltage demand. This not to be confused with simple sinusoidal
288 * control or phase voltage control which lacks the performance
289 * gains.
290 * - FeedForward: Feedforward to apply in volts
291 * - Slot: Select which gains are applied by selecting the slot. Use the
292 * configuration api to set the gain values for the selected slot before
293 * enabling this feature. Slot must be within [0,2].
294 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
295 * is zero (or within deadband). Set to false to use
296 * the NeutralMode configuration setting (default).
297 * This flag exists to provide the fundamental
298 * behavior of this control when output is zero, which
299 * is to provide 0V to the motor.
300 * - LimitForwardMotion: Set to true to force forward limiting. This allows
301 * users to use other limit switch sensors connected to
302 * robot controller. This also allows use of active
303 * sensors that require external power.
304 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
305 * users to use other limit switch sensors connected to
306 * robot controller. This also allows use of active
307 * sensors that require external power.
308 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
309 * LimitForwardMotion and LimitReverseMotion parameters,
310 * instead allowing motion.
311 *
312 * This can be useful on mechanisms such as an
313 * intake/feeder, where a limit switch stops motion while
314 * intaking but should be ignored when feeding to a
315 * shooter.
316 *
317 * The hardware limit faults and Forward/ReverseLimit
318 * signals will still report the values of the limit
319 * switches regardless of this parameter.
320 * - UseTimesync: Set to true to delay applying this control request until a
321 * timesync boundary (requires Phoenix Pro and CANivore). This
322 * eliminates the impact of nondeterministic network delays in
323 * exchange for a larger but deterministic control latency.
324 *
325 * This requires setting the ControlTimesyncFreqHz config in
326 * MotorOutputConfigs. Additionally, when this is enabled, the
327 * UpdateFreqHz of this request should be set to 0 Hz.
328 *
329 * \param request Control object to request of the device
330 * \returns Status Code of the request, 0 is OK
331 */
333
334 /**
335 * \brief Request PID to target velocity with duty cycle feedforward.
336 *
337 * \details This control mode will set the motor's velocity setpoint
338 * to the velocity specified by the user. In addition, it will apply
339 * an additional voltage as an arbitrary feedforward value.
340 *
341 * - VelocityDutyCycle Parameters:
342 * - Velocity: Velocity to drive toward in rotations per second.
343 * - Acceleration: Acceleration to drive toward in rotations per second squared.
344 * This is typically used for motion profiles generated by the
345 * robot program.
346 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
347 * increases peak power by ~15% on supported devices (see
348 * hardware#traits#SupportsFOC). Set to false to use trapezoidal
349 * commutation.
350 *
351 * FOC improves motor performance by leveraging torque (current)
352 * control. However, this may be inconvenient for applications that
353 * require specifying duty cycle or voltage. CTR-Electronics has
354 * developed a hybrid method that combines the performances gains of
355 * FOC while still allowing applications to provide duty cycle or
356 * voltage demand. This not to be confused with simple sinusoidal
357 * control or phase voltage control which lacks the performance
358 * gains.
359 * - FeedForward: Feedforward to apply in fractional units between -1 and +1.
360 * - Slot: Select which gains are applied by selecting the slot. Use the
361 * configuration api to set the gain values for the selected slot before
362 * enabling this feature. Slot must be within [0,2].
363 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
364 * is zero (or within deadband). Set to false to use
365 * the NeutralMode configuration setting (default).
366 * This flag exists to provide the fundamental
367 * behavior of this control when output is zero, which
368 * is to provide 0V to the motor.
369 * - LimitForwardMotion: Set to true to force forward limiting. This allows
370 * users to use other limit switch sensors connected to
371 * robot controller. This also allows use of active
372 * sensors that require external power.
373 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
374 * users to use other limit switch sensors connected to
375 * robot controller. This also allows use of active
376 * sensors that require external power.
377 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
378 * LimitForwardMotion and LimitReverseMotion parameters,
379 * instead allowing motion.
380 *
381 * This can be useful on mechanisms such as an
382 * intake/feeder, where a limit switch stops motion while
383 * intaking but should be ignored when feeding to a
384 * shooter.
385 *
386 * The hardware limit faults and Forward/ReverseLimit
387 * signals will still report the values of the limit
388 * switches regardless of this parameter.
389 * - UseTimesync: Set to true to delay applying this control request until a
390 * timesync boundary (requires Phoenix Pro and CANivore). This
391 * eliminates the impact of nondeterministic network delays in
392 * exchange for a larger but deterministic control latency.
393 *
394 * This requires setting the ControlTimesyncFreqHz config in
395 * MotorOutputConfigs. Additionally, when this is enabled, the
396 * UpdateFreqHz of this request should be set to 0 Hz.
397 *
398 * \param request Control object to request of the device
399 * \returns Status Code of the request, 0 is OK
400 */
402
403 /**
404 * \brief Request PID to target velocity with voltage feedforward.
405 *
406 * \details This control mode will set the motor's velocity setpoint
407 * to the velocity specified by the user. In addition, it will apply
408 * an additional voltage as an arbitrary feedforward value.
409 *
410 * - VelocityVoltage Parameters:
411 * - Velocity: Velocity to drive toward in rotations per second.
412 * - Acceleration: Acceleration to drive toward in rotations per second squared.
413 * This is typically used for motion profiles generated by the
414 * robot program.
415 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
416 * increases peak power by ~15% on supported devices (see
417 * hardware#traits#SupportsFOC). Set to false to use trapezoidal
418 * commutation.
419 *
420 * FOC improves motor performance by leveraging torque (current)
421 * control. However, this may be inconvenient for applications that
422 * require specifying duty cycle or voltage. CTR-Electronics has
423 * developed a hybrid method that combines the performances gains of
424 * FOC while still allowing applications to provide duty cycle or
425 * voltage demand. This not to be confused with simple sinusoidal
426 * control or phase voltage control which lacks the performance
427 * gains.
428 * - FeedForward: Feedforward to apply in volts
429 * - Slot: Select which gains are applied by selecting the slot. Use the
430 * configuration api to set the gain values for the selected slot before
431 * enabling this feature. Slot must be within [0,2].
432 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
433 * is zero (or within deadband). Set to false to use
434 * the NeutralMode configuration setting (default).
435 * This flag exists to provide the fundamental
436 * behavior of this control when output is zero, which
437 * is to provide 0V to the motor.
438 * - LimitForwardMotion: Set to true to force forward limiting. This allows
439 * users to use other limit switch sensors connected to
440 * robot controller. This also allows use of active
441 * sensors that require external power.
442 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
443 * users to use other limit switch sensors connected to
444 * robot controller. This also allows use of active
445 * sensors that require external power.
446 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
447 * LimitForwardMotion and LimitReverseMotion parameters,
448 * instead allowing motion.
449 *
450 * This can be useful on mechanisms such as an
451 * intake/feeder, where a limit switch stops motion while
452 * intaking but should be ignored when feeding to a
453 * shooter.
454 *
455 * The hardware limit faults and Forward/ReverseLimit
456 * signals will still report the values of the limit
457 * switches regardless of this parameter.
458 * - UseTimesync: Set to true to delay applying this control request until a
459 * timesync boundary (requires Phoenix Pro and CANivore). This
460 * eliminates the impact of nondeterministic network delays in
461 * exchange for a larger but deterministic control latency.
462 *
463 * This requires setting the ControlTimesyncFreqHz config in
464 * MotorOutputConfigs. Additionally, when this is enabled, the
465 * UpdateFreqHz of this request should be set to 0 Hz.
466 *
467 * \param request Control object to request of the device
468 * \returns Status Code of the request, 0 is OK
469 */
471
472 /**
473 * \brief Requests Motion Magic® to target a final position using a
474 * motion profile. Users can optionally provide a duty cycle
475 * feedforward.
476 *
477 * \details Motion Magic® produces a motion profile in real-time while
478 * attempting to honor the Cruise Velocity, Acceleration, and
479 * (optional) Jerk specified via the Motion Magic® configuration
480 * values. This control mode does not use the Expo_kV or Expo_kA
481 * configs.
482 *
483 * Target position can be changed on-the-fly and Motion Magic® will do
484 * its best to adjust the profile. This control mode is duty cycle
485 * based, so relevant closed-loop gains will use fractional duty cycle
486 * for the numerator: +1.0 represents full forward output.
487 *
488 * - MotionMagicDutyCycle Parameters:
489 * - Position: Position to drive toward in rotations.
490 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
491 * increases peak power by ~15% on supported devices (see
492 * hardware#traits#SupportsFOC). Set to false to use trapezoidal
493 * commutation.
494 *
495 * FOC improves motor performance by leveraging torque (current)
496 * control. However, this may be inconvenient for applications that
497 * require specifying duty cycle or voltage. CTR-Electronics has
498 * developed a hybrid method that combines the performances gains of
499 * FOC while still allowing applications to provide duty cycle or
500 * voltage demand. This not to be confused with simple sinusoidal
501 * control or phase voltage control which lacks the performance
502 * gains.
503 * - FeedForward: Feedforward to apply in fractional units between -1 and +1.
504 * - Slot: Select which gains are applied by selecting the slot. Use the
505 * configuration api to set the gain values for the selected slot before
506 * enabling this feature. Slot must be within [0,2].
507 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
508 * is zero (or within deadband). Set to false to use
509 * the NeutralMode configuration setting (default).
510 * This flag exists to provide the fundamental
511 * behavior of this control when output is zero, which
512 * is to provide 0V to the motor.
513 * - LimitForwardMotion: Set to true to force forward limiting. This allows
514 * users to use other limit switch sensors connected to
515 * robot controller. This also allows use of active
516 * sensors that require external power.
517 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
518 * users to use other limit switch sensors connected to
519 * robot controller. This also allows use of active
520 * sensors that require external power.
521 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
522 * LimitForwardMotion and LimitReverseMotion parameters,
523 * instead allowing motion.
524 *
525 * This can be useful on mechanisms such as an
526 * intake/feeder, where a limit switch stops motion while
527 * intaking but should be ignored when feeding to a
528 * shooter.
529 *
530 * The hardware limit faults and Forward/ReverseLimit
531 * signals will still report the values of the limit
532 * switches regardless of this parameter.
533 * - UseTimesync: Set to true to delay applying this control request until a
534 * timesync boundary (requires Phoenix Pro and CANivore). This
535 * eliminates the impact of nondeterministic network delays in
536 * exchange for a larger but deterministic control latency.
537 *
538 * This requires setting the ControlTimesyncFreqHz config in
539 * MotorOutputConfigs. Additionally, when this is enabled, the
540 * UpdateFreqHz of this request should be set to 0 Hz.
541 *
542 * \param request Control object to request of the device
543 * \returns Status Code of the request, 0 is OK
544 */
546
547 /**
548 * \brief Requests Motion Magic® to target a final position using a
549 * motion profile. Users can optionally provide a voltage
550 * feedforward.
551 *
552 * \details Motion Magic® produces a motion profile in real-time while
553 * attempting to honor the Cruise Velocity, Acceleration, and
554 * (optional) Jerk specified via the Motion Magic® configuration
555 * values. This control mode does not use the Expo_kV or Expo_kA
556 * configs.
557 *
558 * Target position can be changed on-the-fly and Motion Magic® will do
559 * its best to adjust the profile. This control mode is
560 * voltage-based, so relevant closed-loop gains will use Volts for the
561 * numerator.
562 *
563 * - MotionMagicVoltage Parameters:
564 * - Position: Position to drive toward in rotations.
565 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
566 * increases peak power by ~15% on supported devices (see
567 * hardware#traits#SupportsFOC). Set to false to use trapezoidal
568 * commutation.
569 *
570 * FOC improves motor performance by leveraging torque (current)
571 * control. However, this may be inconvenient for applications that
572 * require specifying duty cycle or voltage. CTR-Electronics has
573 * developed a hybrid method that combines the performances gains of
574 * FOC while still allowing applications to provide duty cycle or
575 * voltage demand. This not to be confused with simple sinusoidal
576 * control or phase voltage control which lacks the performance
577 * gains.
578 * - FeedForward: Feedforward to apply in volts
579 * - Slot: Select which gains are applied by selecting the slot. Use the
580 * configuration api to set the gain values for the selected slot before
581 * enabling this feature. Slot must be within [0,2].
582 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
583 * is zero (or within deadband). Set to false to use
584 * the NeutralMode configuration setting (default).
585 * This flag exists to provide the fundamental
586 * behavior of this control when output is zero, which
587 * is to provide 0V to the motor.
588 * - LimitForwardMotion: Set to true to force forward limiting. This allows
589 * users to use other limit switch sensors connected to
590 * robot controller. This also allows use of active
591 * sensors that require external power.
592 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
593 * users to use other limit switch sensors connected to
594 * robot controller. This also allows use of active
595 * sensors that require external power.
596 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
597 * LimitForwardMotion and LimitReverseMotion parameters,
598 * instead allowing motion.
599 *
600 * This can be useful on mechanisms such as an
601 * intake/feeder, where a limit switch stops motion while
602 * intaking but should be ignored when feeding to a
603 * shooter.
604 *
605 * The hardware limit faults and Forward/ReverseLimit
606 * signals will still report the values of the limit
607 * switches regardless of this parameter.
608 * - UseTimesync: Set to true to delay applying this control request until a
609 * timesync boundary (requires Phoenix Pro and CANivore). This
610 * eliminates the impact of nondeterministic network delays in
611 * exchange for a larger but deterministic control latency.
612 *
613 * This requires setting the ControlTimesyncFreqHz config in
614 * MotorOutputConfigs. Additionally, when this is enabled, the
615 * UpdateFreqHz of this request should be set to 0 Hz.
616 *
617 * \param request Control object to request of the device
618 * \returns Status Code of the request, 0 is OK
619 */
621
622 /**
623 * \brief Requests Motion Magic® to target a final velocity using a
624 * motion profile. This allows smooth transitions between velocity
625 * set points. Users can optionally provide a duty cycle feedforward.
626 *
627 * \details Motion Magic® Velocity produces a motion profile in
628 * real-time while attempting to honor the specified Acceleration and
629 * (optional) Jerk. This control mode does not use the
630 * CruiseVelocity, Expo_kV, or Expo_kA configs.
631 *
632 * If the specified acceleration is zero, the Acceleration under
633 * Motion Magic® configuration parameter is used instead. This allows
634 * for runtime adjustment of acceleration for advanced users. Jerk is
635 * also specified in the Motion Magic® persistent configuration
636 * values. If Jerk is set to zero, Motion Magic® will produce a
637 * trapezoidal acceleration profile.
638 *
639 * Target velocity can also be changed on-the-fly and Motion Magic®
640 * will do its best to adjust the profile. This control mode is duty
641 * cycle based, so relevant closed-loop gains will use fractional duty
642 * cycle for the numerator: +1.0 represents full forward output.
643 *
644 * - MotionMagicVelocityDutyCycle Parameters:
645 * - Velocity: Target velocity to drive toward in rotations per second. This can
646 * be changed on-the fly.
647 * - Acceleration: This is the absolute Acceleration to use generating the
648 * profile. If this parameter is zero, the Acceleration
649 * persistent configuration parameter is used instead.
650 * Acceleration is in rotations per second squared. If nonzero,
651 * the signage does not matter as the absolute value is used.
652 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
653 * increases peak power by ~15% on supported devices (see
654 * hardware#traits#SupportsFOC). Set to false to use trapezoidal
655 * commutation.
656 *
657 * FOC improves motor performance by leveraging torque (current)
658 * control. However, this may be inconvenient for applications that
659 * require specifying duty cycle or voltage. CTR-Electronics has
660 * developed a hybrid method that combines the performances gains of
661 * FOC while still allowing applications to provide duty cycle or
662 * voltage demand. This not to be confused with simple sinusoidal
663 * control or phase voltage control which lacks the performance
664 * gains.
665 * - FeedForward: Feedforward to apply in fractional units between -1 and +1.
666 * - Slot: Select which gains are applied by selecting the slot. Use the
667 * configuration api to set the gain values for the selected slot before
668 * enabling this feature. Slot must be within [0,2].
669 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
670 * is zero (or within deadband). Set to false to use
671 * the NeutralMode configuration setting (default).
672 * This flag exists to provide the fundamental
673 * behavior of this control when output is zero, which
674 * is to provide 0V to the motor.
675 * - LimitForwardMotion: Set to true to force forward limiting. This allows
676 * users to use other limit switch sensors connected to
677 * robot controller. This also allows use of active
678 * sensors that require external power.
679 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
680 * users to use other limit switch sensors connected to
681 * robot controller. This also allows use of active
682 * sensors that require external power.
683 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
684 * LimitForwardMotion and LimitReverseMotion parameters,
685 * instead allowing motion.
686 *
687 * This can be useful on mechanisms such as an
688 * intake/feeder, where a limit switch stops motion while
689 * intaking but should be ignored when feeding to a
690 * shooter.
691 *
692 * The hardware limit faults and Forward/ReverseLimit
693 * signals will still report the values of the limit
694 * switches regardless of this parameter.
695 * - UseTimesync: Set to true to delay applying this control request until a
696 * timesync boundary (requires Phoenix Pro and CANivore). This
697 * eliminates the impact of nondeterministic network delays in
698 * exchange for a larger but deterministic control latency.
699 *
700 * This requires setting the ControlTimesyncFreqHz config in
701 * MotorOutputConfigs. Additionally, when this is enabled, the
702 * UpdateFreqHz of this request should be set to 0 Hz.
703 *
704 * \param request Control object to request of the device
705 * \returns Status Code of the request, 0 is OK
706 */
708
709 /**
710 * \brief Requests Motion Magic® to target a final velocity using a
711 * motion profile. This allows smooth transitions between velocity
712 * set points. Users can optionally provide a voltage feedforward.
713 *
714 * \details Motion Magic® Velocity produces a motion profile in
715 * real-time while attempting to honor the specified Acceleration and
716 * (optional) Jerk. This control mode does not use the
717 * CruiseVelocity, Expo_kV, or Expo_kA configs.
718 *
719 * If the specified acceleration is zero, the Acceleration under
720 * Motion Magic® configuration parameter is used instead. This allows
721 * for runtime adjustment of acceleration for advanced users. Jerk is
722 * also specified in the Motion Magic® persistent configuration
723 * values. If Jerk is set to zero, Motion Magic® will produce a
724 * trapezoidal acceleration profile.
725 *
726 * Target velocity can also be changed on-the-fly and Motion Magic®
727 * will do its best to adjust the profile. This control mode is
728 * voltage-based, so relevant closed-loop gains will use Volts for the
729 * numerator.
730 *
731 * - MotionMagicVelocityVoltage Parameters:
732 * - Velocity: Target velocity to drive toward in rotations per second. This can
733 * be changed on-the fly.
734 * - Acceleration: This is the absolute Acceleration to use generating the
735 * profile. If this parameter is zero, the Acceleration
736 * persistent configuration parameter is used instead.
737 * Acceleration is in rotations per second squared. If nonzero,
738 * the signage does not matter as the absolute value is used.
739 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
740 * increases peak power by ~15% on supported devices (see
741 * hardware#traits#SupportsFOC). Set to false to use trapezoidal
742 * commutation.
743 *
744 * FOC improves motor performance by leveraging torque (current)
745 * control. However, this may be inconvenient for applications that
746 * require specifying duty cycle or voltage. CTR-Electronics has
747 * developed a hybrid method that combines the performances gains of
748 * FOC while still allowing applications to provide duty cycle or
749 * voltage demand. This not to be confused with simple sinusoidal
750 * control or phase voltage control which lacks the performance
751 * gains.
752 * - FeedForward: Feedforward to apply in volts
753 * - Slot: Select which gains are applied by selecting the slot. Use the
754 * configuration api to set the gain values for the selected slot before
755 * enabling this feature. Slot must be within [0,2].
756 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
757 * is zero (or within deadband). Set to false to use
758 * the NeutralMode configuration setting (default).
759 * This flag exists to provide the fundamental
760 * behavior of this control when output is zero, which
761 * is to provide 0V to the motor.
762 * - LimitForwardMotion: Set to true to force forward limiting. This allows
763 * users to use other limit switch sensors connected to
764 * robot controller. This also allows use of active
765 * sensors that require external power.
766 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
767 * users to use other limit switch sensors connected to
768 * robot controller. This also allows use of active
769 * sensors that require external power.
770 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
771 * LimitForwardMotion and LimitReverseMotion parameters,
772 * instead allowing motion.
773 *
774 * This can be useful on mechanisms such as an
775 * intake/feeder, where a limit switch stops motion while
776 * intaking but should be ignored when feeding to a
777 * shooter.
778 *
779 * The hardware limit faults and Forward/ReverseLimit
780 * signals will still report the values of the limit
781 * switches regardless of this parameter.
782 * - UseTimesync: Set to true to delay applying this control request until a
783 * timesync boundary (requires Phoenix Pro and CANivore). This
784 * eliminates the impact of nondeterministic network delays in
785 * exchange for a larger but deterministic control latency.
786 *
787 * This requires setting the ControlTimesyncFreqHz config in
788 * MotorOutputConfigs. Additionally, when this is enabled, the
789 * UpdateFreqHz of this request should be set to 0 Hz.
790 *
791 * \param request Control object to request of the device
792 * \returns Status Code of the request, 0 is OK
793 */
795
796 /**
797 * \brief Requests Motion Magic® to target a final position using an
798 * exponential motion profile. Users can optionally provide a duty
799 * cycle feedforward.
800 *
801 * \details Motion Magic® Expo produces a motion profile in real-time
802 * while attempting to honor the Cruise Velocity (optional) and the
803 * mechanism kV and kA, specified via the Motion Magic® configuration
804 * values. Note that unlike the slot gains, the Expo_kV and Expo_kA
805 * configs are always in output units of Volts.
806 *
807 * Setting Cruise Velocity to 0 will allow the profile to run to the
808 * max possible velocity based on Expo_kV. This control mode does not
809 * use the Acceleration or Jerk configs.
810 *
811 * Target position can be changed on-the-fly and Motion Magic® will do
812 * its best to adjust the profile. This control mode is duty cycle
813 * based, so relevant closed-loop gains will use fractional duty cycle
814 * for the numerator: +1.0 represents full forward output.
815 *
816 * - MotionMagicExpoDutyCycle Parameters:
817 * - Position: Position to drive toward in rotations.
818 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
819 * increases peak power by ~15% on supported devices (see
820 * hardware#traits#SupportsFOC). Set to false to use trapezoidal
821 * commutation.
822 *
823 * FOC improves motor performance by leveraging torque (current)
824 * control. However, this may be inconvenient for applications that
825 * require specifying duty cycle or voltage. CTR-Electronics has
826 * developed a hybrid method that combines the performances gains of
827 * FOC while still allowing applications to provide duty cycle or
828 * voltage demand. This not to be confused with simple sinusoidal
829 * control or phase voltage control which lacks the performance
830 * gains.
831 * - FeedForward: Feedforward to apply in fractional units between -1 and +1.
832 * - Slot: Select which gains are applied by selecting the slot. Use the
833 * configuration api to set the gain values for the selected slot before
834 * enabling this feature. Slot must be within [0,2].
835 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
836 * is zero (or within deadband). Set to false to use
837 * the NeutralMode configuration setting (default).
838 * This flag exists to provide the fundamental
839 * behavior of this control when output is zero, which
840 * is to provide 0V to the motor.
841 * - LimitForwardMotion: Set to true to force forward limiting. This allows
842 * users to use other limit switch sensors connected to
843 * robot controller. This also allows use of active
844 * sensors that require external power.
845 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
846 * users to use other limit switch sensors connected to
847 * robot controller. This also allows use of active
848 * sensors that require external power.
849 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
850 * LimitForwardMotion and LimitReverseMotion parameters,
851 * instead allowing motion.
852 *
853 * This can be useful on mechanisms such as an
854 * intake/feeder, where a limit switch stops motion while
855 * intaking but should be ignored when feeding to a
856 * shooter.
857 *
858 * The hardware limit faults and Forward/ReverseLimit
859 * signals will still report the values of the limit
860 * switches regardless of this parameter.
861 * - UseTimesync: Set to true to delay applying this control request until a
862 * timesync boundary (requires Phoenix Pro and CANivore). This
863 * eliminates the impact of nondeterministic network delays in
864 * exchange for a larger but deterministic control latency.
865 *
866 * This requires setting the ControlTimesyncFreqHz config in
867 * MotorOutputConfigs. Additionally, when this is enabled, the
868 * UpdateFreqHz of this request should be set to 0 Hz.
869 *
870 * \param request Control object to request of the device
871 * \returns Status Code of the request, 0 is OK
872 */
874
875 /**
876 * \brief Requests Motion Magic® to target a final position using an
877 * exponential motion profile. Users can optionally provide a voltage
878 * feedforward.
879 *
880 * \details Motion Magic® Expo produces a motion profile in real-time
881 * while attempting to honor the Cruise Velocity (optional) and the
882 * mechanism kV and kA, specified via the Motion Magic® configuration
883 * values. Note that unlike the slot gains, the Expo_kV and Expo_kA
884 * configs are always in output units of Volts.
885 *
886 * Setting Cruise Velocity to 0 will allow the profile to run to the
887 * max possible velocity based on Expo_kV. This control mode does not
888 * use the Acceleration or Jerk configs.
889 *
890 * Target position can be changed on-the-fly and Motion Magic® will do
891 * its best to adjust the profile. This control mode is
892 * voltage-based, so relevant closed-loop gains will use Volts for the
893 * numerator.
894 *
895 * - MotionMagicExpoVoltage Parameters:
896 * - Position: Position to drive toward in rotations.
897 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
898 * increases peak power by ~15% on supported devices (see
899 * hardware#traits#SupportsFOC). Set to false to use trapezoidal
900 * commutation.
901 *
902 * FOC improves motor performance by leveraging torque (current)
903 * control. However, this may be inconvenient for applications that
904 * require specifying duty cycle or voltage. CTR-Electronics has
905 * developed a hybrid method that combines the performances gains of
906 * FOC while still allowing applications to provide duty cycle or
907 * voltage demand. This not to be confused with simple sinusoidal
908 * control or phase voltage control which lacks the performance
909 * gains.
910 * - FeedForward: Feedforward to apply in volts
911 * - Slot: Select which gains are applied by selecting the slot. Use the
912 * configuration api to set the gain values for the selected slot before
913 * enabling this feature. Slot must be within [0,2].
914 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
915 * is zero (or within deadband). Set to false to use
916 * the NeutralMode configuration setting (default).
917 * This flag exists to provide the fundamental
918 * behavior of this control when output is zero, which
919 * is to provide 0V to the motor.
920 * - LimitForwardMotion: Set to true to force forward limiting. This allows
921 * users to use other limit switch sensors connected to
922 * robot controller. This also allows use of active
923 * sensors that require external power.
924 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
925 * users to use other limit switch sensors connected to
926 * robot controller. This also allows use of active
927 * sensors that require external power.
928 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
929 * LimitForwardMotion and LimitReverseMotion parameters,
930 * instead allowing motion.
931 *
932 * This can be useful on mechanisms such as an
933 * intake/feeder, where a limit switch stops motion while
934 * intaking but should be ignored when feeding to a
935 * shooter.
936 *
937 * The hardware limit faults and Forward/ReverseLimit
938 * signals will still report the values of the limit
939 * switches regardless of this parameter.
940 * - UseTimesync: Set to true to delay applying this control request until a
941 * timesync boundary (requires Phoenix Pro and CANivore). This
942 * eliminates the impact of nondeterministic network delays in
943 * exchange for a larger but deterministic control latency.
944 *
945 * This requires setting the ControlTimesyncFreqHz config in
946 * MotorOutputConfigs. Additionally, when this is enabled, the
947 * UpdateFreqHz of this request should be set to 0 Hz.
948 *
949 * \param request Control object to request of the device
950 * \returns Status Code of the request, 0 is OK
951 */
953
954 /**
955 * \brief Requests Motion Magic® to target a final position using a
956 * motion profile. This dynamic request allows runtime changes to
957 * Cruise Velocity, Acceleration, and Jerk. Users can optionally
958 * provide a duty cycle feedforward. This control requires use of a
959 * CANivore.
960 *
961 * \details Motion Magic® produces a motion profile in real-time while
962 * attempting to honor the specified Cruise Velocity, Acceleration,
963 * and (optional) Jerk. This control mode does not use the Expo_kV or
964 * Expo_kA configs.
965 *
966 * Target position can be changed on-the-fly and Motion Magic® will do
967 * its best to adjust the profile. This control mode is duty cycle
968 * based, so relevant closed-loop gains will use fractional duty cycle
969 * for the numerator: +1.0 represents full forward output.
970 *
971 * - DynamicMotionMagicDutyCycle Parameters:
972 * - Position: Position to drive toward in rotations.
973 * - Velocity: Cruise velocity for profiling. The signage does not matter as the
974 * device will use the absolute value for profile generation.
975 * - Acceleration: Acceleration for profiling. The signage does not matter as
976 * the device will use the absolute value for profile generation
977 * - Jerk: Jerk for profiling. The signage does not matter as the device will
978 * use the absolute value for profile generation.
979 *
980 * Jerk is optional; if this is set to zero, then Motion Magic® will not
981 * apply a Jerk limit.
982 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
983 * increases peak power by ~15% on supported devices (see
984 * hardware#traits#SupportsFOC). Set to false to use trapezoidal
985 * commutation.
986 *
987 * FOC improves motor performance by leveraging torque (current)
988 * control. However, this may be inconvenient for applications that
989 * require specifying duty cycle or voltage. CTR-Electronics has
990 * developed a hybrid method that combines the performances gains of
991 * FOC while still allowing applications to provide duty cycle or
992 * voltage demand. This not to be confused with simple sinusoidal
993 * control or phase voltage control which lacks the performance
994 * gains.
995 * - FeedForward: Feedforward to apply in fractional units between -1 and +1.
996 * - Slot: Select which gains are applied by selecting the slot. Use the
997 * configuration api to set the gain values for the selected slot before
998 * enabling this feature. Slot must be within [0,2].
999 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
1000 * is zero (or within deadband). Set to false to use
1001 * the NeutralMode configuration setting (default).
1002 * This flag exists to provide the fundamental
1003 * behavior of this control when output is zero, which
1004 * is to provide 0V to the motor.
1005 * - LimitForwardMotion: Set to true to force forward limiting. This allows
1006 * users to use other limit switch sensors connected to
1007 * robot controller. This also allows use of active
1008 * sensors that require external power.
1009 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
1010 * users to use other limit switch sensors connected to
1011 * robot controller. This also allows use of active
1012 * sensors that require external power.
1013 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
1014 * LimitForwardMotion and LimitReverseMotion parameters,
1015 * instead allowing motion.
1016 *
1017 * This can be useful on mechanisms such as an
1018 * intake/feeder, where a limit switch stops motion while
1019 * intaking but should be ignored when feeding to a
1020 * shooter.
1021 *
1022 * The hardware limit faults and Forward/ReverseLimit
1023 * signals will still report the values of the limit
1024 * switches regardless of this parameter.
1025 * - UseTimesync: Set to true to delay applying this control request until a
1026 * timesync boundary (requires Phoenix Pro and CANivore). This
1027 * eliminates the impact of nondeterministic network delays in
1028 * exchange for a larger but deterministic control latency.
1029 *
1030 * This requires setting the ControlTimesyncFreqHz config in
1031 * MotorOutputConfigs. Additionally, when this is enabled, the
1032 * UpdateFreqHz of this request should be set to 0 Hz.
1033 *
1034 * \param request Control object to request of the device
1035 * \returns Status Code of the request, 0 is OK
1036 */
1038
1039 /**
1040 * \brief Requests Motion Magic® to target a final position using a
1041 * motion profile. This dynamic request allows runtime changes to
1042 * Cruise Velocity, Acceleration, and Jerk. Users can optionally
1043 * provide a voltage feedforward. This control requires use of a
1044 * CANivore.
1045 *
1046 * \details Motion Magic® produces a motion profile in real-time while
1047 * attempting to honor the specified Cruise Velocity, Acceleration,
1048 * and (optional) Jerk. This control mode does not use the Expo_kV or
1049 * Expo_kA configs.
1050 *
1051 * Target position can be changed on-the-fly and Motion Magic® will do
1052 * its best to adjust the profile. This control mode is
1053 * voltage-based, so relevant closed-loop gains will use Volts for the
1054 * numerator.
1055 *
1056 * - DynamicMotionMagicVoltage Parameters:
1057 * - Position: Position to drive toward in rotations.
1058 * - Velocity: Cruise velocity for profiling. The signage does not matter as the
1059 * device will use the absolute value for profile generation.
1060 * - Acceleration: Acceleration for profiling. The signage does not matter as
1061 * the device will use the absolute value for profile generation.
1062 * - Jerk: Jerk for profiling. The signage does not matter as the device will
1063 * use the absolute value for profile generation.
1064 *
1065 * Jerk is optional; if this is set to zero, then Motion Magic® will not
1066 * apply a Jerk limit.
1067 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
1068 * increases peak power by ~15% on supported devices (see
1069 * hardware#traits#SupportsFOC). Set to false to use trapezoidal
1070 * commutation.
1071 *
1072 * FOC improves motor performance by leveraging torque (current)
1073 * control. However, this may be inconvenient for applications that
1074 * require specifying duty cycle or voltage. CTR-Electronics has
1075 * developed a hybrid method that combines the performances gains of
1076 * FOC while still allowing applications to provide duty cycle or
1077 * voltage demand. This not to be confused with simple sinusoidal
1078 * control or phase voltage control which lacks the performance
1079 * gains.
1080 * - FeedForward: Feedforward to apply in volts
1081 * - Slot: Select which gains are applied by selecting the slot. Use the
1082 * configuration api to set the gain values for the selected slot before
1083 * enabling this feature. Slot must be within [0,2].
1084 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
1085 * is zero (or within deadband). Set to false to use
1086 * the NeutralMode configuration setting (default).
1087 * This flag exists to provide the fundamental
1088 * behavior of this control when output is zero, which
1089 * is to provide 0V to the motor.
1090 * - LimitForwardMotion: Set to true to force forward limiting. This allows
1091 * users to use other limit switch sensors connected to
1092 * robot controller. This also allows use of active
1093 * sensors that require external power.
1094 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
1095 * users to use other limit switch sensors connected to
1096 * robot controller. This also allows use of active
1097 * sensors that require external power.
1098 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
1099 * LimitForwardMotion and LimitReverseMotion parameters,
1100 * instead allowing motion.
1101 *
1102 * This can be useful on mechanisms such as an
1103 * intake/feeder, where a limit switch stops motion while
1104 * intaking but should be ignored when feeding to a
1105 * shooter.
1106 *
1107 * The hardware limit faults and Forward/ReverseLimit
1108 * signals will still report the values of the limit
1109 * switches regardless of this parameter.
1110 * - UseTimesync: Set to true to delay applying this control request until a
1111 * timesync boundary (requires Phoenix Pro and CANivore). This
1112 * eliminates the impact of nondeterministic network delays in
1113 * exchange for a larger but deterministic control latency.
1114 *
1115 * This requires setting the ControlTimesyncFreqHz config in
1116 * MotorOutputConfigs. Additionally, when this is enabled, the
1117 * UpdateFreqHz of this request should be set to 0 Hz.
1118 *
1119 * \param request Control object to request of the device
1120 * \returns Status Code of the request, 0 is OK
1121 */
1123
1124 /**
1125 * \brief Request a specified motor duty cycle with a differential
1126 * position closed-loop.
1127 *
1128 * \details This control mode will output a proportion of the supplied
1129 * voltage which is supplied by the user. It will also set the motor's
1130 * differential position setpoint to the specified position.
1131 *
1132 * - DifferentialDutyCycle Parameters:
1133 * - TargetOutput: Proportion of supply voltage to apply in fractional units
1134 * between -1 and +1
1135 * - DifferentialPosition: Differential position to drive towards in rotations
1136 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
1137 * increases peak power by ~15% on supported devices (see
1138 * hardware#traits#SupportsFOC). Set to false to use trapezoidal
1139 * commutation.
1140 *
1141 * FOC improves motor performance by leveraging torque (current)
1142 * control. However, this may be inconvenient for applications that
1143 * require specifying duty cycle or voltage. CTR-Electronics has
1144 * developed a hybrid method that combines the performances gains of
1145 * FOC while still allowing applications to provide duty cycle or
1146 * voltage demand. This not to be confused with simple sinusoidal
1147 * control or phase voltage control which lacks the performance
1148 * gains.
1149 * - DifferentialSlot: Select which gains are applied to the differential
1150 * controller by selecting the slot. Use the configuration
1151 * api to set the gain values for the selected slot before
1152 * enabling this feature. Slot must be within [0,2].
1153 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
1154 * is zero (or within deadband). Set to false to use
1155 * the NeutralMode configuration setting (default).
1156 * This flag exists to provide the fundamental
1157 * behavior of this control when output is zero, which
1158 * is to provide 0V to the motor.
1159 * - LimitForwardMotion: Set to true to force forward limiting. This allows
1160 * users to use other limit switch sensors connected to
1161 * robot controller. This also allows use of active
1162 * sensors that require external power.
1163 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
1164 * users to use other limit switch sensors connected to
1165 * robot controller. This also allows use of active
1166 * sensors that require external power.
1167 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
1168 * LimitForwardMotion and LimitReverseMotion parameters,
1169 * instead allowing motion.
1170 *
1171 * This can be useful on mechanisms such as an
1172 * intake/feeder, where a limit switch stops motion while
1173 * intaking but should be ignored when feeding to a
1174 * shooter.
1175 *
1176 * The hardware limit faults and Forward/ReverseLimit
1177 * signals will still report the values of the limit
1178 * switches regardless of this parameter.
1179 * - UseTimesync: Set to true to delay applying this control request until a
1180 * timesync boundary (requires Phoenix Pro and CANivore). This
1181 * eliminates the impact of nondeterministic network delays in
1182 * exchange for a larger but deterministic control latency.
1183 *
1184 * This requires setting the ControlTimesyncFreqHz config in
1185 * MotorOutputConfigs. Additionally, when this is enabled, the
1186 * UpdateFreqHz of this request should be set to 0 Hz.
1187 *
1188 * \param request Control object to request of the device
1189 * \returns Status Code of the request, 0 is OK
1190 */
1192
1193 /**
1194 * \brief Request a specified voltage with a differential position
1195 * closed-loop.
1196 *
1197 * \details This control mode will attempt to apply the specified
1198 * voltage to the motor. If the supply voltage is below the requested
1199 * voltage, the motor controller will output the supply voltage. It
1200 * will also set the motor's differential position setpoint to the
1201 * specified position.
1202 *
1203 * - DifferentialVoltage Parameters:
1204 * - TargetOutput: Voltage to attempt to drive at
1205 * - DifferentialPosition: Differential position to drive towards in rotations
1206 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
1207 * increases peak power by ~15% on supported devices (see
1208 * hardware#traits#SupportsFOC). Set to false to use trapezoidal
1209 * commutation.
1210 *
1211 * FOC improves motor performance by leveraging torque (current)
1212 * control. However, this may be inconvenient for applications that
1213 * require specifying duty cycle or voltage. CTR-Electronics has
1214 * developed a hybrid method that combines the performances gains of
1215 * FOC while still allowing applications to provide duty cycle or
1216 * voltage demand. This not to be confused with simple sinusoidal
1217 * control or phase voltage control which lacks the performance
1218 * gains.
1219 * - DifferentialSlot: Select which gains are applied to the differential
1220 * controller by selecting the slot. Use the configuration
1221 * api to set the gain values for the selected slot before
1222 * enabling this feature. Slot must be within [0,2].
1223 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
1224 * is zero (or within deadband). Set to false to use
1225 * the NeutralMode configuration setting (default).
1226 * This flag exists to provide the fundamental
1227 * behavior of this control when output is zero, which
1228 * is to provide 0V to the motor.
1229 * - LimitForwardMotion: Set to true to force forward limiting. This allows
1230 * users to use other limit switch sensors connected to
1231 * robot controller. This also allows use of active
1232 * sensors that require external power.
1233 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
1234 * users to use other limit switch sensors connected to
1235 * robot controller. This also allows use of active
1236 * sensors that require external power.
1237 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
1238 * LimitForwardMotion and LimitReverseMotion parameters,
1239 * instead allowing motion.
1240 *
1241 * This can be useful on mechanisms such as an
1242 * intake/feeder, where a limit switch stops motion while
1243 * intaking but should be ignored when feeding to a
1244 * shooter.
1245 *
1246 * The hardware limit faults and Forward/ReverseLimit
1247 * signals will still report the values of the limit
1248 * switches regardless of this parameter.
1249 * - UseTimesync: Set to true to delay applying this control request until a
1250 * timesync boundary (requires Phoenix Pro and CANivore). This
1251 * eliminates the impact of nondeterministic network delays in
1252 * exchange for a larger but deterministic control latency.
1253 *
1254 * This requires setting the ControlTimesyncFreqHz config in
1255 * MotorOutputConfigs. Additionally, when this is enabled, the
1256 * UpdateFreqHz of this request should be set to 0 Hz.
1257 *
1258 * \param request Control object to request of the device
1259 * \returns Status Code of the request, 0 is OK
1260 */
1262
1263 /**
1264 * \brief Request PID to target position with a differential position
1265 * setpoint.
1266 *
1267 * \details This control mode will set the motor's position setpoint
1268 * to the position specified by the user. It will also set the motor's
1269 * differential position setpoint to the specified position.
1270 *
1271 * - DifferentialPositionDutyCycle Parameters:
1272 * - TargetPosition: Average position to drive toward in rotations.
1273 * - DifferentialPosition: Differential position to drive toward in rotations.
1274 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
1275 * increases peak power by ~15% on supported devices (see
1276 * hardware#traits#SupportsFOC). Set to false to use trapezoidal
1277 * commutation.
1278 *
1279 * FOC improves motor performance by leveraging torque (current)
1280 * control. However, this may be inconvenient for applications that
1281 * require specifying duty cycle or voltage. CTR-Electronics has
1282 * developed a hybrid method that combines the performances gains of
1283 * FOC while still allowing applications to provide duty cycle or
1284 * voltage demand. This not to be confused with simple sinusoidal
1285 * control or phase voltage control which lacks the performance
1286 * gains.
1287 * - TargetSlot: Select which gains are applied to the primary controller by
1288 * selecting the slot. Use the configuration api to set the gain
1289 * values for the selected slot before enabling this feature. Slot
1290 * must be within [0,2].
1291 * - DifferentialSlot: Select which gains are applied to the differential
1292 * controller by selecting the slot. Use the configuration
1293 * api to set the gain values for the selected slot before
1294 * enabling this feature. Slot must be within [0,2].
1295 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
1296 * is zero (or within deadband). Set to false to use
1297 * the NeutralMode configuration setting (default).
1298 * This flag exists to provide the fundamental
1299 * behavior of this control when output is zero, which
1300 * is to provide 0V to the motor.
1301 * - LimitForwardMotion: Set to true to force forward limiting. This allows
1302 * users to use other limit switch sensors connected to
1303 * robot controller. This also allows use of active
1304 * sensors that require external power.
1305 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
1306 * users to use other limit switch sensors connected to
1307 * robot controller. This also allows use of active
1308 * sensors that require external power.
1309 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
1310 * LimitForwardMotion and LimitReverseMotion parameters,
1311 * instead allowing motion.
1312 *
1313 * This can be useful on mechanisms such as an
1314 * intake/feeder, where a limit switch stops motion while
1315 * intaking but should be ignored when feeding to a
1316 * shooter.
1317 *
1318 * The hardware limit faults and Forward/ReverseLimit
1319 * signals will still report the values of the limit
1320 * switches regardless of this parameter.
1321 * - UseTimesync: Set to true to delay applying this control request until a
1322 * timesync boundary (requires Phoenix Pro and CANivore). This
1323 * eliminates the impact of nondeterministic network delays in
1324 * exchange for a larger but deterministic control latency.
1325 *
1326 * This requires setting the ControlTimesyncFreqHz config in
1327 * MotorOutputConfigs. Additionally, when this is enabled, the
1328 * UpdateFreqHz of this request should be set to 0 Hz.
1329 *
1330 * \param request Control object to request of the device
1331 * \returns Status Code of the request, 0 is OK
1332 */
1334
1335 /**
1336 * \brief Request PID to target position with a differential position
1337 * setpoint
1338 *
1339 * \details This control mode will set the motor's position setpoint
1340 * to the position specified by the user. It will also set the motor's
1341 * differential position setpoint to the specified position.
1342 *
1343 * - DifferentialPositionVoltage Parameters:
1344 * - TargetPosition: Average position to drive toward in rotations.
1345 * - DifferentialPosition: Differential position to drive toward in rotations.
1346 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
1347 * increases peak power by ~15% on supported devices (see
1348 * hardware#traits#SupportsFOC). Set to false to use trapezoidal
1349 * commutation.
1350 *
1351 * FOC improves motor performance by leveraging torque (current)
1352 * control. However, this may be inconvenient for applications that
1353 * require specifying duty cycle or voltage. CTR-Electronics has
1354 * developed a hybrid method that combines the performances gains of
1355 * FOC while still allowing applications to provide duty cycle or
1356 * voltage demand. This not to be confused with simple sinusoidal
1357 * control or phase voltage control which lacks the performance
1358 * gains.
1359 * - TargetSlot: Select which gains are applied to the primary controller by
1360 * selecting the slot. Use the configuration api to set the gain
1361 * values for the selected slot before enabling this feature. Slot
1362 * must be within [0,2].
1363 * - DifferentialSlot: Select which gains are applied to the differential
1364 * controller by selecting the slot. Use the configuration
1365 * api to set the gain values for the selected slot before
1366 * enabling this feature. Slot must be within [0,2].
1367 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
1368 * is zero (or within deadband). Set to false to use
1369 * the NeutralMode configuration setting (default).
1370 * This flag exists to provide the fundamental
1371 * behavior of this control when output is zero, which
1372 * is to provide 0V to the motor.
1373 * - LimitForwardMotion: Set to true to force forward limiting. This allows
1374 * users to use other limit switch sensors connected to
1375 * robot controller. This also allows use of active
1376 * sensors that require external power.
1377 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
1378 * users to use other limit switch sensors connected to
1379 * robot controller. This also allows use of active
1380 * sensors that require external power.
1381 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
1382 * LimitForwardMotion and LimitReverseMotion parameters,
1383 * instead allowing motion.
1384 *
1385 * This can be useful on mechanisms such as an
1386 * intake/feeder, where a limit switch stops motion while
1387 * intaking but should be ignored when feeding to a
1388 * shooter.
1389 *
1390 * The hardware limit faults and Forward/ReverseLimit
1391 * signals will still report the values of the limit
1392 * switches regardless of this parameter.
1393 * - UseTimesync: Set to true to delay applying this control request until a
1394 * timesync boundary (requires Phoenix Pro and CANivore). This
1395 * eliminates the impact of nondeterministic network delays in
1396 * exchange for a larger but deterministic control latency.
1397 *
1398 * This requires setting the ControlTimesyncFreqHz config in
1399 * MotorOutputConfigs. Additionally, when this is enabled, the
1400 * UpdateFreqHz of this request should be set to 0 Hz.
1401 *
1402 * \param request Control object to request of the device
1403 * \returns Status Code of the request, 0 is OK
1404 */
1406
1407 /**
1408 * \brief Request PID to target velocity with a differential position
1409 * setpoint.
1410 *
1411 * \details This control mode will set the motor's velocity setpoint
1412 * to the velocity specified by the user. It will also set the motor's
1413 * differential position setpoint to the specified position.
1414 *
1415 * - DifferentialVelocityDutyCycle Parameters:
1416 * - TargetVelocity: Average velocity to drive toward in rotations per second.
1417 * - DifferentialPosition: Differential position to drive toward in rotations.
1418 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
1419 * increases peak power by ~15% on supported devices (see
1420 * hardware#traits#SupportsFOC). Set to false to use trapezoidal
1421 * commutation.
1422 *
1423 * FOC improves motor performance by leveraging torque (current)
1424 * control. However, this may be inconvenient for applications that
1425 * require specifying duty cycle or voltage. CTR-Electronics has
1426 * developed a hybrid method that combines the performances gains of
1427 * FOC while still allowing applications to provide duty cycle or
1428 * voltage demand. This not to be confused with simple sinusoidal
1429 * control or phase voltage control which lacks the performance
1430 * gains.
1431 * - TargetSlot: Select which gains are applied to the primary controller by
1432 * selecting the slot. Use the configuration api to set the gain
1433 * values for the selected slot before enabling this feature. Slot
1434 * must be within [0,2].
1435 * - DifferentialSlot: Select which gains are applied to the differential
1436 * controller by selecting the slot. Use the configuration
1437 * api to set the gain values for the selected slot before
1438 * enabling this feature. Slot must be within [0,2].
1439 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
1440 * is zero (or within deadband). Set to false to use
1441 * the NeutralMode configuration setting (default).
1442 * This flag exists to provide the fundamental
1443 * behavior of this control when output is zero, which
1444 * is to provide 0V to the motor.
1445 * - LimitForwardMotion: Set to true to force forward limiting. This allows
1446 * users to use other limit switch sensors connected to
1447 * robot controller. This also allows use of active
1448 * sensors that require external power.
1449 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
1450 * users to use other limit switch sensors connected to
1451 * robot controller. This also allows use of active
1452 * sensors that require external power.
1453 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
1454 * LimitForwardMotion and LimitReverseMotion parameters,
1455 * instead allowing motion.
1456 *
1457 * This can be useful on mechanisms such as an
1458 * intake/feeder, where a limit switch stops motion while
1459 * intaking but should be ignored when feeding to a
1460 * shooter.
1461 *
1462 * The hardware limit faults and Forward/ReverseLimit
1463 * signals will still report the values of the limit
1464 * switches regardless of this parameter.
1465 * - UseTimesync: Set to true to delay applying this control request until a
1466 * timesync boundary (requires Phoenix Pro and CANivore). This
1467 * eliminates the impact of nondeterministic network delays in
1468 * exchange for a larger but deterministic control latency.
1469 *
1470 * This requires setting the ControlTimesyncFreqHz config in
1471 * MotorOutputConfigs. Additionally, when this is enabled, the
1472 * UpdateFreqHz of this request should be set to 0 Hz.
1473 *
1474 * \param request Control object to request of the device
1475 * \returns Status Code of the request, 0 is OK
1476 */
1478
1479 /**
1480 * \brief Request PID to target velocity with a differential position
1481 * setpoint.
1482 *
1483 * \details This control mode will set the motor's velocity setpoint
1484 * to the velocity specified by the user. It will also set the motor's
1485 * differential position setpoint to the specified position.
1486 *
1487 * - DifferentialVelocityVoltage Parameters:
1488 * - TargetVelocity: Average velocity to drive toward in rotations per second.
1489 * - DifferentialPosition: Differential position to drive toward in rotations.
1490 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
1491 * increases peak power by ~15% on supported devices (see
1492 * hardware#traits#SupportsFOC). Set to false to use trapezoidal
1493 * commutation.
1494 *
1495 * FOC improves motor performance by leveraging torque (current)
1496 * control. However, this may be inconvenient for applications that
1497 * require specifying duty cycle or voltage. CTR-Electronics has
1498 * developed a hybrid method that combines the performances gains of
1499 * FOC while still allowing applications to provide duty cycle or
1500 * voltage demand. This not to be confused with simple sinusoidal
1501 * control or phase voltage control which lacks the performance
1502 * gains.
1503 * - TargetSlot: Select which gains are applied to the primary controller by
1504 * selecting the slot. Use the configuration api to set the gain
1505 * values for the selected slot before enabling this feature. Slot
1506 * must be within [0,2].
1507 * - DifferentialSlot: Select which gains are applied to the differential
1508 * controller by selecting the slot. Use the configuration
1509 * api to set the gain values for the selected slot before
1510 * enabling this feature. Slot must be within [0,2].
1511 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
1512 * is zero (or within deadband). Set to false to use
1513 * the NeutralMode configuration setting (default).
1514 * This flag exists to provide the fundamental
1515 * behavior of this control when output is zero, which
1516 * is to provide 0V to the motor.
1517 * - LimitForwardMotion: Set to true to force forward limiting. This allows
1518 * users to use other limit switch sensors connected to
1519 * robot controller. This also allows use of active
1520 * sensors that require external power.
1521 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
1522 * users to use other limit switch sensors connected to
1523 * robot controller. This also allows use of active
1524 * sensors that require external power.
1525 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
1526 * LimitForwardMotion and LimitReverseMotion parameters,
1527 * instead allowing motion.
1528 *
1529 * This can be useful on mechanisms such as an
1530 * intake/feeder, where a limit switch stops motion while
1531 * intaking but should be ignored when feeding to a
1532 * shooter.
1533 *
1534 * The hardware limit faults and Forward/ReverseLimit
1535 * signals will still report the values of the limit
1536 * switches regardless of this parameter.
1537 * - UseTimesync: Set to true to delay applying this control request until a
1538 * timesync boundary (requires Phoenix Pro and CANivore). This
1539 * eliminates the impact of nondeterministic network delays in
1540 * exchange for a larger but deterministic control latency.
1541 *
1542 * This requires setting the ControlTimesyncFreqHz config in
1543 * MotorOutputConfigs. Additionally, when this is enabled, the
1544 * UpdateFreqHz of this request should be set to 0 Hz.
1545 *
1546 * \param request Control object to request of the device
1547 * \returns Status Code of the request, 0 is OK
1548 */
1550
1551 /**
1552 * \brief Requests Motion Magic® to target a final position using a
1553 * motion profile, and PID to a differential position setpoint.
1554 *
1555 * \details Motion Magic® produces a motion profile in real-time while
1556 * attempting to honor the Cruise Velocity, Acceleration, and
1557 * (optional) Jerk specified via the Motion Magic® configuration
1558 * values. This control mode does not use the Expo_kV or Expo_kA
1559 * configs.
1560 *
1561 * Target position can be changed on-the-fly and Motion Magic® will do
1562 * its best to adjust the profile. This control mode is duty cycle
1563 * based, so relevant closed-loop gains will use fractional duty cycle
1564 * for the numerator: +1.0 represents full forward output.
1565 *
1566 * - DifferentialMotionMagicDutyCycle Parameters:
1567 * - TargetPosition: Average position to drive toward in rotations.
1568 * - DifferentialPosition: Differential position to drive toward in rotations.
1569 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
1570 * increases peak power by ~15% on supported devices (see
1571 * hardware#traits#SupportsFOC). Set to false to use trapezoidal
1572 * commutation.
1573 *
1574 * FOC improves motor performance by leveraging torque (current)
1575 * control. However, this may be inconvenient for applications that
1576 * require specifying duty cycle or voltage. CTR-Electronics has
1577 * developed a hybrid method that combines the performances gains of
1578 * FOC while still allowing applications to provide duty cycle or
1579 * voltage demand. This not to be confused with simple sinusoidal
1580 * control or phase voltage control which lacks the performance
1581 * gains.
1582 * - TargetSlot: Select which gains are applied to the primary controller by
1583 * selecting the slot. Use the configuration api to set the gain
1584 * values for the selected slot before enabling this feature. Slot
1585 * must be within [0,2].
1586 * - DifferentialSlot: Select which gains are applied to the differential
1587 * controller by selecting the slot. Use the configuration
1588 * api to set the gain values for the selected slot before
1589 * enabling this feature. Slot must be within [0,2].
1590 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
1591 * is zero (or within deadband). Set to false to use
1592 * the NeutralMode configuration setting (default).
1593 * This flag exists to provide the fundamental
1594 * behavior of this control when output is zero, which
1595 * is to provide 0V to the motor.
1596 * - LimitForwardMotion: Set to true to force forward limiting. This allows
1597 * users to use other limit switch sensors connected to
1598 * robot controller. This also allows use of active
1599 * sensors that require external power.
1600 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
1601 * users to use other limit switch sensors connected to
1602 * robot controller. This also allows use of active
1603 * sensors that require external power.
1604 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
1605 * LimitForwardMotion and LimitReverseMotion parameters,
1606 * instead allowing motion.
1607 *
1608 * This can be useful on mechanisms such as an
1609 * intake/feeder, where a limit switch stops motion while
1610 * intaking but should be ignored when feeding to a
1611 * shooter.
1612 *
1613 * The hardware limit faults and Forward/ReverseLimit
1614 * signals will still report the values of the limit
1615 * switches regardless of this parameter.
1616 * - UseTimesync: Set to true to delay applying this control request until a
1617 * timesync boundary (requires Phoenix Pro and CANivore). This
1618 * eliminates the impact of nondeterministic network delays in
1619 * exchange for a larger but deterministic control latency.
1620 *
1621 * This requires setting the ControlTimesyncFreqHz config in
1622 * MotorOutputConfigs. Additionally, when this is enabled, the
1623 * UpdateFreqHz of this request should be set to 0 Hz.
1624 *
1625 * \param request Control object to request of the device
1626 * \returns Status Code of the request, 0 is OK
1627 */
1629
1630 /**
1631 * \brief Requests Motion Magic® to target a final position using a
1632 * motion profile, and PID to a differential position setpoint.
1633 *
1634 * \details Motion Magic® produces a motion profile in real-time while
1635 * attempting to honor the Cruise Velocity, Acceleration, and
1636 * (optional) Jerk specified via the Motion Magic® configuration
1637 * values. This control mode does not use the Expo_kV or Expo_kA
1638 * configs.
1639 *
1640 * Target position can be changed on-the-fly and Motion Magic® will do
1641 * its best to adjust the profile. This control mode is
1642 * voltage-based, so relevant closed-loop gains will use Volts for the
1643 * numerator.
1644 *
1645 * - DifferentialMotionMagicVoltage Parameters:
1646 * - TargetPosition: Average position to drive toward in rotations.
1647 * - DifferentialPosition: Differential position to drive toward in rotations.
1648 * - EnableFOC: Set to true to use FOC commutation (requires Phoenix Pro), which
1649 * increases peak power by ~15% on supported devices (see
1650 * hardware#traits#SupportsFOC). Set to false to use trapezoidal
1651 * commutation.
1652 *
1653 * FOC improves motor performance by leveraging torque (current)
1654 * control. However, this may be inconvenient for applications that
1655 * require specifying duty cycle or voltage. CTR-Electronics has
1656 * developed a hybrid method that combines the performances gains of
1657 * FOC while still allowing applications to provide duty cycle or
1658 * voltage demand. This not to be confused with simple sinusoidal
1659 * control or phase voltage control which lacks the performance
1660 * gains.
1661 * - TargetSlot: Select which gains are applied to the primary controller by
1662 * selecting the slot. Use the configuration api to set the gain
1663 * values for the selected slot before enabling this feature. Slot
1664 * must be within [0,2].
1665 * - DifferentialSlot: Select which gains are applied to the differential
1666 * controller by selecting the slot. Use the configuration
1667 * api to set the gain values for the selected slot before
1668 * enabling this feature. Slot must be within [0,2].
1669 * - OverrideBrakeDurNeutral: Set to true to static-brake the rotor when output
1670 * is zero (or within deadband). Set to false to use
1671 * the NeutralMode configuration setting (default).
1672 * This flag exists to provide the fundamental
1673 * behavior of this control when output is zero, which
1674 * is to provide 0V to the motor.
1675 * - LimitForwardMotion: Set to true to force forward limiting. This allows
1676 * users to use other limit switch sensors connected to
1677 * robot controller. This also allows use of active
1678 * sensors that require external power.
1679 * - LimitReverseMotion: Set to true to force reverse limiting. This allows
1680 * users to use other limit switch sensors connected to
1681 * robot controller. This also allows use of active
1682 * sensors that require external power.
1683 * - IgnoreHardwareLimits: Set to true to ignore hardware limit switches and the
1684 * LimitForwardMotion and LimitReverseMotion parameters,
1685 * instead allowing motion.
1686 *
1687 * This can be useful on mechanisms such as an
1688 * intake/feeder, where a limit switch stops motion while
1689 * intaking but should be ignored when feeding to a
1690 * shooter.
1691 *
1692 * The hardware limit faults and Forward/ReverseLimit
1693 * signals will still report the values of the limit
1694 * switches regardless of this parameter.
1695 * - UseTimesync: Set to true to delay applying this control request until a
1696 * timesync boundary (requires Phoenix Pro and CANivore). This
1697 * eliminates the impact of nondeterministic network delays in
1698 * exchange for a larger but deterministic control latency.
1699 *
1700 * This requires setting the ControlTimesyncFreqHz config in
1701 * MotorOutputConfigs. Additionally, when this is enabled, the
1702 * UpdateFreqHz of this request should be set to 0 Hz.
1703 *
1704 * \param request Control object to request of the device
1705 * \returns Status Code of the request, 0 is OK
1706 */
1708
1709 /**
1710 * \brief Follow the motor output of another Talon.
1711 *
1712 * \details If Talon is in torque control, the torque is copied -
1713 * which will increase the total torque applied. If Talon is in
1714 * percent supply output control, the duty cycle is matched. Motor
1715 * direction either matches master's configured direction or opposes
1716 * it based on OpposeMasterDirection.
1717 *
1718 * - Follower Parameters:
1719 * - MasterID: Device ID of the master to follow.
1720 * - OpposeMasterDirection: Set to false for motor invert to match the master's
1721 * configured Invert - which is typical when master and
1722 * follower are mechanically linked and spin in the same
1723 * direction. Set to true for motor invert to oppose
1724 * the master's configured Invert - this is typical
1725 * where the the master and follower mechanically spin
1726 * in opposite directions.
1727 *
1728 * \param request Control object to request of the device
1729 * \returns Status Code of the request, 0 is OK
1730 */
1732
1733 /**
1734 * \brief Follow the motor output of another Talon while ignoring the
1735 * master's invert setting.
1736 *
1737 * \details If Talon is in torque control, the torque is copied -
1738 * which will increase the total torque applied. If Talon is in
1739 * percent supply output control, the duty cycle is matched. Motor
1740 * direction is strictly determined by the configured invert and not
1741 * the master. If you want motor direction to match or oppose the
1742 * master, use FollowerRequest instead.
1743 *
1744 * - StrictFollower Parameters:
1745 * - MasterID: Device ID of the master to follow.
1746 *
1747 * \param request Control object to request of the device
1748 * \returns Status Code of the request, 0 is OK
1749 */
1751
1752 /**
1753 * \brief Follow the differential motor output of another Talon.
1754 *
1755 * \details If Talon is in torque control, the torque is copied -
1756 * which will increase the total torque applied. If Talon is in
1757 * percent supply output control, the duty cycle is matched. Motor
1758 * direction either matches master's configured direction or opposes
1759 * it based on OpposeMasterDirection.
1760 *
1761 * - DifferentialFollower Parameters:
1762 * - MasterID: Device ID of the differential master to follow.
1763 * - OpposeMasterDirection: Set to false for motor invert to match the master's
1764 * configured Invert - which is typical when master and
1765 * follower are mechanically linked and spin in the same
1766 * direction. Set to true for motor invert to oppose
1767 * the master's configured Invert - this is typical
1768 * where the the master and follower mechanically spin
1769 * in opposite directions.
1770 *
1771 * \param request Control object to request of the device
1772 * \returns Status Code of the request, 0 is OK
1773 */
1775
1776 /**
1777 * \brief Follow the differential motor output of another Talon while
1778 * ignoring the master's invert setting.
1779 *
1780 * \details If Talon is in torque control, the torque is copied -
1781 * which will increase the total torque applied. If Talon is in
1782 * percent supply output control, the duty cycle is matched. Motor
1783 * direction is strictly determined by the configured invert and not
1784 * the master. If you want motor direction to match or oppose the
1785 * master, use FollowerRequest instead.
1786 *
1787 * - DifferentialStrictFollower Parameters:
1788 * - MasterID: Device ID of the differential master to follow.
1789 *
1790 * \param request Control object to request of the device
1791 * \returns Status Code of the request, 0 is OK
1792 */
1794
1795 /**
1796 * \brief Applies full neutral-brake by shorting motor leads together.
1797 *
1798 * - StaticBrake Parameters:
1799 * - UseTimesync: Set to true to delay applying this control request until a
1800 * timesync boundary (requires Phoenix Pro and CANivore). This
1801 * eliminates the impact of nondeterministic network delays in
1802 * exchange for a larger but deterministic control latency.
1803 *
1804 * This requires setting the ControlTimesyncFreqHz config in
1805 * MotorOutputConfigs. Additionally, when this is enabled, the
1806 * UpdateFreqHz of this request should be set to 0 Hz.
1807 *
1808 * \param request Control object to request of the device
1809 * \returns Status Code of the request, 0 is OK
1810 */
1812
1813 /**
1814 * \brief Request neutral output of actuator. The applied brake type
1815 * is determined by the NeutralMode configuration.
1816 *
1817 * - NeutralOut Parameters:
1818 * - UseTimesync: Set to true to delay applying this control request until a
1819 * timesync boundary (requires Phoenix Pro and CANivore). This
1820 * eliminates the impact of nondeterministic network delays in
1821 * exchange for a larger but deterministic control latency.
1822 *
1823 * This requires setting the ControlTimesyncFreqHz config in
1824 * MotorOutputConfigs. Additionally, when this is enabled, the
1825 * UpdateFreqHz of this request should be set to 0 Hz.
1826 *
1827 * \param request Control object to request of the device
1828 * \returns Status Code of the request, 0 is OK
1829 */
1831
1832 /**
1833 * \brief Request coast neutral output of actuator. The bridge is
1834 * disabled and the rotor is allowed to coast.
1835 *
1836 * - CoastOut Parameters:
1837 * - UseTimesync: Set to true to delay applying this control request until a
1838 * timesync boundary (requires Phoenix Pro and CANivore). This
1839 * eliminates the impact of nondeterministic network delays in
1840 * exchange for a larger but deterministic control latency.
1841 *
1842 * This requires setting the ControlTimesyncFreqHz config in
1843 * MotorOutputConfigs. Additionally, when this is enabled, the
1844 * UpdateFreqHz of this request should be set to 0 Hz.
1845 *
1846 * \param request Control object to request of the device
1847 * \returns Status Code of the request, 0 is OK
1848 */
1850
1851 /**
1852 * \brief Differential control with duty cycle average target and
1853 * position difference target.
1854 *
1855 * - Diff_DutyCycleOut_Position Parameters:
1856 * - AverageRequest: Average DutyCycleOut request of the mechanism.
1857 * - DifferentialRequest: Differential PositionDutyCycle request of the
1858 * mechanism.
1859 *
1860 * \param request Control object to request of the device
1861 * \returns Status Code of the request, 0 is OK
1862 */
1863 virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_DutyCycleOut_Position &request) = 0;
1864
1865 /**
1866 * \brief Differential control with position average target and
1867 * position difference target using dutycycle control.
1868 *
1869 * - Diff_PositionDutyCycle_Position Parameters:
1870 * - AverageRequest: Average PositionDutyCycle request of the mechanism.
1871 * - DifferentialRequest: Differential PositionDutyCycle request of the
1872 * mechanism.
1873 *
1874 * \param request Control object to request of the device
1875 * \returns Status Code of the request, 0 is OK
1876 */
1877 virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_PositionDutyCycle_Position &request) = 0;
1878
1879 /**
1880 * \brief Differential control with velocity average target and
1881 * position difference target using dutycycle control.
1882 *
1883 * - Diff_VelocityDutyCycle_Position Parameters:
1884 * - AverageRequest: Average VelocityDutyCYcle request of the mechanism.
1885 * - DifferentialRequest: Differential PositionDutyCycle request of the
1886 * mechanism.
1887 *
1888 * \param request Control object to request of the device
1889 * \returns Status Code of the request, 0 is OK
1890 */
1891 virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_VelocityDutyCycle_Position &request) = 0;
1892
1893 /**
1894 * \brief Differential control with Motion Magic® average target and
1895 * position difference target using dutycycle control.
1896 *
1897 * - Diff_MotionMagicDutyCycle_Position Parameters:
1898 * - AverageRequest: Average MotionMagicDutyCycle request of the mechanism.
1899 * - DifferentialRequest: Differential PositionDutyCycle request of the
1900 * mechanism.
1901 *
1902 * \param request Control object to request of the device
1903 * \returns Status Code of the request, 0 is OK
1904 */
1905 virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_MotionMagicDutyCycle_Position &request) = 0;
1906
1907 /**
1908 * \brief Differential control with duty cycle average target and
1909 * velocity difference target.
1910 *
1911 * - Diff_DutyCycleOut_Velocity Parameters:
1912 * - AverageRequest: Average DutyCycleOut request of the mechanism.
1913 * - DifferentialRequest: Differential VelocityDutyCycle request of the
1914 * mechanism.
1915 *
1916 * \param request Control object to request of the device
1917 * \returns Status Code of the request, 0 is OK
1918 */
1919 virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_DutyCycleOut_Velocity &request) = 0;
1920
1921 /**
1922 * \brief Differential control with position average target and
1923 * velocity difference target using dutycycle control.
1924 *
1925 * - Diff_PositionDutyCycle_Velocity Parameters:
1926 * - AverageRequest: Average PositionDutyCycle request of the mechanism.
1927 * - DifferentialRequest: Differential VelocityDutyCycle request of the
1928 * mechanism.
1929 *
1930 * \param request Control object to request of the device
1931 * \returns Status Code of the request, 0 is OK
1932 */
1933 virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_PositionDutyCycle_Velocity &request) = 0;
1934
1935 /**
1936 * \brief Differential control with velocity average target and
1937 * velocity difference target using dutycycle control.
1938 *
1939 * - Diff_VelocityDutyCycle_Velocity Parameters:
1940 * - AverageRequest: Average VelocityDutyCycle request of the mechanism.
1941 * - DifferentialRequest: Differential VelocityDutyCycle request of the
1942 * mechanism.
1943 *
1944 * \param request Control object to request of the device
1945 * \returns Status Code of the request, 0 is OK
1946 */
1947 virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_VelocityDutyCycle_Velocity &request) = 0;
1948
1949 /**
1950 * \brief Differential control with Motion Magic® average target and
1951 * velocity difference target using dutycycle control.
1952 *
1953 * - Diff_MotionMagicDutyCycle_Velocity Parameters:
1954 * - AverageRequest: Average MotionMagicDutyCycle request of the mechanism.
1955 * - DifferentialRequest: Differential VelocityDutyCycle request of the
1956 * mechanism.
1957 *
1958 * \param request Control object to request of the device
1959 * \returns Status Code of the request, 0 is OK
1960 */
1961 virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_MotionMagicDutyCycle_Velocity &request) = 0;
1962
1963 /**
1964 * \brief Differential control with voltage average target and
1965 * position difference target.
1966 *
1967 * - Diff_VoltageOut_Position Parameters:
1968 * - AverageRequest: Average VoltageOut request of the mechanism.
1969 * - DifferentialRequest: Differential PositionVoltage request of the mechanism.
1970 *
1971 * \param request Control object to request of the device
1972 * \returns Status Code of the request, 0 is OK
1973 */
1974 virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_VoltageOut_Position &request) = 0;
1975
1976 /**
1977 * \brief Differential control with position average target and
1978 * position difference target using voltage control.
1979 *
1980 * - Diff_PositionVoltage_Position Parameters:
1981 * - AverageRequest: Average PositionVoltage request of the mechanism.
1982 * - DifferentialRequest: Differential PositionVoltage request of the mechanism.
1983 *
1984 * \param request Control object to request of the device
1985 * \returns Status Code of the request, 0 is OK
1986 */
1987 virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_PositionVoltage_Position &request) = 0;
1988
1989 /**
1990 * \brief Differential control with velocity average target and
1991 * position difference target using voltage control.
1992 *
1993 * - Diff_VelocityVoltage_Position Parameters:
1994 * - AverageRequest: Average VelocityVoltage request of the mechanism.
1995 * - DifferentialRequest: Differential PositionVoltage request of the mechanism.
1996 *
1997 * \param request Control object to request of the device
1998 * \returns Status Code of the request, 0 is OK
1999 */
2000 virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_VelocityVoltage_Position &request) = 0;
2001
2002 /**
2003 * \brief Differential control with Motion Magic® average target and
2004 * position difference target using voltage control.
2005 *
2006 * - Diff_MotionMagicVoltage_Position Parameters:
2007 * - AverageRequest: Average MotionMagicVoltage request of the mechanism.
2008 * - DifferentialRequest: Differential PositionVoltage request of the mechanism.
2009 *
2010 * \param request Control object to request of the device
2011 * \returns Status Code of the request, 0 is OK
2012 */
2013 virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_MotionMagicVoltage_Position &request) = 0;
2014
2015 /**
2016 * \brief Differential control with voltage average target and
2017 * velocity difference target.
2018 *
2019 * - Diff_VoltageOut_Velocity Parameters:
2020 * - AverageRequest: Average VoltageOut request of the mechanism.
2021 * - DifferentialRequest: Differential VelocityVoltage request of the mechanism.
2022 *
2023 * \param request Control object to request of the device
2024 * \returns Status Code of the request, 0 is OK
2025 */
2026 virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_VoltageOut_Velocity &request) = 0;
2027
2028 /**
2029 * \brief Differential control with position average target and
2030 * velocity difference target using voltage control.
2031 *
2032 * - Diff_PositionVoltage_Velocity Parameters:
2033 * - AverageRequest: Average PositionVoltage request of the mechanism.
2034 * - DifferentialRequest: Differential VelocityVoltage request of the mechanism.
2035 *
2036 * \param request Control object to request of the device
2037 * \returns Status Code of the request, 0 is OK
2038 */
2039 virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_PositionVoltage_Velocity &request) = 0;
2040
2041 /**
2042 * \brief Differential control with velocity average target and
2043 * velocity difference target using voltage control.
2044 *
2045 * - Diff_VelocityVoltage_Velocity Parameters:
2046 * - AverageRequest: Average VelocityVoltage request of the mechanism.
2047 * - DifferentialRequest: Differential VelocityVoltage request of the mechanism.
2048 *
2049 * \param request Control object to request of the device
2050 * \returns Status Code of the request, 0 is OK
2051 */
2052 virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_VelocityVoltage_Velocity &request) = 0;
2053
2054 /**
2055 * \brief Differential control with Motion Magic® average target and
2056 * velocity difference target using voltage control.
2057 *
2058 * - Diff_MotionMagicVoltage_Velocity Parameters:
2059 * - AverageRequest: Average MotionMagicVoltage request of the mechanism.
2060 * - DifferentialRequest: Differential VelocityVoltage request of the mechanism.
2061 *
2062 * \param request Control object to request of the device
2063 * \returns Status Code of the request, 0 is OK
2064 */
2065 virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_MotionMagicVoltage_Velocity &request) = 0;
2066
2067 /**
2068 * \brief Control device with generic control request object. User must make
2069 * sure the specified object is castable to a valid control request,
2070 * otherwise this function will fail at run-time and return the NotSupported
2071 * StatusCode
2072 *
2073 * \param request Control object to request of the device
2074 * \returns Status Code of the request, 0 is OK
2075 */
2077
2078};
2079
2080}
2081}
2082}
2083}
2084
Request coast neutral output of actuator.
Definition CoastOut.hpp:25
Abstract Control Request class that other control requests extend for use.
Definition ControlRequest.hpp:30
Request a specified motor duty cycle with a differential position closed-loop.
Definition DifferentialDutyCycle.hpp:30
Follow the differential motor output of another Talon.
Definition DifferentialFollower.hpp:28
Requests Motion Magic® to target a final position using a motion profile, and PID to a differential p...
Definition DifferentialMotionMagicDutyCycle.hpp:34
Requests Motion Magic® to target a final position using a motion profile, and PID to a differential p...
Definition DifferentialMotionMagicVoltage.hpp:33
Request PID to target position with a differential position setpoint.
Definition DifferentialPositionDutyCycle.hpp:28
Request PID to target position with a differential position setpoint.
Definition DifferentialPositionVoltage.hpp:28
Follow the differential motor output of another Talon while ignoring the master's invert setting.
Definition DifferentialStrictFollower.hpp:30
Request PID to target velocity with a differential position setpoint.
Definition DifferentialVelocityDutyCycle.hpp:29
Request PID to target velocity with a differential position setpoint.
Definition DifferentialVelocityVoltage.hpp:29
Request a specified voltage with a differential position closed-loop.
Definition DifferentialVoltage.hpp:30
Request a specified motor duty cycle.
Definition DutyCycleOut.hpp:27
Requires Phoenix Pro and CANivore; Requests Motion Magic® to target a final position using a motion p...
Definition DynamicMotionMagicDutyCycle.hpp:41
Requires Phoenix Pro and CANivore; Requests Motion Magic® to target a final position using a motion p...
Definition DynamicMotionMagicVoltage.hpp:40
Follow the motor output of another Talon.
Definition Follower.hpp:28
Requests Motion Magic® to target a final position using a motion profile.
Definition MotionMagicDutyCycle.hpp:35
Requests Motion Magic® to target a final position using an exponential motion profile.
Definition MotionMagicExpoDutyCycle.hpp:38
Requests Motion Magic® to target a final position using an exponential motion profile.
Definition MotionMagicExpoVoltage.hpp:37
Requests Motion Magic® to target a final velocity using a motion profile.
Definition MotionMagicVelocityDutyCycle.hpp:42
Requests Motion Magic® to target a final velocity using a motion profile.
Definition MotionMagicVelocityVoltage.hpp:41
Requests Motion Magic® to target a final position using a motion profile.
Definition MotionMagicVoltage.hpp:34
Request neutral output of actuator.
Definition NeutralOut.hpp:25
Request PID to target position with duty cycle feedforward.
Definition PositionDutyCycle.hpp:30
Request PID to target position with voltage feedforward.
Definition PositionVoltage.hpp:30
Applies full neutral-brake by shorting motor leads together.
Definition StaticBrake.hpp:24
Follow the motor output of another Talon while ignoring the master's invert setting.
Definition StrictFollower.hpp:30
Request PID to target velocity with duty cycle feedforward.
Definition VelocityDutyCycle.hpp:30
Request PID to target velocity with voltage feedforward.
Definition VelocityVoltage.hpp:30
Request a specified voltage.
Definition VoltageOut.hpp:28
Contains all control functions available for devices that support Talon controls.
Definition HasTalonControls.hpp:69
virtual ctre::phoenix::StatusCode SetControl(const controls::Follower &request)=0
Follow the motor output of another Talon.
virtual ctre::phoenix::StatusCode SetControl(const controls::DifferentialVelocityVoltage &request)=0
Request PID to target velocity with a differential position setpoint.
virtual ctre::phoenix::StatusCode SetControl(const controls::NeutralOut &request)=0
Request neutral output of actuator.
virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_VoltageOut_Velocity &request)=0
Differential control with voltage average target and velocity difference target.
virtual ctre::phoenix::StatusCode SetControl(const controls::ControlRequest &request)=0
Control device with generic control request object.
virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_VelocityDutyCycle_Position &request)=0
Differential control with velocity average target and position difference target using dutycycle cont...
virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_PositionVoltage_Position &request)=0
Differential control with position average target and position difference target using voltage contro...
virtual ctre::phoenix::StatusCode SetControl(const controls::MotionMagicExpoDutyCycle &request)=0
Requests Motion Magic® to target a final position using an exponential motion profile.
virtual ctre::phoenix::StatusCode SetControl(const controls::VelocityVoltage &request)=0
Request PID to target velocity with voltage feedforward.
virtual ctre::phoenix::StatusCode SetControl(const controls::DifferentialPositionDutyCycle &request)=0
Request PID to target position with a differential position setpoint.
virtual ctre::phoenix::StatusCode SetControl(const controls::DynamicMotionMagicVoltage &request)=0
Requests Motion Magic® to target a final position using a motion profile.
virtual ctre::phoenix::StatusCode SetControl(const controls::MotionMagicVelocityDutyCycle &request)=0
Requests Motion Magic® to target a final velocity using a motion profile.
virtual ctre::phoenix::StatusCode SetControl(const controls::MotionMagicVelocityVoltage &request)=0
Requests Motion Magic® to target a final velocity using a motion profile.
virtual ctre::phoenix::StatusCode SetControl(const controls::DynamicMotionMagicDutyCycle &request)=0
Requests Motion Magic® to target a final position using a motion profile.
virtual ctre::phoenix::StatusCode SetControl(const controls::DifferentialStrictFollower &request)=0
Follow the differential motor output of another Talon while ignoring the master's invert setting.
virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_VelocityVoltage_Position &request)=0
Differential control with velocity average target and position difference target using voltage contro...
virtual ctre::phoenix::StatusCode SetControl(const controls::PositionVoltage &request)=0
Request PID to target position with voltage feedforward.
virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_VelocityDutyCycle_Velocity &request)=0
Differential control with velocity average target and velocity difference target using dutycycle cont...
virtual ctre::phoenix::StatusCode SetControl(const controls::DutyCycleOut &request)=0
Request a specified motor duty cycle.
virtual ctre::phoenix::StatusCode SetControl(const controls::DifferentialVoltage &request)=0
Request a specified voltage with a differential position closed-loop.
virtual ctre::phoenix::StatusCode SetControl(const controls::DifferentialMotionMagicVoltage &request)=0
Requests Motion Magic® to target a final position using a motion profile, and PID to a differential p...
virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_PositionDutyCycle_Velocity &request)=0
Differential control with position average target and velocity difference target using dutycycle cont...
virtual ctre::phoenix::StatusCode SetControl(const controls::VelocityDutyCycle &request)=0
Request PID to target velocity with duty cycle feedforward.
virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_VoltageOut_Position &request)=0
Differential control with voltage average target and position difference target.
virtual ctre::phoenix::StatusCode SetControl(const controls::DifferentialFollower &request)=0
Follow the differential motor output of another Talon.
virtual ctre::phoenix::StatusCode SetControl(const controls::StrictFollower &request)=0
Follow the motor output of another Talon while ignoring the master's invert setting.
virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_PositionVoltage_Velocity &request)=0
Differential control with position average target and velocity difference target using voltage contro...
virtual ctre::phoenix::StatusCode SetControl(const controls::MotionMagicExpoVoltage &request)=0
Requests Motion Magic® to target a final position using an exponential motion profile.
virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_MotionMagicDutyCycle_Position &request)=0
Differential control with Motion Magic® average target and position difference target using dutycycle...
virtual ctre::phoenix::StatusCode SetControl(const controls::CoastOut &request)=0
Request coast neutral output of actuator.
virtual ctre::phoenix::StatusCode SetControl(const controls::MotionMagicDutyCycle &request)=0
Requests Motion Magic® to target a final position using a motion profile.
virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_MotionMagicDutyCycle_Velocity &request)=0
Differential control with Motion Magic® average target and velocity difference target using dutycycle...
virtual ctre::phoenix::StatusCode SetControl(const controls::DifferentialVelocityDutyCycle &request)=0
Request PID to target velocity with a differential position setpoint.
virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_MotionMagicVoltage_Velocity &request)=0
Differential control with Motion Magic® average target and velocity difference target using voltage c...
virtual ctre::phoenix::StatusCode SetControl(const controls::PositionDutyCycle &request)=0
Request PID to target position with duty cycle feedforward.
virtual ctre::phoenix::StatusCode SetControl(const controls::VoltageOut &request)=0
Request a specified voltage.
virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_DutyCycleOut_Velocity &request)=0
Differential control with duty cycle average target and velocity difference target.
virtual ctre::phoenix::StatusCode SetControl(const controls::MotionMagicVoltage &request)=0
Requests Motion Magic® to target a final position using a motion profile.
virtual ctre::phoenix::StatusCode SetControl(const controls::StaticBrake &request)=0
Applies full neutral-brake by shorting motor leads together.
virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_PositionDutyCycle_Position &request)=0
Differential control with position average target and position difference target using dutycycle cont...
virtual ctre::phoenix::StatusCode SetControl(const controls::DifferentialPositionVoltage &request)=0
Request PID to target position with a differential position setpoint.
virtual ctre::phoenix::StatusCode SetControl(const controls::DifferentialDutyCycle &request)=0
Request a specified motor duty cycle with a differential position closed-loop.
virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_MotionMagicVoltage_Position &request)=0
Differential control with Motion Magic® average target and position difference target using voltage c...
virtual ctre::phoenix::StatusCode SetControl(const controls::DifferentialMotionMagicDutyCycle &request)=0
Requests Motion Magic® to target a final position using a motion profile, and PID to a differential p...
virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_VelocityVoltage_Velocity &request)=0
Differential control with velocity average target and velocity difference target using voltage contro...
virtual ctre::phoenix::StatusCode SetControl(const controls::compound::Diff_DutyCycleOut_Position &request)=0
Differential control with duty cycle average target and position difference target.
Status codes reported by APIs, including OK, warnings, and errors.
Definition StatusCodes.h:27
Definition Diff_PositionDutyCycle_Position.hpp:15