-
Notifications
You must be signed in to change notification settings - Fork 0
MAAV-Software/embedded
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
MAAV CONTROLS REPOSITORY
by Sajan Patel, Clark Zhang, Zhengjie Cui, Sasawat Prankprakma, Nicholas Eckardt
------------------------------------------------------------------------------
This is the repository for MAAV's controls subteam.
All controls code, documentation, and other important products/resources will go here.
For more information or questions, contact:
* Sasawat Prankprakma (psasawat@umich.edu)
* Sajan Patel (sajanptl@umich.edu)
Updates as of Summer 2019
-------------------------
* 7 May 2019: Updating hwtest test cases to reflect current state of embedded
code (e.g., no Px4 flow sensor, adding include dependency for general.h). The
following tests are valid for 2019 and work:
kill, pilot, led, uart
The following test is valid for 2019 but does not work as intended (triggering
FaultISR):
lidar
The following test is invalid for 2019 and needs to be refactored to reflect
MAAV's 2019 requirements:
lcm
The following test is no longer necessary for 2019, so do not run it (but do not
remove it yet either; we will find a new location for it so that it remains archived):
imu
The main maav project is a working product that works as intended. Also, a
new programmer unit has been assembled, but it is the only working one at the
moment, so DO NOT MISPLACE IT OR MESS IT UP.
Installation Instructions (for test cases for hardware-independent code)
------------------------------------------------------------------------------
If working on CAEN, please followed the specialized CAEN instructions below
Ensure that you have cmake, eigen3, lcm, and boost installed. Make a build
directory:
mkdir build
Then go into the build directory:
cd build
Run cmake to initialize the build environment:
cmake ../
and address and correct any errors it might tell you (e.g. missing packages or
files are in incorrect places...HINT: use Google to help you out). Now you are
ready to build the hardware-independent controller code, cmeigen, and test
cases:
make -j7
Note that the -j7 is optional to enable faster, parallelized build, and that you
can choose any number (but we suggest 7 or 8 usually).
To run the test cases automatically:
make test
To build the HTML documentation you will need to install doxygen. To build it,
run the command:
make doc
If you need to clean anything up or remove the built files:
make clean
Making clean will not remove documentation files (limitation of cmake). If you
need to clean up the doxygen documentation:
make doc_clean
Any other questions should first be addressed to Google (if it's about make,
cmake, or Linux terminal commands) or the team leads (anything and everything).
CAEN Installation Instructions (for test cases for hardware-independent code)
------------------------------------------------------------------------------
If working on CAEN, please followed the specialized CAEN instructions below
Starting in the repository directory (by default "ctrl"), go up one level:
cd ..
Download and unzip eigen3 into "Eigen"
Download and unzip boost into "boost"
Go into the boost directory
cd boost
Install boost (this will take some time)
./bootstrap.sh
./b2
Check that everything is in the right place. From the dir that contains the
cloned respository, run:
ls
If it is set up right, and the repository is in a folder named ctrl,
the output should look somewhat like:
> boost ctrl Eigen
Go into the repository:
cd ctrl
Make a build directory:
mkdir build
Then go into the build directory:
cd build
Run cmake to initialize the build environment:
cmake -D CAEN ../
and address and correct any errors it might tell you (e.g. missing packages or
files are in incorrect places...HINT: use Google to help you out). Now you are
ready to build the hardware-independent controller code, cmeigen, and test
cases:
make -j7
Note that the -j7 is optional to enable faster, parallelized build, and that you
can choose any number (but we suggest 7 or 8 usually).
To run the test cases automatically:
make test
If you need to clean anything up or remove the built files:
make clean
Any other questions should first be addressed to Google (if it's about make,
cmake, or Linux terminal commands) or the team leads (anything and everything).
maav CCS Project Instructions
------------------------------------------------------------------------------
You will have to copy maav/.project.bak to maav/.project before importing the
project. Likewise, you will have to copy maav/.cproject.bak to maav/.cproject
before importing the CCS project.
***If your .cproject changes at any time and git wants you to commit it, restore
your .cproject file to the orignal .cproject.bak file.***
Once the project is imported, the following paths need to be set up in order to
open the "maav" project in CCS. Refer to docs/ccs_build.tex for how to setup
these paths.
REPO_LOC: this is the path to the maav-controls/repo on your computer
TIVAWARE_INSTALL: this is the path to your installation of Ti's TivaWare software library
Repo Structure
------------------------------------------------------------------------------
maav This is the main Code Composer Studio project for the flight controller running on the Tiva.
main.cpp, interrupt vector table, and Tiva build files live here in this directory.
src This folder holds all of the source files for the custome flight controller code used in
the maav project. This is only for the flight controller project but
can be used in other projects.
test This folder holds all of the Boost Unit Test Framework automated test cases for non-Tiva-dependent
code. Included in this directory is a bin and build folder as well as a Makefile for building
these test cases separately from the maav project with g++ rather than Ti's compiler (since
we're using Boost for the test cases and non-hardware dependent code should function in the
same way regardless of compilation).
cmeigen This directory contains the eigen implementation of the CMSIS-DspLib
matrix math and other functions used in our code. Note this is not a complete
re-implementation of the entire CMSIS-DspLib; it is just the bare necessity for
us to run test cases in Linux for code that requires these functions. CMSIS itself
is designed only for ARM microcontrollers, and the original DspLib is used on the
Tiva.
research This directory contains all research for control theory, state estimation, and data processing of
flight and sensor logs. Any simulation code in C/C++/Matlab/Python/etc (not full CCS projects) and
all flight logs go here in their appropriate subdirectories. All data processing code also goes here
as well as the results/output files from such code.
side_projects This directory contains all Code Composer Studio projects used for testing sensors or playing around with
the Tiva. Any project that is not the main maav project goes here. Projects here can access headers from
the include directory but may not change any code or add new code to include or src.
doc All documentation or Doxygen config files for MAAV Controls (infrastructure, main flight controller, side projects, etc) goes here.
cmake Contains the cmake pakage searching scripts.
lcmtypes All lcm message specification files and auto-generated code goes here.
Code Freeze
------------------------------------------------------------------------------
3 days before flight testing, all code is frozen. No features will be merged;
only critical bugfixes.
At some point during the code freeze, some member of the team should come into
the office, boot up the vehicle and gcs, and make the following checks:
* check that the hardware independent test cases all pass
* check that we can spool up the motors and take off/hover if possible.
* check to make sure gcs is getting all data from the vehicle that it should
* check that logs produced by the vehicle can be read by Log_analysis.m
* check that if no SD card is inserted into the vehicle, the vehicle will
refuse to fly
About
MAAV Embedded
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published