Loop Timing Witness
Native controller and runtime interfaces; hardware qualification pending
Toggle main menu visibility
Loading...
Searching...
No Matches
witness_controller.h
Go to the documentation of this file.
1
// SPDX-License-Identifier: AGPL-3.0-or-later
2
// Commercial license available
3
// © Concepts 1996–2026 Miroslav Šotek. All rights reserved.
4
// © Code 2020–2026 Miroslav Šotek. All rights reserved.
5
// ORCID: 0009-0009-3560-0851
6
// Contact: www.anulum.li | protoscience@anulum.li
7
// Loop Timing Witness — controllers/c/witness_controller.h
8
12
13
#ifndef WITNESS_CONTROLLER_H
14
#define WITNESS_CONTROLLER_H
15
16
#include <stdbool.h>
17
#include <stdint.h>
18
20
typedef
struct
{
21
int32_t
kp
,
ki_period
,
derivative_decay
,
derivative_gain
;
22
int32_t
position_gain
,
velocity_gain
,
reference_gain
;
23
int32_t
output_min
,
output_max
,
integral_min
,
integral_max
;
24
}
witness_coefficients
;
25
27
typedef
struct
{
28
int32_t
integral
,
derivative
,
previous_position
;
29
bool
initialized
;
30
}
witness_pid_state
;
31
33
typedef
struct
{
34
uint32_t
cycle
;
35
int32_t
command
,
integral
,
derivative
;
36
bool
clipped
,
integral_held
;
37
}
witness_command
;
38
40
bool
witness_coefficients_valid
(
const
witness_coefficients
*coefficients);
41
43
void
witness_pid_reset
(
witness_pid_state
*state);
44
54
bool
witness_pid_step
(
const
witness_coefficients
*coefficients,
witness_pid_state
*state,
55
uint32_t cycle, int32_t reference, int32_t position,
56
witness_command
*command);
57
64
bool
witness_lqr_step
(
const
witness_coefficients
*coefficients, uint32_t cycle, int32_t reference,
65
int32_t position, int32_t velocity,
witness_command
*command);
66
130
131
#endif
witness_coefficients
Definition
witness_controller.h:20
witness_coefficients::output_max
int32_t output_max
Definition
witness_controller.h:23
witness_coefficients::velocity_gain
int32_t velocity_gain
Definition
witness_controller.h:22
witness_coefficients::derivative_decay
int32_t derivative_decay
Definition
witness_controller.h:21
witness_coefficients::derivative_gain
int32_t derivative_gain
Definition
witness_controller.h:21
witness_coefficients::ki_period
int32_t ki_period
Definition
witness_controller.h:21
witness_coefficients::integral_max
int32_t integral_max
Definition
witness_controller.h:23
witness_coefficients::position_gain
int32_t position_gain
Definition
witness_controller.h:22
witness_coefficients::kp
int32_t kp
Definition
witness_controller.h:21
witness_coefficients::output_min
int32_t output_min
Definition
witness_controller.h:23
witness_coefficients::integral_min
int32_t integral_min
Definition
witness_controller.h:23
witness_coefficients::reference_gain
int32_t reference_gain
Definition
witness_controller.h:22
witness_command
Definition
witness_controller.h:33
witness_command::cycle
uint32_t cycle
Definition
witness_controller.h:34
witness_command::command
int32_t command
Definition
witness_controller.h:35
witness_command::integral
int32_t integral
Definition
witness_controller.h:35
witness_command::derivative
int32_t derivative
Definition
witness_controller.h:35
witness_command::integral_held
bool integral_held
Definition
witness_controller.h:36
witness_command::clipped
bool clipped
Definition
witness_controller.h:36
witness_pid_state
Definition
witness_controller.h:27
witness_pid_state::derivative
int32_t derivative
Definition
witness_controller.h:28
witness_pid_state::initialized
bool initialized
Definition
witness_controller.h:29
witness_pid_state::previous_position
int32_t previous_position
Definition
witness_controller.h:28
witness_pid_state::integral
int32_t integral
Definition
witness_controller.h:28
witness_lqr_step
bool witness_lqr_step(const witness_coefficients *coefficients, uint32_t cycle, int32_t reference, int32_t position, int32_t velocity, witness_command *command)
witness_pid_reset
void witness_pid_reset(witness_pid_state *state)
witness_pid_step
bool witness_pid_step(const witness_coefficients *coefficients, witness_pid_state *state, uint32_t cycle, int32_t reference, int32_t position, witness_command *command)
witness_coefficients_valid
bool witness_coefficients_valid(const witness_coefficients *coefficients)
controllers
c
witness_controller.h
Generated by
1.18.0