mirror of
https://github.com/okalachev/flix.git
synced 2025-07-27 17:49:33 +00:00
125 lines
3.6 KiB
Markdown
125 lines
3.6 KiB
Markdown
# Building and running
|
|
|
|
To build the firmware or the simulator, you need to clone the repository using git:
|
|
|
|
```bash
|
|
git clone https://github.com/okalachev/flix.git
|
|
cd flix
|
|
```
|
|
|
|
## Simulation
|
|
|
|
### Ubuntu
|
|
|
|
1. Install Arduino CLI:
|
|
|
|
```bash
|
|
curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | BINDIR=~/local/bin sh
|
|
```
|
|
|
|
2. Install Gazebo 11:
|
|
|
|
```bash
|
|
curl -sSL http://get.gazebosim.org | sh
|
|
```
|
|
|
|
Set up your Gazebo environment variables:
|
|
|
|
```bash
|
|
echo "source /usr/share/gazebo/setup.sh" >> ~/.bashrc
|
|
source ~/.bashrc
|
|
```
|
|
|
|
3. Install SDL2 and other dependencies:
|
|
|
|
```bash
|
|
sudo apt-get update && sudo apt-get install build-essential libsdl2-dev
|
|
```
|
|
|
|
4. Add your user to the `input` group to enable joystick support (you need to re-login after this command):
|
|
|
|
```bash
|
|
sudo usermod -a -G input $USER
|
|
```
|
|
|
|
5. Run the simulation:
|
|
|
|
```bash
|
|
make simulator
|
|
```
|
|
|
|
### macOS
|
|
|
|
1. Install Homebrew package manager, if you don't have it installed:
|
|
|
|
```bash
|
|
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
|
```
|
|
|
|
2. Install Arduino CLI, Gazebo 11 and SDL2:
|
|
|
|
```bash
|
|
brew tap osrf/simulation
|
|
brew install arduino-cli
|
|
brew install gazebo11
|
|
brew install sdl2
|
|
```
|
|
|
|
3. Run the simulation:
|
|
|
|
```bash
|
|
make simulator
|
|
```
|
|
|
|
### Flight
|
|
|
|
Use USB remote control or QGroundControl mobile app (with *Virtual Joystick* setting enabled) to control the drone. *Auto-Center Throttle* setting **should be disabled**.
|
|
|
|
## Firmware
|
|
|
|
### Arduino IDE (Windows, Linux, macOS)
|
|
|
|
1. Install [Arduino IDE](https://www.arduino.cc/en/software) (version 2 is recommended).
|
|
2. Install ESP32 core using [Boards Manager](https://docs.arduino.cc/learn/starting-guide/cores).
|
|
3. Install the following libraries using [Library Manager](https://docs.arduino.cc/software/ide-v2/tutorials/ide-v2-installing-a-library) (**versions are significant**):
|
|
* `Bolder Flight Systems SBUS`, version 1.0.1.
|
|
* `Bolder Flight Systems MPU9250`, version 1.0.2.
|
|
* `MAVLink`, version 2.0.1.
|
|
4. Clone the project using git or [download the source code as a ZIP archive](https://codeload.github.com/okalachev/flix/zip/refs/heads/master).
|
|
5. Open the downloaded Arduino sketch `flix/flix.ino` in Arduino IDE.
|
|
6. [Build and upload](https://docs.arduino.cc/software/ide-v2/tutorials/getting-started/ide-v2-uploading-a-sketch) the firmware using Arduino IDE.
|
|
|
|
### Command line (Windows, Linux, macOS)
|
|
|
|
1. [Install Arduino CLI](https://arduino.github.io/arduino-cli/installation/).
|
|
2. Windows users might need to install [USB to UART bridge driver from Silicon Labs](https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers).
|
|
3. Compile the firmware using `make`. Arduino dependencies will be installed automatically:
|
|
|
|
```bash
|
|
make
|
|
```
|
|
|
|
You can flash the firmware to the board using command:
|
|
|
|
```bash
|
|
make upload
|
|
```
|
|
|
|
You can also compile the firmware, upload it and start serial port monitoring using command:
|
|
|
|
```bash
|
|
make upload monitor
|
|
```
|
|
|
|
See other available Make commands in the [Makefile](../Makefile).
|
|
|
|
### Firmware code structure
|
|
|
|
See [firmware overview](firmware.md) for more details.
|
|
|
|
## Setup
|
|
|
|
Before flight in simulation and on the real drone, you need to calibrate your remote control. Use drone's command line interface (`make monitor` on the real drone) and type `cr` command. Copy calibration results to the source code (`flix/rc.ino` and/or `gazebo/joystick.h`).
|
|
|
|
On the real drone, you also need to calibrate the accelerometer and the gyroscope. Use `ca` and `cg` commands for that. Copy calibration results to the source code (`flix/imu.ino`).
|