AttoPilot Users Group

Smarter Cheaper Faster

Can anyone please point me to the $ATTO format and any specific tech docs so I can enable in a GCS I am working on

Thanks

Views: 49

Comment by Chris McNair on July 15, 2010 at 16:46
Sure.

Definitions:
Uplink = data sent from GCS to AttoPilot
Downlink = data sent from AttoPilot to GCS

Proposals:
1) All data in ASCII format, with XOR checksums in NMEA format.
2) Vehicle ID uses 2 hex digits represented simply in ASCII. This avoids supporting usage of 'weird' ASCII characters (non-printable command characters, and things like * or $ which are reserved in the NMEA format to denote beginning and end of the string). Two hex digits would support up to 127 unique agents 01 through FF (not 128 per my proposal.... see point #4 below).
3) Vehicle ID is part of EVERY downlink sentence type.
4) Vehicle ID is part of EVERY uplinklink sentence type, with addition that a generic "00" vehicle ID means ALL agents follow the uplinked command in this case (global commands for the entire swarm). Otherwise a command will only be obeyed if the exact ID is matched.
5) Vehicle ID is not hard-coded into each AttoPilot, rather it will be a user-configurable choice in SET.txt (or via GUI setup when I finally move 100% away from using a SET.txt on SD card). It's up to the end-user to give their multiple agents unique IDs.
6) No "raw sensor data" to be sent down, because generally that is actually more work in Atto. The finalized values are already calculated because Atto needs them in order to use the data. Do you see any problems with this proposal?
7) String names should be shortened to only 1 or two characters. If two, then perhaps A1, A2, and A3 would be the 5Hz 1Hz and 0.1 Hz string names.
8) When possible, drop fractional values to save bandwidth. Example: we don't need to report mAh to the 3rd decimal. Also, roll and pitch can probably be fine at the integer level for a simple GCS virtual horizon display.


Proposed 5 Hz Downlink data types:
Vehicle ID
Roll - (could save characters by dropping the fractional angles... only report the integer portion)
Pitch - same comment as for roll.

Example:
$A1,01,23,7*FF



Proposed 1 Hz Downlink data types:
Vehicle ID
Latitude as decimal degrees to the 5th decimal. + is North, - is South. The "+" character is NOT built into the string.
Longitude as decimal degrees to the 5th decimal. + is East, - is West. The "+" character is NOT built into the string.
Heading (drop the fractional degrees to save bandwidth)
Mode
Waypoint
Loiter status (0 = no, 1 = yes. Can use 2-9 later for other types of loiters such as loiter to altitude, or loiter to heading)
Pressure (absolute) in Pascals(FYI, Home pressure is below in the 0.1 Hz proposed list.)
GPS Altitude (ASL)
AirSpeed (drop the fractions, only integer)
GroundSpeed (drop the fractions, only integer)

Example:
$A2,01,33.12345,-111.12345,34,3,23,0,96123,65,55*FF


Proposed 0.1 Hz Downlink data types:
Vehicle ID
EMF to 2 decimals (is 0.1 Hz too infrequent?)
Current to 2 decimals (is 0.1 Hz too infrequent?)
mAh consumed (drop the decimals) (I didn't see this in your list, but want it added to a gauge on the GCS)
Home Pressure (FYI: Adding a new interrogation command would burn up code space in Atto that I can't afford)

note: have the GCS calculate power via EMF x Current.

Example:
$A3,01,12.30,20.34,120,101305 *FF
Comment by Chris McNair on July 15, 2010 at 16:48
Can we give the GCS a try when you are finished?
Comment by Fab on July 15, 2010 at 18:12
That is a great start thank you. Has anyone written an emulator? I don't have an atto and yes the software will be free and the more testers the better. It's almost working with ardupilot but I really want it to work with atto.

More sample output with descriptions and confirmation of each value would allow me to test faster. Here are some very crude pics of some of it. I hope you like google earth if not the analogs are there but have been done before!

http://www.visualmicro.com/page/Ground-Control-Station-FAB.aspx
Comment by Fab on July 15, 2010 at 18:14
Hmm, re-reading it sounds like you need to be able to define string names yourself or maybe we can come up with a few standards. 5 Hz would be cool, it is tested at that
Comment by Fab on July 15, 2010 at 18:45
Please let me know if the link below doesn't open. I think the images on the page are too big and cause it to take too long to download. Some people have reported a problem. Sorry
Comment by Gary Mortimer on July 15, 2010 at 20:36
I've got a pair maxstreams itching to talk to your GCS Tim ;-)
Comment by Fab on July 15, 2010 at 20:47
Gary,

Funny you say that because my gcs is itching to be tested by a grand master :). I think I'm going to try and code an xml config file that allows you to define the gcs protocol you are using. This will allow you to tweak and make it right.

Initially it would be nice for me to get a basic working system for you. Do you have any trace/log files at 5Hz of the serial stream that you can send me. I can turn them into an emulator/sim so I can test it. I'll publish the emulator exe so you can run your own "sim" (or sorts)
Comment by Fab on July 15, 2010 at 23:01
Chris,

I've had a chance to look at your ideas and they are the type of thing I am looking for. Can you think of an xml format that would describe things so i can make it flexible. However I can hard code what you propose as it is very easily.

Few comments

1) Providing home altitude and trims at start up? if not I can take the first gps alt for home alt
2) Certainly no decimals because some international users will be expecting , instead of .
3) Nice to have a gcs>atto command to tell it to send raw sensors but a "nice to have". I was planning on adding heart beat graphs
4) mah used. Okay then i have to add mah total to my config so i can show remaining and raise alarms. Or is that what EMF and current will give me? Sorry bit thick :)
5) Vehicle Id both ways. You are talking my language (and one day it would be great to see all vehicles on a single map!)
6) Pitch and roll preceeded by - if negative?
7) What would I do with home pressure and pressure apart from report it? I haven't looked to see if that can be converted to altitude?

.1 Hz fine for some stuff i think.

Can do? when?
Comment by Gary Mortimer on July 16, 2010 at 7:59
Tim, thats all tech talk thats way over my head, I can easily send you lots of files for version 1.8 I have a 2.0 but not created much with that yet, that will change for Farnborough!!
Comment by Fab on July 16, 2010 at 9:47
Okay Gary send me what you have. Most of my replies were for Chris and it sounds like he is planning to implemenent additional protocol. I'm a bit confused as to what Atto actually produces over the serial right now.

If the files you can send me match what is sent over the serial then we are in business for a quick test.

If not then,I guess you have a maxstream plugged into your pc, if so you must set the serial port somewhere, if so grab a copy of the free x-ctu software from digikey, select the port and speed, click terminal, run the atto up and down your garden then send me what appears on the xctu screen

When you have a mo that is!

T

Add a Comment

You need to be a member of AttoPilot Users Group to add comments!

Join AttoPilot Users Group


Locations of visitors to this page

© 2017   Created by Gary Mortimer.   Powered by

Badges  |  Report an Issue  |  Terms of Service