summaryrefslogtreecommitdiff
path: root/src/CMakeLists.txt
diff options
context:
space:
mode:
authorDawsyn Schraiber <[email protected]>2024-05-09 02:05:35 -0400
committerGitHub <[email protected]>2024-05-09 02:05:35 -0400
commit93acde052369568beaefb0d99629d8797f5c191f (patch)
treea3fb96ddad2d289aa7f8bf410c60cf6289bca7a1 /src/CMakeLists.txt
parent5f68c7a1b5c8dec82d4a2e1e12443a41b5196b1d (diff)
downloadactive-drag-system-93acde052369568beaefb0d99629d8797f5c191f.tar.gz
active-drag-system-93acde052369568beaefb0d99629d8797f5c191f.tar.bz2
active-drag-system-93acde052369568beaefb0d99629d8797f5c191f.zip
Raspberry Pi Pico (#12)
* Adding a 90% completed, compilable but untested ADS * Made basic changes to actuator & sensor. Also added motor class * Removed unnecessary .cpp files * Updated sensor & actuator classes, finished ads, added variable time step to kalman filter, set up all tests for future assertions * Relocated 'main' to 'active-drag-system.cpp'. Added more info to README * Removed main.cpp * Added more details to README * Changed some function parameters from pass-by-pointer to pass-by-reference. Also removed the std namespace * Started writing the test cases * Updated the .gitignore file * Removed some files that should be gitignored * Up to date with Jazz's pull request * Test Launch Branch Created; PRU Servo Control with Test Program * Added I2C device class and register IDs for MPL [INCOMPLETE SENSOR IMPLEMENTATION] Needs actual data getting function implementation for both sensors and register IDs for BNO, will implement shortly. * Partial implementation of MPL sensor Added startup method, still needs fleshed out data getters and setters and finished I2C implementation. MOST LIKELY WILL HAVE COMPILATION ISSUES. * *Hypothetically* complete MPL implementation NEEDS HARDWARE TESTING * IMU Header and init() method implementation Needs like, all data handling still lol * Hypothetically functional (Definitely won't compile) * We ball? * Conversion to Raspberry Pi Pico Build System; Removed Beaglebone specific code; Simple blinking example in ADS source file; builds for Pico W * Rearranged build so dependent upon cmake file already existing in pico-sdk; current executable prints current altitude, velocity, and time taken to read and calculate said values; ~320 us to do so * Altimeter interrupt callback for Pad to Boost State; dummy templates for other callbacks with comments describing potential implementation details * Altimeter interrupts relatively finished; need to test with vacuum chamber to verify behavior * Established interrupt pins as pullup and active-low; adjusted callback functions to properly use function pointers; still need to verify interrupt system with vacuum chamber * Removed weird artifact in .gitignore, adjust CMakeLists to auto pull pico sdk, added Dockerfile * added Docker dev container file * modified CMakeLists to auto pull sdk if not already downloaded, add build.sh script, fixed Dockerfile * added bno055 support * changed bno055 lin accel struct to use float instead of double * added bno055 support not tested, but compiles, fixed CMakLists to before I messed with it * added absolute quaternion output from bno055 * Added Euler and aboslute linear accelration * Flash implementation for data logging; each log entry is 32 bytes long * added base pwm functions and started on apogee detection * State machine verified functional with logging capabilities; currently on same core * Ooops missed double define, renamed LOOP_HZ to LOOP_PERIOD; State machine functional after merge still * Simple test program to see servo PWM range; logging with semaphores for safe multithreading * Kalman filters generously provided from various sources for temporary replacement; minimum deployment 30 percent; state machine functionality restored; multithreading logging verified; altimeter broke and replaced * Stop logging on END state; provide deployment function with AGL instead of ASL altitude * Various minimal changes; Flash size from 1MB to 8MB; M1939 to M2500T burn time; pin assignments for new PCB; External Status LED to Internal Status LED --------- Co-authored-by: Jazz Jackson <[email protected]> Co-authored-by: Cian Capacci <[email protected]> Co-authored-by: Gregory Wainer <[email protected]>
Diffstat (limited to 'src/CMakeLists.txt')
-rw-r--r--src/CMakeLists.txt101
1 files changed, 53 insertions, 48 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 0a50318..59d21de 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,49 +1,54 @@
add_executable(ads
- active_drag_system.cpp
-)
-
-add_executable(pru1
- pru1/sensors.cpp
-)
-
-add_executable(pru2
- pru2/servos.cpp
-)
-
-target_link_options(pru1 PRIVATE -static)
-target_link_options(pru2 PRIVATE -static)
-cmake_minimum_required(VERSION 3.16.3)
-
-include_directories( ../include )
-
-# Set Variables
-set(TARGET ActiveDragSystem)
-set(SOURCES active-drag-system.cpp ads.cpp actuationPlan.cpp surfaceFitModel.cpp rocketUtils.cpp sensorIMU.cpp sensorAltimeter.cpp motor.cpp logger.cpp kalmanfilter.cpp)
-
-
-# Create Executables & Link Dependencies
-add_executable(${TARGET} ${SOURCES})
-
-add_executable(${TARGET_B} ${SOURCES_B})
-target_link_libraries(${TARGET_B} PUBLIC gtest_main)
-add_test(NAME ${TARGET_B} COMMAND ${TARGET_B})
-
-add_executable(${TARGET_C} ${SOURCES_C})
-target_link_libraries(${TARGET_C} PUBLIC gtest_main)
-add_test(NAME ${TARGET_C} COMMAND ${TARGET_C})
-
-add_executable(${TARGET_D} ${SOURCES_D})
-target_link_libraries(${TARGET_D} PUBLIC gtest_main)
-add_test(NAME ${TARGET_D} COMMAND ${TARGET_D})
-
-add_executable(${TARGET_E} ${SOURCES_E})
-target_link_libraries(${TARGET_E} PUBLIC gtest_main)
-add_test(NAME ${TARGET_E} COMMAND ${TARGET_E})
-
-add_executable(${TARGET_F} ${SOURCES_F})
-target_link_libraries(${TARGET_F} PUBLIC gtest_main)
-add_test(NAME ${TARGET_F} COMMAND ${TARGET_F})
-
-add_executable(${TARGET_G} ${SOURCES_G})
-target_link_libraries(${TARGET_G} PUBLIC gtest_main)
-add_test(NAME ${TARGET_G} COMMAND ${TARGET_G})
+ active_drag_system.cpp
+ spi_flash.c
+ bno055.cpp
+ SimpleKalmanFilter.cpp
+ # kalmanfilter.cpp
+ pwm.cpp
+ AltEst/algebra.cpp
+ AltEst/altitude.cpp
+ AltEst/filters.cpp
+ )
+
+add_executable(read_flash
+ read_flash.c
+ spi_flash.c
+ )
+
+add_executable(servo_test
+ servo_test.cpp
+ pwm.cpp
+ )
+
+add_executable(alt_test
+ altimeter.cpp
+ )
+
+# pull in common dependencies
+target_link_libraries(ads pico_stdlib pico_multicore pico_sync hardware_i2c hardware_spi hardware_pwm pico_cyw43_arch_none ${Eigen_LIBRARIES})
+target_include_directories(ads PUBLIC ../include)
+
+target_link_libraries(read_flash pico_stdlib hardware_spi)
+target_include_directories(read_flash PUBLIC ../include)
+
+target_link_libraries(servo_test pico_stdlib hardware_pwm hardware_i2c)
+target_include_directories(servo_test PUBLIC ../include)
+
+target_link_libraries(alt_test pico_stdlib hardware_i2c hardware_gpio)
+
+pico_enable_stdio_usb(ads 1)
+pico_enable_stdio_uart(ads 0)
+
+pico_enable_stdio_usb(read_flash 1)
+pico_enable_stdio_uart(read_flash 0)
+
+pico_enable_stdio_usb(servo_test 1)
+pico_enable_stdio_uart(servo_test 0)
+
+pico_enable_stdio_usb(alt_test 1)
+pico_enable_stdio_uart(alt_test 0)
+# create map/bin/hex file etc.
+pico_add_extra_outputs(ads)
+pico_add_extra_outputs(read_flash)
+pico_add_extra_outputs(servo_test)
+pico_add_extra_outputs(alt_test)