From 5ee91b23167c584bb8c70ab5792348d6b02c537e Mon Sep 17 00:00:00 2001
From: ebblough <ebblough@iastate.edu>
Date: Wed, 11 Mar 2020 20:57:46 -0500
Subject: [PATCH] docs for using multiple quads

---
 documentation/Multi-platform Integration.md | 71 +++++++++++++++++++++
 1 file changed, 71 insertions(+)
 create mode 100644 documentation/Multi-platform Integration.md

diff --git a/documentation/Multi-platform Integration.md b/documentation/Multi-platform Integration.md
new file mode 100644
index 000000000..155a095ac
--- /dev/null
+++ b/documentation/Multi-platform Integration.md	
@@ -0,0 +1,71 @@
+# Multi-platform Integration
+
+## Table of Contents
+*   Brief
+*   How to connect another vehicle
+ *   Make / Flash a physical network interface
+ *   Integrate the network interface onto the control system for the vehicle
+ *   Configure VRPN and Backend
+ *   Setup GCS Host AP configuration
+ *   Controlling Multiple Vehicles using CLI
+ 
+## Brief
+This markdown file will walkthrough the necesary system configuration needed to be done to control multiple vehicles with the GCS and VRPN system. This 
+description will link to other relevant documentation files located in the MicroCART repository. The 2019-2020 MicroCART team's project is used as an example of how 
+to go through this process. The GCS can control multiple vehicles at once, but using this feature is not recomended. The control software lags considerably 
+when using multiple vehicles. The VRPN updates are slower for multiple vehicles, so when you are controlling multiple vehicles you should be sure to have a 
+failsafe for the vehicles like an RC kill switch.
+
+## How to connect another vehicle
+
+### Make / Flash a physical network
+The GCS has a wifi app software folder that holds stopAP and startAP scripts.[AP Scripts Software] (https://git.ece.iastate.edu/danc/MicroCART/tree/master/groundStation/wifiap "AP Scripts Software")
+These scripts can be ran to make the GCS act like a host wifi network like a router. Don't do that just yet, because what good is a wifi hotspot if nothing 
+is connecting to it. The GCS communicates to client devices with TCP packets. You need something like a network interface to connect to the wifi network and
+route the control packets from the GCS to the vehicles controls. That sounds like a lot of work, but the MicroCART repo already has support software for one 
+type of adapter. The ESP8266 chip was used as the network adapter/wireless interface for the 2018-20202 MicroCART drones. It has a UART interface, so linking it to whatever
+controls the vehicle shouldn't be a huge issue. If the GCS is the AP(acess point), then you should flash the ESP8266 with client firmware. There are tons of docs on flashing
+these wifi chips that can be found [Here] (https://git.ece.iastate.edu/danc/MicroCART/tree/wifi_flash/wifi_bridge "here"). 
+After you have these flashed you will want to connect them to your vehicle's control system.
+
+### Integrate the network interface onto the control system for the vehicle
+This part is dependent on what you are trying to control. Our drone used a breakout board that had a port designed to match
+the pins on the wifi chips. Here is a picture below.
+
+### Configure VRPN and Backend
+This part is optional. It isn't necesary to send VRPN data if you are using something like GPS, but 
+we used vrpn, so I will list the macros that need to be set in the backend.
+First, add a new trackable to the vrpn system. if you are going to use VRPN calibrate it first.
+[Docs for callibration] (https://git.ece.iastate.edu/danc/MicroCART/blob/master/documentation/how_to_calibrate_the_camera_system.md "Docs for Callibration")
+After callibrating, you want to track something, so use one of the black plastic ir beacon holdlers in the camera stuff box. This black plastic
+thing will be tracked by the camera system. If you have an optitrack project open you should see a number of small dots on the screen matching the number of
+IR beacons you put on the holder. Left click and drag your mouse over your selection, release, then right click one of the dots and select trackables->Create trackable tab.
+You should see something on your screen similair to what's shown below.
+
+VRPN should now be streaming to the GCS, but you need to set options in the GCS to recieve it.
+To recieve VRPN data and forward to a vehicle you need to create a trackable object for that in the config.c file.
+[config.c] (https://git.ece.iastate.edu/danc/MicroCART/blob/master/groundStation/src/backend/config.c "config.c")
+You should just be able to copy a trackable object from config.c and change the QUAD_SERVER_NAME and QUAD_IP, QUAD_PORT macros to match
+your network interface (discussed in setup GCS Host AP config) and trackable name. Change the prefix before @ on the QUAD_SERVER macro to match the trackable's
+name on optitrack. After you make a new trackable, also change the NUM_TRACKABLES macro in the GCS to reflect the new number of trackables.
+
+### Setup GCS Host AP Config
+Use the startAP script to create a wifi hotspot (READ the docs before using startAP!) [wifi_app_docs] (https://git.ece.iastate.edu/danc/MicroCART/blob/master/groundStation/wifiap/README.md "wifi_app_docs"),
+then connect to it with your network interface on your vehicle. 
+Everything else should be all setup, now you just need to change the QUAD_IP and QUAD_PORT numbers in config.c. 
+You can find the values for these by using a network analyzer like wireshark. To run wireshark, install it onto your machine, add its executable to the path,
+and type sudo wireshark in terminal. You should see a wlp2s0 interface under start options. Click on this then start capture. 
+After starting capture, turn on your vehicle. If your vehicle connected you should see an IP address pop up like shown below.
+set the QUAD_IP to this ip in config.c. Also set the QUAD_PORT to the TCP_PORT field in user_config.h in the esp2866 client firmware.
+After all these are set run make to recompile the backend restart your vehicle and run ./backend. The backend should say it connected successfully.
+
+
+### Controlling Multiple Vehicles using CLI
+If the backend said something about connecting to your client platforms, then you can test its connection.
+You can select which platform you want to talk with by opening up another terminal while backend is running and using
+./settrackable trackable_name
+You can get the name of the current trackable using
+./gettrackable 
+Besides those commands, everything should work the same as controlling one vehicle. Try using getnodes or getparam to really make sure communication is successful.
+
+
-- 
GitLab