Add a RaspberryPi and a pair of $100 3G modems to Pixhawk and you can have telemetry via text message as far as the cell networks go! The code, based on Dronekit, is here:
Text Messaging Telemetry for DroneKit Control Rovers, Copters, or Planes via inexpensive text messaging from within DroneKit
Dependencies:
-- pip install python-gsmmodem
-- pip install pymavlink
-- pip install pylzma
-- pip install dronekit
How to launch text messaging telemetry between your APM Rover and Ground Station computer:
--Copy project files to your vehicle's companion computer (e.g. Raspberry Pi) and your laptop.
--pip install dronekit-textmessaging
--On your ground station computer enter the following command: LaunchTelemetry.py -ground
--On the vehicle's companion computer, launch the script from DroneKit: LaunchTelemetry.py -vehicle (NOTE: make sure to have AUTOPILOT_PATH set appropriately)
Supported Hardware/Software Configuration:
Ground Station
* Mac laptop/desktop
* APM Planner 2 software
* Sierra 313u (AT&T 313u) GSM modem
* AT&T's $2/day pay-as-you-go unlimited texting plan
Vehicle
* Raspberry Pi "companion computer" connected to autopilot via serial or USB cable
* APM 2.6 or Pixhawk autopilot
* Sierra 313u (AT&T 313u) GSM modem
* AT&T's $2/day pay-as-you-go unlimited texting plan
Comments
Sounds a lot like what I did a while back in this DIYDrones blog. I used the XMPP protocol to communicate "Human" messages and telemetry from the drone to a computer in the field or a server at home - and natural language messages (like: "go to waypoint2" or "turn on lights") to instruct the drone in what to do.
I've recently started to use dronekit which is super nice and dead easy!
Hey Chambana
The idea originally came when I was looking into the iridium messaging system for the OBC. I see this being a method to also improve normal mavlink telemetry over RF modem like RFD900 etc as well, possibly improving performance when the system is at its limits. Ideally one would use a similar method that MPEG does, in that only data that changes significantly, or is critical to inform the user of the vehicle state are actually sent. I think there is no reason to update the user of things that do not change or are operating according to plan, or a previously learnt or preset profile.
For example whilst it's "interesting" to see accelerometer g-forces or the battery voltage drop by deci-volts it adds no value to the user's situational awareness or ability to respond to a mission critical event. Taken to the extreme this could be condensed to simply "All systems green - on track to WP" message, like a "mission heartbeat" msg, and then follow that up with any vehicle/system/nav state changes as they occur. Once an parameter out of range error occurs then those messages relating to that event can be prioritized and sent. Of course whilst the system is in the "green" other messages can alternatingly use up the message space to give the user updates on individual messages, even of those items that aren't currently critical.
The other item is of course to reduce the resolution of the messages sent. For example battery voltages could be displayed in pre-set levels and the first few digits of lat-lon can be neglected etc as it's unlikely that most UAV's have enough range to change them.
Overall I think in combination these strategies can significantly improve messaging over any type of telemetry pipe.
Let me know how you go implementing them. Are you thinking of doing this on a companion SBC or the PXH itself? Ideally it would actually be done on the PXH, I'm not a big fan of running companion SBC's as primary comms. It also allows a more compact setup.
Regards JB
Good work Chambana. Your reasoning is sound but is proably limited to places where SMS is cost effective or mobile NAT is blocking access.
I suppose this is also a good way for condensing messages with sat type messaging services that would otherwise be prohibitive cost wise.
Do you have any plans on creating a system that can respond to particular groups of mavlink messages being requested? I'm thinking that most messages can be prioritized by when and how often they needed to be updated, as well as being triggered by a certain event, that makes them momentarily important ie battery low.
good step toward low-bandwidth mission planning via sat-link
@Darius Yeah, I know. I'm ex-Nokian :-p WAP was said as a joke. WAP over SMS isn't any slower than any other technology over SMS.
@JAB if you are on a congested network, I think you can upgrade the connection to a better 2G GPRS or better connection, still going to be slow
@Michael You correct it's a cheap connection with low frequency updates. Another member as been looking at a low bandwidth MAVLink messages for use on satellite phones.
This solution is ideal for non-realtime control of a autonomous robot, the robot is autonomous after all. :-)
Main problem with SMS is that there is no delivery guarantee. SMS data also have a low priority in networks, resulting in variable delays depending on how much congestion there is.
@Bill Bonney,
WAP is an old, slow Internet protocol implemented in old smartphones
to let you browse Internet over GPRS (simplified web browser)
and has nothing to do with Drones.
Nice, it does give you much better coverage and at lower signal levels than a Data 2G/3G/4G. Obvious cost is bandwidth.
Not sure why you need the $100 modules you can do the same with GSM modules http://www.robotshop.com/ca/en/cellular-gprs-gsm-data-telemetry.html
I also have a suggestion for a great name Drone Wireless Access Protocol or D-WAP ;) https://en.m.wikipedia.org/wiki/Wireless_Application_Protocol
+1 Dairus
If t you already have the hardware I can't imagine using a texting service could be faster, cheaper or better that using the internet instead for near realtime bi-directional telemetry. Maybe the description is misleading and it's not actually using SMS? The only reason I know of to use SMS is if there is intermittent mobile reception.
Text messaging is not a reliable solution or technology since Text Messaging is not real-time.
Delivery of text messages (SMS) can be delayed by network and delay offset can not be known in advance.
If you have 2 3G moddems , you can establish peer-2-peer real-time data link
to work better and real-time, featuring 100 ms pings.
With text messaging pings can be 1-10 s or longer.
Modern 3G modems, LTE/ 4G modems feature server/router functionality to let
modems shake hands and speak directly (no need to set up third party server/router).
Drone telemetry stays for semi-real time functionality.
Text messaging offers off-line functionality, not fit to replace radio in telemetry applications (drone telemetry).