Pilotanywhere is currently in alpha phase. Thus, please report any bugs or
difficulties to firstname.lastname@example.org.
Pilotanywhere needs a fast and stable internet connection to establish a link to your vehicle. We recommend at least 2,5 MBit/s for uploads and 10 MBit/s for downloads. Depending on the quality of the internet connection of the vehicle, it might take several attempts to establish a link between Pilotanywhere and the vehicle.
Please test the connection of your vehicle to Pilotanywhere at home, in your lab or in your office first, before you actually go out and control your vehicle using our platform.
Pilotanywhere works best in Chrome (54 or higher) and Firefox (50 or higher) and requires the
Adobe Flash Player (23 or higher) plug-in.
If you use another web browser such as the Internet Explorer or Safari, you may not see the
video stream or use all current features.
Pilotanywhere works only with vehicles that are able to communicate over MAVLink.
It is most compatible with the ArduPilot flight
controller. However, you are advised to use only vehicles that run the
ArduCopter (or APM:Copter) flight
controller, since we have tested Pilotanywhere so far only against this controller. Nevertheless and
despite this compatibility, the use of this platform takes place at your sole risk. For more
details, see Terms and Conditions of Use.
Please note that Pilotanywhere runs DroneKit (DroneKit-Python, Version: 2.9.0) to establish the MAVLink connection to your vehicle.
You must configure the location of your vehicle and upload it to your channel.
Otherwise, you or your channel users will not be able to
control your vehicle.
Just download the following configuration file
You may change the name of the file and the parameter values. Do not make any other changes to the file! In particular, please do not use any special characters and do not comment out any lines or parameters. The content of the file is self-explaining. But you should exactly know what the parameters are used for. If not, do not upload it to our platform! We do only some rudimentary checks of its content, before and after your upload. We do not check, if your parameter specifications are correct for your location and vehicle!
You may use the following hardware and software to connect to Pilotanywhere.
The Raspberry Pi is used for forwarding the MAVLink messages and the video stream to Pilotanywhere,
using MAVProxy and one of our video streaming tools.
The 4G cellular dongle is used to create the internet link.
You can of course use any other hardware setup to establish a MAVLink communication and to stream the video to your Pilotanywhere channel. If you already happen to have an off-the-shelve encoder, your hardware setup could look as follows.
Here, the Raspberry Pi is used for forwarding the MAVLink messages. The video
encoder is used for forwarding the RTMP video stream. The 4G-WLAN-Router works as a switch for
the Raspberry Pi, the video encoder and the 4G cellular dongle.
Using an off-the-shelve encoder instead of the Raspeberry Pi for video streaming is usually more expensive. But the encoder might give you some additional features compared to our video streaming tools. Your encoder may also run more stable, depending on your internet connection.
Connecting a vehicle to out platform is very simple:
If you have a Solo from 3D Robotics and a Raspberry Pi, then you may use the following
instructions to connect your vehicle to Pilotanywhere. These steps fully reflect the general steps
If you just bought your Raspberry Pi (we recommend the Raspberry Pi 3 Model B), then it will
probably need an operating system. Just go over to the
official Raspberry Pi homepage,
download NOOBS and install Raspbian on your Pi.
Make sure that all packages on your Raspberry Pi are up-to-date. For this, please open the linux command-shell (also command line or shell) by pressing Ctrl+Alt+T, type the following commands and hit enter to update your system (for more details, see bash, if you are not familiar with the linux command-shell):
The Raspberry Pi should be of course connected to the internet to make the update. If all commands run through without any errors, then your system is up-to-date and ready for the next steps. You may want to install some additional useful packages like htop and nload. The former is a console task-manager, the latter shows the current network traffic. These two packages are not required, but are useful for monitoring your Pi. To get these tools, just execute the commands:
You can connect your Raspberry Pi to the internet, either over ethernet or Wifi. You can also use a
4G internet connection, which is very handy when you fly over remote locations.
To connect your 4G cellular dongle to the Raspberry Pi, you have to make following configurations.
Firstly, tell the Raspberry Pi, that your 4G cellular dongle is not an USB storage device, but actually an UMTS/4G stick. To do this, plug in you 4G dongle and check, whether your Raspberry Pi has the needed packages installed:
Having done this, type in the following command and hit enter, to show your connected usb-devices:
You should see a line, which might look as follows:
If you do not see a line like this, then your Raspberry Pi didn't found the 4G stick and you have to repeat the step described above. In other case, i.e. if your Raspberry Pi found the 4G cellular dongle, download the sakis3g program from GitHub by executing the following commands:
Please note that your have to change
#include <libusb.h> in
with a text-editor of your choice and save this file. For more details, see
Having done these changes to usb_modeswitch.h, your may compile the program with the following command:
As soon as your compilation is done (without any errors), connect to the internet over the 4G network by executing:
If you want to disconnect, just execute:
If you want to connect to the 4G network at startup, put the first command into your /etc/rc.local.
Please note that it takes some time until the 4G dongle has actually loaded after startup. So please assure that there is enough time between the booting of the Raspberry Pi and the first use of the mobile internet connection.
Important: the name after APN is the name of the network you want to connect, so you have to wirte the networkname of your provider here, otherwise the connect will fail or you can not send any data over this connection.
If you want to save you some time, you can also use this simple connect-3g.sh script, which does the job described above. If you want to avoid typing in the path to the executable, copy the program into the build folder to /usr/bin, i.e by executing the following commands, which will make the program callable from any folder by typing sakis3.
Firstly, run the following command to install python-pip:
this is necessary, since we will get MAVProxy from the python repositories.
In addition to python-pip, install the required dependencies for MAVProxy running the command:
now install MAVProxy:
You should use sudo, because some files have to be placed into the system folders. This will
assure that you are able to launch MAVProxy from the shell.
Plug in a display and a mouse into your Raspberry Pi. Power on your Raspberry Pi. After booting,
you should see the standard Raspbian screen.
Click on the network icon in upper right corner of the panel. Now turn on the Solo controller and the Solo vehicle and wait until they have booted. Once they are booted, you should see in your panel a local private WiFI network, with a name similar to SoloLink_3B67B3. The numbers in the name of the network vary by your controller.
Now choose this Wifi network and enter the security key. The default password is "sololink". The Raspberry Pi should now be connected to the Solo controller. Please note that you can also use SSH to connect your Raspberry Pi to the Solo controller.
You can start MAVProxy from the command line or run it at startup. To start MAVProxy from the shell execute the following command:
MAVProxy will automatically search for the connection to your vehicle. Make sure that you are
connected to the Solo private network as described in the previous step. Otherwise, the
connection will fail.
If the connection is established, you will see some vehicle information in the MAVProxy command prompt. You will also be able to control your vehicle from the MAVProxy command prompt.
Forwarding MAVLink messages from your Solo to your Pilotanywhere channel is also very easy. Just execute following MAVProxy command, which will open an additional output link:
You can specify the additional output immediately on start of MAVProxy by executing:
Run at startup: It is very convenient to connect the 3DR Solo to Pilotanywhere at startup. Just install screen, open /etc/rc.local, include the above line as a screen command and save it. Keep in mind that Superuser rights are required to save the rc.local file. You can use nano to edit the rc.local file. In this case, execute the following commands:
and add the following lines just before the final "exit 0" line, where you again replace 159.203.177.xx:153xx with the details from your Pilotanywhere account, and save the rc.local file:
Having these changes to /etc/rc.local, MAVProxy should now forward the MAVLink messages to your
channel at every startup of your Raspberry Pi!
Note that your Raspberry Pi Wifi should now also connect to the Solo controller automatically, if no other Wifi network is available. But keep in mind that the Raspberry Pi does not switch the network automatically without some modifications, if you had connected it before to another Wifi network.
There are basically two options for streaming a live video from the Solo vehicle to Pilotanywhere.
First, use a standard video encoder. Second, use your Raspberry Pi (ARMv7) and one of the
video streaming tools shown in the table below.
If you download these tools, you are granted a personal, non-commercial, non-exclusive licence to use these tools for your personal needs only. If you would like to use these tools for commercial purposes, please contact us.
|Video streaming tool / System||Raspberry Pi (ARMv7)|
Get an off-the-shelf encoder (you may want to use the
Teradek VidiU encoder), then connect the Solo controller HDMI output with your encoder,
connect your encoder with the internet and enter your video stream URL and your video stream key
into your encoder settings. Having done this, you should be able to go live with you video.
If the video does not stream, access the Solo video feed via the Solo App and change the mode from
video to photo an back again to video. You should now see the video from the Solo vehicle.
Power on your Rasberry Pi, connect it to the internet and download one of our video streaming
tools for the Raspberry Pi (ARMv7). We recommend the
You need gstreamer version 1.8.2 or higher to let the programs run without errors. If you are not familiar how to install gstreamer, just execute these commands:
The first tow commands install gstreamer and the needed plug-ins from the repository,
the third command prints out the version of the installed gestreamer.
If you were not able to install the gstreamer version 1.8.2 or higher, then choose our static linked build. You should be able to run it without an installation of gstreamer or you may install gstreamer from source.
The Decode-encode video streaming tool is the decode-encode program. It allows your to stream with a customized video quality. How to customize the video stream is described further below. The Talk-through tool simply forwards the acquired video from the Solo controller to Pilotanywhere - without doing anything else. This program is fast, but needs a high bandwidth - it required up to 2 Mbit/s in our test environment.
You can start both programs from the shell with default parameters as follows (don't forget to extract the compressed tarballs first):
The default parameters are defined as follows:
It's also possible to pass the port number, the stream URL and the stream key to the program with
the following command arguments. Please keep in mind that this would override your configurations
made in the preference file.
The programs take three arguments. The first argument is the port number 5600, over which the
3DR controller provides the live video stream. The second and the third parameter is the
video stream URL and the video stream key. The latter are provided in your account.
Optional video streaming parameters: You can use the following parameters to customize your video stream:
Please note, if you use the optional video streaming parameters, you have to set all parameter shown above, otherwise the program can cause errors!
It's possible to let the Raspberry Pi stream your video after it has booted. To implement this, open
/etc/rc.local with an text editor of your choice
and include the following lines before the "exit 0" line.
The first command changes the working path of the script to the folder where the script is located. The
second command executes it. If needed, customize the first command so it reflects the folder of your
Please include also the preference file in the same folder to enable streaming with your customized parameters. Here is a template for the startup script that you may want to download and customize. Please make sure that you establish an internet connection at startup, before you call the video streaming tool in your rc.local. For this, you have to call in your your rc.local the script establishing the 4G network connection before the call of the video streaming tools. If not, the video streaming at startup will fail.
Please note that the working-path of your rc.local script is the path, where the executeable is located. Keep this in mind, if you want to include more commands in your rc.local.