Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update s2e-aobc version to v5.0.0 #8

Merged
merged 3 commits into from
Oct 20, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 12 additions & 4 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,17 @@ if(NOT DEFINED C2A_NAME)
set(C2A_NAME "c2a-aobc-example")
endif()

if(WIN32)
elseif(APPLE)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ./out) #set build path
## Directory path for ini files
if(NOT DEFINED INI_FILE_DIR_FROM_EXE)
set(INI_FILE_DIR_FROM_EXE ../../data/initialize_files)
endif()

if(NOT DEFINED EXT_LIB_DIR_FROM_EXE)
set(EXT_LIB_DIR_FROM_EXE ../../s2e-aobc/ExtLibraries)
endif()

if(NOT DEFINED CORE_DIR_FROM_EXE)
set(CORE_DIR_FROM_EXE ../../s2e-aobc/s2e-core)
endif()

## options to use C2A
Expand Down Expand Up @@ -81,7 +89,7 @@ add_subdirectory(${S2E_CORE_DIR}/src/simulation s2e_core/simulation)
## Set build source files
file(GLOB_RECURSE SOURCE_FILES ${S2E_AOBC_DIR}/src/*.cpp)
# Uncomment the following line to exclude any files that match the REGEX from SOURCE_FILES
# list(FILTER SOURCE_FILES EXCLUDE REGEX ${CMAKE_CURRENT_LIST_DIR}/src/Example/example.cpp)
list(FILTER SOURCE_FILES EXCLUDE REGEX ${S2E_AOBC_DIR}/src/component/aocs/cube_wheel.cpp)

# Create executable file
add_executable(${PROJECT_NAME} ${SOURCE_FILES})
Expand Down
104 changes: 104 additions & 0 deletions data/initialize_files/components/component_interference.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
[MTQ_MAGNETOMETER_INTERFERENCE_0]
// MTQ - MPU9250 magnetometer

// x: MTQ output vector at MTQ component frame [Am2]
// y: Additional bias at magnetometer component frame [nT]
// A1, A2, ...: Polynomial coefficients defined in this file
// ** measns Hadamard product
// y = A1 * x + A2 * x ** x + A3 * x ** x ** x ...

polynomial_degree = 1

// We do not have zero coefficients

// 1st coefficients of additional bias A1 [nT/Am2]
additional_bias_by_mtq_coefficients_1(0) = 10000.0 // MTQ X -> Magnetometer X
additional_bias_by_mtq_coefficients_1(1) = -20000.0 // MTQ X -> Magnetometer Y
additional_bias_by_mtq_coefficients_1(2) = 30000.0 // MTQ X -> Magnetometer Z
additional_bias_by_mtq_coefficients_1(3) = 40000.0 // MTQ Y -> Magnetometer X
additional_bias_by_mtq_coefficients_1(4) = -50000.0 // MTQ Y -> Magnetometer Y
additional_bias_by_mtq_coefficients_1(5) = 60000.0 // MTQ Y -> Magnetometer Z
additional_bias_by_mtq_coefficients_1(6) = 70000.0 // MTQ Z -> Magnetometer X
additional_bias_by_mtq_coefficients_1(7) = -80000.0 // MTQ Z -> Magnetometer Y
additional_bias_by_mtq_coefficients_1(8) = 90000.0 // MTQ Z -> Magnetometer Z

// 2nd coefficients of additional bias A2 [nT/Am2^2]
additional_bias_by_mtq_coefficients_2(0) = -10000.0 // MTQ X -> Magnetometer X
additional_bias_by_mtq_coefficients_2(1) = 20000.0 // MTQ X -> Magnetometer Y
additional_bias_by_mtq_coefficients_2(2) = -30000.0 // MTQ X -> Magnetometer Z
additional_bias_by_mtq_coefficients_2(3) = -40000.0 // MTQ Y -> Magnetometer X
additional_bias_by_mtq_coefficients_2(4) = 50000.0 // MTQ Y -> Magnetometer Y
additional_bias_by_mtq_coefficients_2(5) = -60000.0 // MTQ Y -> Magnetometer Z
additional_bias_by_mtq_coefficients_2(6) = -70000.0 // MTQ Z -> Magnetometer X
additional_bias_by_mtq_coefficients_2(7) = 80000.0 // MTQ Z -> Magnetometer Y
additional_bias_by_mtq_coefficients_2(8) = -90000.0 // MTQ Z -> Magnetometer Z

[MTQ_MAGNETOMETER_INTERFERENCE_1]
// MTQ - RM3100 on AOBC

// x: MTQ output vector at MTQ component frame [Am2]
// y: Additional bias at magnetometer component frame [nT]
// A1, A2, ...: Polynomial coefficients defined in this file
// ** measns Hadamard product
// y = A1 * x + A2 * x ** x + A3 * x ** x ** x ...

polynomial_degree = 1

// We do not have zero coefficients

// 1st coefficients of additional bias A1 [nT/Am2]
additional_bias_by_mtq_coefficients_1(0) = 11000.0 // MTQ X -> Magnetometer X
additional_bias_by_mtq_coefficients_1(1) = -21000.0 // MTQ X -> Magnetometer Y
additional_bias_by_mtq_coefficients_1(2) = 31000.0 // MTQ X -> Magnetometer Z
additional_bias_by_mtq_coefficients_1(3) = 41000.0 // MTQ Y -> Magnetometer X
additional_bias_by_mtq_coefficients_1(4) = -51000.0 // MTQ Y -> Magnetometer Y
additional_bias_by_mtq_coefficients_1(5) = 61000.0 // MTQ Y -> Magnetometer Z
additional_bias_by_mtq_coefficients_1(6) = 71000.0 // MTQ Z -> Magnetometer X
additional_bias_by_mtq_coefficients_1(7) = -81000.0 // MTQ Z -> Magnetometer Y
additional_bias_by_mtq_coefficients_1(8) = 91000.0 // MTQ Z -> Magnetometer Z

// 2nd coefficients of additional bias A2 [nT/Am2^2]
additional_bias_by_mtq_coefficients_2(0) = -11000.0 // MTQ X -> Magnetometer X
additional_bias_by_mtq_coefficients_2(1) = 21000.0 // MTQ X -> Magnetometer Y
additional_bias_by_mtq_coefficients_2(2) = -31000.0 // MTQ X -> Magnetometer Z
additional_bias_by_mtq_coefficients_2(3) = -41000.0 // MTQ Y -> Magnetometer X
additional_bias_by_mtq_coefficients_2(4) = 51000.0 // MTQ Y -> Magnetometer Y
additional_bias_by_mtq_coefficients_2(5) = -61000.0 // MTQ Y -> Magnetometer Z
additional_bias_by_mtq_coefficients_2(6) = -71000.0 // MTQ Z -> Magnetometer X
additional_bias_by_mtq_coefficients_2(7) = 81000.0 // MTQ Z -> Magnetometer Y
additional_bias_by_mtq_coefficients_2(8) = -91000.0 // MTQ Z -> Magnetometer Z

[MTQ_MAGNETOMETER_INTERFERENCE_2]
// MTQ - RM3100 on external board

// x: MTQ output vector at MTQ component frame [Am2]
// y: Additional bias at magnetometer component frame [nT]
// A1, A2, ...: Polynomial coefficients defined in this file
// ** measns Hadamard product
// y = A1 * x + A2 * x ** x + A3 * x ** x ** x ...

polynomial_degree = 1

// We do not have zero coefficients

// 1st coefficients of additional bias A1 [nT/Am2]
additional_bias_by_mtq_coefficients_1(0) = 12000.0 // MTQ X -> Magnetometer X
additional_bias_by_mtq_coefficients_1(1) = -22000.0 // MTQ X -> Magnetometer Y
additional_bias_by_mtq_coefficients_1(2) = 32000.0 // MTQ X -> Magnetometer Z
additional_bias_by_mtq_coefficients_1(3) = 42000.0 // MTQ Y -> Magnetometer X
additional_bias_by_mtq_coefficients_1(4) = -52000.0 // MTQ Y -> Magnetometer Y
additional_bias_by_mtq_coefficients_1(5) = 62000.0 // MTQ Y -> Magnetometer Z
additional_bias_by_mtq_coefficients_1(6) = 72000.0 // MTQ Z -> Magnetometer X
additional_bias_by_mtq_coefficients_1(7) = -82000.0 // MTQ Z -> Magnetometer Y
additional_bias_by_mtq_coefficients_1(8) = 92000.0 // MTQ Z -> Magnetometer Z

// 2nd coefficients of additional bias A2 [nT/Am2^2]
additional_bias_by_mtq_coefficients_2(0) = -12000.0 // MTQ X -> Magnetometer X
additional_bias_by_mtq_coefficients_2(1) = 22000.0 // MTQ X -> Magnetometer Y
additional_bias_by_mtq_coefficients_2(2) = -32000.0 // MTQ X -> Magnetometer Z
additional_bias_by_mtq_coefficients_2(3) = -42000.0 // MTQ Y -> Magnetometer X
additional_bias_by_mtq_coefficients_2(4) = 52000.0 // MTQ Y -> Magnetometer Y
additional_bias_by_mtq_coefficients_2(5) = -62000.0 // MTQ Y -> Magnetometer Z
additional_bias_by_mtq_coefficients_2(6) = -72000.0 // MTQ Z -> Magnetometer X
additional_bias_by_mtq_coefficients_2(7) = 82000.0 // MTQ Z -> Magnetometer Y
additional_bias_by_mtq_coefficients_2(8) = -92000.0 // MTQ Z -> Magnetometer Z
137 changes: 137 additions & 0 deletions data/initialize_files/components/cube_wheel_small.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
[RW1]
// prescaler defines update period of thie component
// update period = prescaler * step sec
prescaler = 1
//Inertia of the RW [kgm^2]
inertia = 2.11e-6
//Maximum torque [Nm]
max_torque = 0.00023
//Maximum angular velocity [rpm]
//The RW can drive (-max_angular_velocity,+max_angular_velocity)
max_angular_velocity = 8000.0
// Direction of axis of the RW at the body fixied frame
// plus means direction of rotation (output torque is minus direction)
direction_b(0) = -1.0
direction_b(1) = 0.0
direction_b(2) = 0.0
//The control delay[s]
dead_time = 1.0
//Coefficient of first order lag for driving case
firstorder_lag_coef(0) = 2.0
firstorder_lag_coef(1) = 0.0
firstorder_lag_coef(2) = 0.0
//Coefficient of first order lag for coasting case
coasting_lag_coef(0) = 2.0
coasting_lag_coef(1) = 0.0
coasting_lag_coef(2) = 0.0
//For drive initialize
//They should be zero for normal case
motor_drive_init = 0
angular_velocity_init = 0.0

//Parameters for calculate RW jitter
jitter_calculation = DISABLE
jitter_logging = DISABLE
radial_force_harmonics_coef_path = ../../data/ini/components/RWDisturbance/radial_force_harmonics_coef.csv
radial_torque_harmonics_coef_path = ../../data/ini/components/RWDisturbance/radial_torque_harmonics_coef.csv
harmonics_degree = 12
considers_structural_resonance = DISABLE
structural_resonance_freq = 585.0 //[Hz]
damping_factor = 0.1 //[ ]
bandwidth = 0.001 //[ ]

// Power Port
minimum_voltage = 8.8 // V
assumed_power_consumption = 0.88 //W

[RW2]
// prescaler defines update period of thie component
// update period = prescaler * step sec
prescaler = 1
//Inertia of the RW [kgm^2]
inertia = 2.11e-6
//Maximum torque [Nm]
max_torque = 0.00023
//Maximum angular velocity [rpm]
//The RW can drive (-max_angular_velocity,+max_angular_velocity)
max_angular_velocity = 8000.0
// Direction of axis of the RW at the body fixied frame
// plus means direction of rotation (output torque is minus direction)
direction_b(0) = 0.0
direction_b(1) = -1.0
direction_b(2) = 0.0
//The control delay[s]
dead_time = 1.0
//Constant of first order lag for driving case
firstorder_lag_coef(0) = 2.0
firstorder_lag_coef(1) = 0.0
firstorder_lag_coef(2) = 0.0
//Constant of first order lag for coasting case
coasting_lag_coef(0) = 2.0
coasting_lag_coef(1) = 0.0
coasting_lag_coef(2) = 0.0
//For drive initialize
//They should be zero for normal case
motor_drive_init = 0
angular_velocity_init = 0.0

//Parameters for calculate RW jitter
jitter_calculation = DISABLE
jitter_logging = DISABLE
radial_force_harmonics_coef_path = ../../data/ini/components/RWDisturbance/radial_force_harmonics_coef.csv
radial_torque_harmonics_coef_path = ../../data/ini/components/RWDisturbance/radial_torque_harmonics_coef.csv
harmonics_degree = 12
considers_structural_resonance = DISABLE
structural_resonance_freq = 585.0 //[Hz]
damping_factor = 0.1 //[ ]
bandwidth = 0.001 //[ ]

// Power Port
minimum_voltage = 8.8 // V
assumed_power_consumption = 0.88 //W

[RW3]
// prescaler defines update period of thie component
// update period = prescaler * step sec
prescaler = 1
//Inertia of the RW [kgm^2]
inertia = 2.11e-6
//Maximum torque [Nm]
max_torque = 0.00023
//Maximum angular velocity [rpm]
//The RW can drive (-max_angular_velocity,+max_angular_velocity)
max_angular_velocity = 8000.0
// Direction of axis of the RW at the body fixied frame
// plus means direction of rotation (output torque is minus direction)
direction_b(0) = 0.0
direction_b(1) = 0.0
direction_b(2) = -1.0
//The control deray[s]
dead_time = 1.0
//Constant of first order lag for driving case
firstorder_lag_coef(0) = 2.0
firstorder_lag_coef(1) = 0.0
firstorder_lag_coef(2) = 0.0
//Constant of first order lag for coasting case
coasting_lag_coef(0) = 2.0
coasting_lag_coef(1) = 0.0
coasting_lag_coef(2) = 0.0
//For drive initialize
//They should be zero for normal case
motor_drive_init = 0
angular_velocity_init = 0.0

//Parameters for calculate RW jitter
jitter_calculation = DISABLE
jitter_logging = DISABLE
radial_force_harmonics_coef_path = ../../data/ini/components/RWDisturbance/radial_force_harmonics_coef.csv
radial_torque_harmonics_coef_path = ../../data/ini/components/RWDisturbance/radial_torque_harmonics_coef.csv
harmonics_degree = 12
considers_structural_resonance = DISABLE
structural_resonance_freq = 585.0 //[Hz]
damping_factor = 0.1 //[ ]
bandwidth = 0.001 //[ ]

// Power Port
minimum_voltage = 8.8 // V
assumed_power_consumption = 0.88 //W
6 changes: 6 additions & 0 deletions data/initialize_files/components/mpu9250.ini
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,9 @@ normal_random_standard_deviation_c_rad_s(2) = 0.00174533
range_to_constant_rad_s = 8.73 // smaller than Range_to_zero
range_to_zero_rad_s = 16.0

[I2C_PORT_GYRO]
i2c_address = 0x68

[POWER_PORT]
minimum_voltage_V = 3.3 // V
assumed_power_consumption_W = 0.001 //W
Expand Down Expand Up @@ -96,6 +99,9 @@ normal_random_standard_deviation_c_nT(2) = 700.0
range_to_constant_nT = 1.0e6 // smaller than Range_to_zero
range_to_zero_nT = 1.5e6

[I2C_PORT_MAG]
i2c_address = 0x0c

[POWER_PORT]
minimum_voltage_V = 3.3 // V
assumed_power_consumption_W = 0.001 //W
9 changes: 9 additions & 0 deletions data/initialize_files/components/mtq_seiren.ini
Original file line number Diff line number Diff line change
Expand Up @@ -52,3 +52,12 @@ white_noise_standard_deviation_c_Am2(2) = 0.0
[POWER_PORT]
minimum_voltage_V = 5.0 // V
assumed_power_consumption_W = 0.65 //W

[MTQ_GPIO_PORT]
number_of_ports = 6
gpio_port(0) = 78
gpio_port(1) = 81
gpio_port(2) = 82
gpio_port(3) = 83
gpio_port(4) = 84
gpio_port(5) = 68
Loading