The MNAV Interface

This interface emulates the Crossbow Technology MNAV (see http://www.xbow.com/Products/productdetails.aspx?sid=193) vehicle sensor suite and servo control board. If you want to use the Crossbow MNAV autopilot, which is already modified to use this interface, please see autopilot.txt instead; this documentation is intended for developers who are writing or modifying programs to send and receive data through the MNAV interface.

The MNAV interface is able to operate over serial, TCP (client or server), or UDP (client or server) by changing inputMethod.mnav.device in crrcsim.xml. Possible values are:

    * "serial,<device>,<speed>", e.g. "serial,/dev/ttyS0,115200"
    * "tcp,<host>,<port>", e.g. "tcp,192.168.0.5,12345"
    * "tcpserver,<host>,<port>" or "tcpserver,<host>/<netmask>,<port>", e.g. "tcpserver,192.168.0.5,12345" or "tcpserver,192.168.0.5/255.255.255.0,12345"
    * "udp,<host>,<port>", e.g. "udp,192.168.0.5,12345"
    * "udpserver,<host>,<port>" or "udpserver,<host>/<netmask>,<port>", e.g. "udpserver,192.168.0.5,12345" or "udpserver,192.168.0.5/255.255.255.0,12345". 

As input, the MNAV interface accepts 8 2-byte servo values (CH0-CH7) in an elevon configuration, i.e. after conversion to the range of [-0.5,0.5] (CH0 and CH1) or [0,1] (CH2):

    * elevator = -(CH1 - CH0) / 2
    * aileron = (CH1 + CH0) / 2
    * throttle = CH2. 

Unlike other CRRCSim interfaces, the MNAV interface also provides vehicle state data so that it can interface with an autopilot:

    * 3-axis acceleration (accelerometers)
    * 3-axis angular rate
    * 3-axis magnetic field (magnetometers)
    * 3-axis temperature (currently has value zero)
    * absolute pressure
    * pitot pressure
    * GPS
    * PPM (hard-coded values optimized for interface to Crossbow MNAV autopilot--does not reflect any user input because the MNAV interface takes the place of interactive input; any interactive input must be mediated by the autopilot, i.e. the autopilot must have a separate user input interface that allows the autopilot to be disabled and the simulated vehicle to be flown directly using the input format described above). 

The input and output message formats are described in Chapter 4 of the MNAV User's Manual (see http://www.xbow.com/Support/Support_pdf_files/MNAV100CA_Users_Manual.pdf). In particular, the MNAV interface receives Set Servo ('SS') and Set Reverse Bits ('SP') messages, and sends Scaled Mode vehicle data messages with GPS, Servo, and PPM data ('N'), although by changing some #define values at the top of mnav.cpp it can also send other types of Scaled Mode vehicle data messages (the Crossbow 'S' type, and a non-Crossbow 'I' type that includes all data in the 'N' type as well as roll, pitch, and yaw data).

The MNAV interface works out of the box with a modified version of the Crossbow MNAV autopilot that will be released by Crossbow in the near future. For now, a pre-release version of the combined Autopilot-CRRCSim system can be downloaded from the micronav Sourceforge site at http://sourceforge.net/project/showfiles.php?group_id=146680.

Todd R. Templeton, 1/30/2007
