From 6fd3a7c55df6d9a7482c4dd297c687b70955cdc6 Mon Sep 17 00:00:00 2001 From: ES-Alexander Date: Tue, 7 Jun 2022 17:21:13 +1000 Subject: [PATCH 1/9] software: create flight-controller --- content/software/flight-controller/_index.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 content/software/flight-controller/_index.md diff --git a/content/software/flight-controller/_index.md b/content/software/flight-controller/_index.md new file mode 100644 index 0000000..8b1d157 --- /dev/null +++ b/content/software/flight-controller/_index.md @@ -0,0 +1,9 @@ ++++ +title = "Flight Controller" +description = "Versioned documentation for the different flight controller firmwares." +date = 2022-04-21T16:53:00+00:00 +template = "docs/section.html" +sort_by = "weight" +weight = 0 +draft = false ++++ From 63b2a9fcf7b32a4c1b6140b4850e846348a6ac0c Mon Sep 17 00:00:00 2001 From: ES-Alexander Date: Tue, 7 Jun 2022 17:12:01 +1000 Subject: [PATCH 2/9] submodules: add ArduSub-4.0 --- .gitmodules | 4 ++++ content/software/flight-controller/ArduSub-4.0 | 1 + 2 files changed, 5 insertions(+) create mode 160000 content/software/flight-controller/ArduSub-4.0 diff --git a/.gitmodules b/.gitmodules index 5509b78..1fabe07 100644 --- a/.gitmodules +++ b/.gitmodules @@ -5,3 +5,7 @@ path = content/software/onboard/BlueOS-1.0 url = https://github.com/bluerobotics/ardusub-zola.git branch = BlueOS-1.0 +[submodule "ArduSub-4.0"] + path = content/software/flight-controller/ArduSub-4.0 + url = https://github.com/bluerobotics/ardusub-zola + branch = ArduSub-4.0 diff --git a/content/software/flight-controller/ArduSub-4.0 b/content/software/flight-controller/ArduSub-4.0 new file mode 160000 index 0000000..e378e6d --- /dev/null +++ b/content/software/flight-controller/ArduSub-4.0 @@ -0,0 +1 @@ +Subproject commit e378e6d63b171553bad43d20e6d50a9da860c3ee From 71ec5285ded36c116c412e2b78bca364f6130e0d Mon Sep 17 00:00:00 2001 From: ES-Alexander Date: Thu, 9 Jun 2022 19:22:47 +1000 Subject: [PATCH 3/9] content: software: create topside section --- content/software/topside/_index.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 content/software/topside/_index.md diff --git a/content/software/topside/_index.md b/content/software/topside/_index.md new file mode 100644 index 0000000..3f68d34 --- /dev/null +++ b/content/software/topside/_index.md @@ -0,0 +1,9 @@ ++++ +title = "Topside Computer" +description = "Versioned documentation for the different topside computer softwares." +date = 2022-06-09T18:45:00+10:00 +template = "docs/section.html" +sort_by = "weight" +weight = 2 +draft = false ++++ From 17d15fb300ed8503372e7dec2889087a06b4ef94 Mon Sep 17 00:00:00 2001 From: ES-Alexander Date: Thu, 9 Jun 2022 19:23:16 +1000 Subject: [PATCH 4/9] submodules: add QGroundControl-4.0 --- .gitmodules | 4 ++++ content/software/topside/QGroundControl-4.0 | 1 + 2 files changed, 5 insertions(+) create mode 160000 content/software/topside/QGroundControl-4.0 diff --git a/.gitmodules b/.gitmodules index 1fabe07..30c3c7a 100644 --- a/.gitmodules +++ b/.gitmodules @@ -9,3 +9,7 @@ path = content/software/flight-controller/ArduSub-4.0 url = https://github.com/bluerobotics/ardusub-zola branch = ArduSub-4.0 +[submodule "QGroundControl-4.0"] + path = content/software/topside/QGroundControl-4.0 + url = https://github.com/bluerobotics/ardusub-zola + branch = QGroundControl-4.0 diff --git a/content/software/topside/QGroundControl-4.0 b/content/software/topside/QGroundControl-4.0 new file mode 160000 index 0000000..e378e6d --- /dev/null +++ b/content/software/topside/QGroundControl-4.0 @@ -0,0 +1 @@ +Subproject commit e378e6d63b171553bad43d20e6d50a9da860c3ee From 3e6d99cf1df72dc0abc8f4f82e6a8a183ba5a119 Mon Sep 17 00:00:00 2001 From: ES-Alexander Date: Tue, 13 Sep 2022 23:56:58 +1000 Subject: [PATCH 5/9] content: software: add programmatic control section --- .../software/programmatic-control/_index.md | 9 ++ .../programmatic-control/pymavlink/index.md | 82 +++++++++++++++++++ 2 files changed, 91 insertions(+) create mode 100644 content/software/programmatic-control/_index.md create mode 100644 content/software/programmatic-control/pymavlink/index.md diff --git a/content/software/programmatic-control/_index.md b/content/software/programmatic-control/_index.md new file mode 100644 index 0000000..0b72907 --- /dev/null +++ b/content/software/programmatic-control/_index.md @@ -0,0 +1,9 @@ ++++ +title = "Programmatic Control" +description = "Documentation for controlling ArduSub with a program." +date = 2022-06-09T19:45:00+10:00 +template = "docs/section.html" +sort_by = "weight" +weight = 10 +draft = false ++++ diff --git a/content/software/programmatic-control/pymavlink/index.md b/content/software/programmatic-control/pymavlink/index.md new file mode 100644 index 0000000..0593adc --- /dev/null +++ b/content/software/programmatic-control/pymavlink/index.md @@ -0,0 +1,82 @@ ++++ +title = "Pymavlink" +description = "Examples of using Pymavlink for programmatic control." +date = 2022-06-13T14:50:00+10:00 +template = "docs/page.html" +sort_by = "weight" +weight = 0 +draft = false +[extra] +lead = 'Pymavlink is a Python implementation of the MAVLink protocol. It can be used to read sensor data and send commands to an ArduSub vehicle.' +toc = true +top = false ++++ + +# Safety +- pilot input (`FS_PILOT_INPUT`) +- leak +- heartbeat +- rc timeout (`RC_OVERRIDE_TIMEOUT`) + +# Installation +... + +# Examples + +Pymavlink has 3 types of messages: +* `command_long_send`: To create a raw package +* `_send`: To send simple mavlink messages +* `mavutil`: Functions to abstract some MAVLink messages + +## Connecting + +### Serial Connection +### Onboard Computer +### Topside Computer + +## High Level +### Periodic Events +### Command Protocol + +## Controlling the Vehicle +### Send RC +- ArduPilot based around radio-style control +- Inputs are set as PWM channel values +- Ignore a channel via int16_max (65535), but warn that previous value persists +### Send Manual Control (Joystick) +- Abstraction over control aspect +- Can pretend to be a pilot +- Link to joystick functions +- Underlying functionalities generally have explicit messages (link to(/implement?) command protocol) +- All axes must be specified (link to issue of ArduSub not supporting the "ignore" value) +### Arm/disarm +- Vehicle cannot move without arming +### Change flight mode +- Link to flight mode docs +### Set Target Depth/Attitude +- In depth hold/stabilise modes, ArduSub will use control algorithms +- Mention caveats (maximum depth delta, target ignored/reset if vehicle control is actively commanding) +### Control Camera Gimbal +- Via mount commands +- Via servo PWM +- Via RC input (goes to full extent, value specifies speed) +### Set Servo PWM +- Only works for servos that aren't assigned as motors (possibly no function specified?? - confirm) +### Advanced Servo/Gripper Example + +## Accessing Parameters +### Read all parameters +### Read and write parameters + +## Receiving Data +### Request message interval +- Required for many messages +- TODO: investigate how to receive for `NAMED_VALUE_FLOAT` (request stream?) +- QGC requests a bunch by default, so if it's open then you'll already be receiving several messages (and may not be able to specify rates) +### Receive data and filter by message type +### Advanced Receiving (Message Hooks) + +## Sending Data +### Send Message to Ground Control Station +### Send GPS position +### Send rangefinder / computer vision distance measurement to autopilot From f04bf9dd153a5f91b13b911ca96a744753e9a114 Mon Sep 17 00:00:00 2001 From: ES-Alexander Date: Tue, 13 Sep 2022 23:57:18 +1000 Subject: [PATCH 6/9] content: software: add video processing section --- content/software/video-processing/_index.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 content/software/video-processing/_index.md diff --git a/content/software/video-processing/_index.md b/content/software/video-processing/_index.md new file mode 100644 index 0000000..4740b87 --- /dev/null +++ b/content/software/video-processing/_index.md @@ -0,0 +1,9 @@ ++++ +title = "Video Processing" +description = "Documentation for video processing approaches." +date = 2022-06-09T18:50:00+10:00 +template = "docs/section.html" +sort_by = "weight" +weight = 20 +draft = false ++++ From d93a261de91ebb0cd1bc755a5660c949ff4afc2e Mon Sep 17 00:00:00 2001 From: ES-Alexander Date: Tue, 13 Sep 2022 23:57:50 +1000 Subject: [PATCH 7/9] content: add developers and contributing section --- content/developers/_index.md | 8 +++++++ content/developers/contributing.md | 37 ++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 content/developers/_index.md create mode 100644 content/developers/contributing.md diff --git a/content/developers/_index.md b/content/developers/_index.md new file mode 100644 index 0000000..cb42747 --- /dev/null +++ b/content/developers/_index.md @@ -0,0 +1,8 @@ ++++ +title = "Developers" +description = "Developer documentation." +date = 2022-09-13T23:30:00+00:00 +sort_by = "weight" +weight = 1 +template = "docs/section.html" ++++ diff --git a/content/developers/contributing.md b/content/developers/contributing.md new file mode 100644 index 0000000..58a3447 --- /dev/null +++ b/content/developers/contributing.md @@ -0,0 +1,37 @@ ++++ +title = "Contributing" +description = "Contribution Guidelines." +date = 2022-09-13T22:27:00+10:00 +template = "docs/page.html" +sort_by = "weight" +weight = 0 +draft = false +[extra] +lead = 'Our software and documentation are open for contributions - join us in developing the future!' +toc = true +top = false ++++ + +## Contribution Pathways + +- [Blue Robotics](https://github.com/bluerobotics/software-guidelines) +- [ArduPilot](https://ardupilot.org/dev/docs/contributing.html) + - [Top Contributors](https://github.com/ardupilot/ardupilot#top-contributors) + - [How to Get Involved](https://github.com/ardupilot/ardupilot#how-to-get-involved) +- [QGroundControl](https://dev.qgroundcontrol.com/master/en/contribute/) +- [MAVLink](https://mavlink.io/en/contributing/contributing.html) + +## This Documentation + +Add a new section / version via a repository/branch as a submodule +``` +git submodule add -b --name +``` + +### In General +1. Fork the repo +1. make a new branch for development +1. submit a pull request to the original repo +1. make changes as relevant +1. clean up commits with an interactive rebase and force push +1. sync your repo branch with the upstream branch once the PR is merged From 47b0912789fc2cc1b1cab1cd60a4c2bc421ceccd Mon Sep 17 00:00:00 2001 From: ES-Alexander Date: Mon, 21 Nov 2022 18:44:18 +1100 Subject: [PATCH 8/9] content: software: programmatic-control: add lua script page --- .../programmatic-control/lua-scripts/index.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 content/software/programmatic-control/lua-scripts/index.md diff --git a/content/software/programmatic-control/lua-scripts/index.md b/content/software/programmatic-control/lua-scripts/index.md new file mode 100644 index 0000000..5ce6e40 --- /dev/null +++ b/content/software/programmatic-control/lua-scripts/index.md @@ -0,0 +1,14 @@ ++++ +title = "Lua Scripts" +description = "Documentation for lua scripting with ArduSub." +date = 2022-11-21T18:40:00+11:00 +template = "docs/page.html" +sort_by = "weight" +weight = 0 +draft = false +[extra] +lead = 'Lua scripts can be used to dynamically alter autopilot behaviour and parameters from within the flight controller.' +toc = true +top = false ++++ +++ From 921b6e78e0748fa9ad75a8234097c8bd769340eb Mon Sep 17 00:00:00 2001 From: ES-Alexander Date: Mon, 21 Nov 2022 18:44:32 +1100 Subject: [PATCH 9/9] content: software: add simulation section --- content/software/simulation/_index.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 content/software/simulation/_index.md diff --git a/content/software/simulation/_index.md b/content/software/simulation/_index.md new file mode 100644 index 0000000..d049744 --- /dev/null +++ b/content/software/simulation/_index.md @@ -0,0 +1,15 @@ ++++ +title = "Simulation" +description = "Documentation for simulating an ArduSub vehicle." +date = 2022-11-21T18:40:00+11:00 +template = "docs/section.html" +sort_by = "weight" +weight = 50 +draft = false ++++ + +- SITL simulates the autopilot, and some very basic physics + - SITL should run on BlueOS, although it currently doesn't have the right parameters +- Gazebo and BlueSim are more advanced physics and operations simulators and the first person interface, but don't simulate the autopilot +- QGroundControl allows user input to the running simulation, and provides a map/missions interface +- MAVLink inputs can be from a program (see programatic-control)