Difference between revisions of "FAQ"

From PaparazziUAV
Jump to navigation Jump to search
(→‎How do I check which Paparazzi Version I'm using: script is now just called paparazzi_version)
Line 15: Line 15:


==How do I check which Paparazzi Version I'm using==
==How do I check which Paparazzi Version I'm using==
: Run ./paparazzi_git_version from you paparazzi directory.
: Run ./paparazzi_version from you paparazzi directory.
: This simple script will run ''git describe'' to find the next reachable tag and print something like ''v3.9.2_testing-1-g72f4b21''.
: This simple script will run ''git describe'' to find the next reachable tag and print something like ''v3.9.2_testing-1-g72f4b21''.
: The output contains the most recent reachable tag, number of commits since then, SHA1 of that commit and whether the working directory was dirty.
: The output contains the most recent reachable tag, number of commits since then, SHA1 of that commit and whether the working directory was dirty.
: If you have an older version of Paparazi that does not contain that script you can just run <tt>git describe --match "v[0-9].[0-9]*" --dirty --always</tt>
: If you have an older version of Paparazi that does not contain that script you can just run <tt>git describe --match "v[0-9].[0-9]*" --dirty --always --long</tt>


==What equipment and components are suggested==
==What equipment and components are suggested==

Revision as of 08:41, 12 July 2012

General Paparazzi FAQ


Is it possible to __________?

Yes, of course! That's the beauty of an open-source system - virtually any feature or function you want can be added to the hardware and/or software.

How can I contribute?

See the how to contribute wiki page.

How do I check which Paparazzi Version I'm using

Run ./paparazzi_version from you paparazzi directory.
This simple script will run git describe to find the next reachable tag and print something like v3.9.2_testing-1-g72f4b21.
The output contains the most recent reachable tag, number of commits since then, SHA1 of that commit and whether the working directory was dirty.
If you have an older version of Paparazi that does not contain that script you can just run git describe --match "v[0-9].[0-9]*" --dirty --always --long

What equipment and components are suggested

Linux (Debian or Ubuntu) compatible or Apple Macintosh notebook computer, preferably with a very bright screen for outdoor use.
Most any airframe that will accommodate IR sensors and some extra weight and wiring - brushless motors are strongly suggested. See the User's Gallery for some airframe examples.
Tiny autopilot from one of the Paparazzi vendors or build your own from the downloadable plans/gerbers
IR sensor (x-y) board from one of the Paparazzi vendors
IR sensor (z) board from one of the Paparazzi vendors
R/C Transmitter with a 3-position switch for selecting Manual/Stabilized/Auto. Some common models are listed in conf/radios
R/C Receiver with an accessible PPM signal to tap. See: Suggested R/C receivers
A pair of Modems along with any enclosures and antennas
FTDI USB-TTL cable for connecting the modem to your USB port and/or for serial flashing of bootloader code or tunnel access to the GPS receiver
A standard Mini-B USB cable and receptacle for uploading firmware to the autopilot
Lots of very durable wire, crimpers, and molex pins or pre-crimped wire.

Are internal combustion engines supported?

Yes, not relying solely on inertial measurement, the Paparazzi system is very well suited for aircraft with high vibration levels. Care must be taken to prevent oily exhaust residue buildup on the IR sensors and a simple variable must be added to properly address the special idle/kill needs of an IC engine.

Can Paparazzi fly a glider?

Sure. Paparazzi uses throttle and pitch to control climb rate by default. You can fit an airspeed sensor and adjust your airframe configuration to maintain airspeed instead.

Will the autopilot provide enough 5V power for many/large/digital servos as well as a modem, video TX, etc.?

The Tiny includes a high capacity and high efficiency switching voltage regulator intended to power servos, modems, video systems and other payloads. This regulator should be preferred to power the servos rather than a linear regulator. While linear regulators may be rated for several amps, they require a great deal of cooling and can easily overheat with only a few hundred milliamps of continuous current without cooling. By comparison, the switching regulator included on the Tiny can work continuously at 2A with little or no cooling. Be careful using high power or digital servos consuming a lot of current. If you use four or more of them on your airframe it is recommended to supply them separately. It is important to realize that the servos in any stabilized aircraft will operate continuously. Therefore a power supply that powers the servos reliably in manual flight may easily overheat or produce critical voltage drops in autonomous flight.

Do I need a separate battery or regulator to isolate the autopilot, servos, video, modem, etc. from one another?

The autopilot processor and sensors are powered by a 3.3V regulator and therefore are rather isolated from voltage fluctuations on the battery or 5V bus.

Can I use a Sirf, Trimble, etc. instead of the u-Blox GPS receiver?

Yes, but it would require a tremendous amount of work as some of the navigation code is dependent on some of the UBX messages. NMEA does not provide messages in the desired form and substantial calculation would be required for conversion. Any of the other proprietary protocols would work but you would need to write your own protocol handler. u-Blox is one of the most expensive receivers on the market but offers great performance, size, and speed as well as the ability to easily configure the internal Kalman filter parameters to expect significant acceleration in 3-D space - a very important feature. If you find a more capable receiver, let the group know about it, but this is not the place to save $40.

Does Paparazzi use DGPS, WAAS, EGNOS, or MSAS?

Most modern GPS receivers have the ability to process serial data sent from an external DGPS receiver, but the advent of WAAS/EGNOS has made the early ground-based DGPS transmitters nearly obsolete. The u-Blox GPS receiver supports all common SBAS systems (WAAS, EGNOS, and MSAS), as well as any standard form of external DGPS. It's important to understand that DGPS merely improves the accuracy of the position estimate by subtracting any static error. The only way to improve the precision of the GPS is by improving the antenna or the GPS module itself. See Wikipedia:Accuracy and Precsion for a detailed explanation of these terms.

How does the R/C receiver interface with the autopilot?

Standard hobby R/C transmitters multiplex up to 9 channels of PWM servo data into a single PPM signal which is encoded onto an FM wave for transmission, this signal is then decoded by the RF section of the R/C receiver back into the original PPM signal containing 9 servo position PWM values. This signal is normally then sent to a demultiplexer (i.e. 4017) where it is separated into 9 individual servo signals on 9 individual pins. The Paparazzi autopilot intercepts the signal between the RF section and the demultiplexer and does its own demultiplexing, filtering, and processing before multiplexing the manual or autonomous servo commands back into a single signal and passing them to the 4017 to be distributed to the servos.

Why does Paparazzi tap directly into the R/C receiver instead of using individual servo signals?

By connecting directly to the RF section of the R/C receiver we are able to obtain up to 9 channels of R/C servo data from a small, lightweight inexpensive 4 channel receiver with only 3 wires needed to connect the components. Furthermore, the autopilot then has direct access to the raw R/C signal where it can be filtered, evaluated, and assessed for quality. The autopilot can then alert the user of any loss of R/C signal as well as perform any pre-configured autonomous commands in response to a loss of signal.

Are PCM or 2.4GHz R/C systems compatible with Paparazzi?

Yes. Some receivers have the signal available for tapping into the input pin with success and can thus be modified to get the required PPM signal. A general rule of thumb is that if you see any type of demultiplexer on your R/C receiver, you can look up the data sheet for it and likely tap into the input pin with success. Some information on compatible R/C receivers and how to find the PPM signal of your own receiver is given in the RC receiver section.
If that's not possible, you can use the available PPM encoder board, to re-multiplex the servo channels into one PPM signal. This seems to be a common solution.

What R/C transmitters are compatible?

No mixing or programming is done in the transmitter so even the simplest models will suffice but one important requirement is a 3-position switch to select among the three autopilot modes: manual, stabilized only, and fully autonomous. Those handy with electronics can replace a dial with a switch and resistor if needed. The transmitter's PPM values need to be recorded and the channel used to control the autopilot mode must be stated. Some commonly used transmitter configuration files are provided in the conf/radios folder and the syntax of these files is easy to follow for those using other brands or models.

Can a gamepad/joystick be used to control the aircraft through the modem?

Yes, the code to do this was written some time ago though it was not tested in flight due to latency concerns with the primitive Coronis modems used at the time. Any of the modems currently recommended should work well in this manner but the theoretical reliability is still questionable due to the fact that no interrupt or prioritization structure exists for the telemetry data so any manual control inputs would be lumped in with the rest of the data to be lost or delayed as needed.

What do MANUAL/AUTO1/AUTO2 stand for?

Those are the three modes that Paparazzi can operate in. MANUAL is for controling your airframe by your Transmitter yourself. Please note that any trims and deflections set in your airframe config file still apply. AUTO1 is stabilized flight, the autopilot will keep the airframe level and stabilized, but you need to steer the airframe youself where you want it to go. AUTO2 is fully autonomous stabilization and navigation, where you do not need steer or anything.

What Electronic Speed Controllers (ESC) are compatible?

Any controller can be used, the exact PWM value that is sent to the controller for 0-100% throttle is completely configurable in the airframe file so all controllers are compatible and any controller will arm properly with or without the use of an R/C transmitter. Upon each boot, the autopilot immediately sends whatever you have defined as 0% throttle (typically around 1200ms) and maintains that signal until a manual or autonomous command is given. Most modern controllers are "auto calibrating" which is an undesirable feature for R/C pilots and even more so for autonomous systems but can be dealt with. The calibration is done by defining the PWM value at boot to be 0% power and then defining some initial arbitrary mid-range value such as 1500ms to be 100% until a higher value is seen. The net result of this behavior is that the motor is given full power at any command above 50% throttle until 100% throttle has actually been commanded at least once. This is not an issue for planes that routinely take off at 100% throttle but can disrupt the throttle tuning and altitude control on any flights where 100% throttle has never been commanded. Castle Creations Electronic Speed Controllers can be configured for "fixed endpoints" so the ESC does not need to "learn" the endpoints at first takeoff this providing a consistent and predictable throttle response. By default this range 1250-1850ms but can be set at different values where needed.

Can traditional throttle stick programming be done on the ESC once connected to the autopilot?

Yes. If the transmitter is on with the throttle at full or whatever is required for your ESC when the autopilot is first booted, the autopilot will immediately see the manual control signal and the throttle position and pass that along to the ESC as the first value, triggering the programming mode.

Does Paparazzi support digital servos?

Of course. Digital servos use exactly the same electrical interface as their analog counterparts, the only difference being in the way they control the motor. Analog servos use a Proportional feedback loop, meaning the voltage sent to the motor is proportional to the difference between the measured and intended position of the arm. Digital servos use a Proportional + Derivative (PD) feedback loop. The derivative term considers the current speed and direction of the servo as well as the speed and direction of the pilot's stick command. The derivative term will increase power to the motor if the servo is moving the wrong direction (providing faster direction changes) and will reduce/reverse power if the servo is near it's desired position but moving too fast (reducing overshoot). The net effect of this is that a digital servo can use a much stronger P term without risk of oscillation and overshoot because the D term is there to intelligently dampen it as needed and boost it whenever it can.
How does the inclusion of a D term make an analog servo become digital? Analog servos use a simple opamp to linearly relate the motor voltage to the difference between the potentiometer reading and PWM signal, whereas digital servos use a microprocessor to analyze the potentiometer position and velocity as well as the current and recent PWM signals to calculate the optimum voltage to send to the motor.
Important: Please be aware that autonomous flight involves continuous movement of all servos. Make sure your power supply is capable of handling this and that your servos are capable of continuous operation without overheating - especially if you use digital servos.

Can I solder wires directly to the autopilot instead of using the molex connectors?

Yes. All of the molex headers are thru-hole and you can easily solder small gauge wire directly to the pins that protrude from these headers on the back of the board. It's important to note that standard servo wire cannot be soldered reliably in this fashion - you must use only high-grade wire intended for soldering (no vinyl insulation!). Direct soldering is not recommended, but it is possible ofcourse. See the Wiring section for suggested wire types and sources. If you want to go the direct soldering path, be sure to you have excellent soldering skills and use high quality wiring.

What are the paparazzi failsafe features and how do I configure them?

See Failsafe

Why do I only get a blank (black) GCS

The GCS stays blank until you get telemetry messages (either from the real aircraft or simulated) with the correct MD5 checksum meaning the autopilot has the correct and up to date flightplan/airframe/... programmed in it (in case of an MD5 problem you constantly get a lot of warnings in paparazzi center).
Solution: Probably your telemetry is not set up correctly, this is most likely a XBee configuration issue.Configure the baudrate for your XBee connected to the autopilot and set the baudrate for the link to the one the ground XBee uses (They don't need to be the same). Also make sure your xbee cable is correct, transmit (tx) of xbee goes to receive (rx) on the autopilot and vice versa.

Why do I get a Failure("#of_world:no georef") when trying to load map tiles

You get the georef error because the location is not initialized (probably GCS still blank and no aircraft are present). You can't get map tiles for nowhere...
Solution: Set up your telemetry properly so you get messages from the aircraft OR start a simulation with the appropriate coordinates then load the map tiles.

How do I check if my telemetry is working?

Solution: Launch the link and messages tools in the Paparazzi Center. You should see the the messages coming in (blinking green) in the messages window.
If you get an the error Failure("Error opening modem serial device : fd < 0 (/dev/ttyUSB0)") from link, your modem is either not connected at all, or just available under a different device name. Check if you set the udev rules and if your modem becomes available under the device you set.
You might need to adjust the device and baud-rate of the link according to your setup, e.g. link -d /dev/ttyUSB0 -s 57600
If you're stuck you can make link very verbose by setting the PPRZ_DEBUG environment variable to '*'

Why don't I get a GPS position?

Problem: Your GPS seems to be working, but you cannot get a valid position fix. Speed and course are displayed correctly, though. Possibly you also see Invalid_argument("Latlong.of_utm") errors on the GCS log.

This may happen if you have configured the wrong GPS subsystem for your Tiny board. If you have the LEA-5H module on your Tiny board, but have configured <subsystem name="gps" type="ublox_utm"/> in your airframe file, this will occur because the 5H module does not support UTM position.

Solution: Make sure your GPS is configured correctly and change the gps type to "ublox" if applicable.

Why do I get a CRITICAL **: murrine_style_draw_box: assertion `width >= -1' failed error message on starting the GCS

Solution: This error is not critical at all and can be safely ignored.

It is triggered by a bug in the Murrine GTK engine in combination with the default theme which Ubuntu uses, as detailed here: https://bugs.launchpad.net/ubuntu/+source/light-themes/+bug/538499

Do Paparazzi autopilots support onboard datalogging with an uSD or SD card?

Currently, writing to an SD card takes a considerable amount of processor resources, enough to significantly impact critical timings and autopilot performance. For this reason, no onboard datalogging is supported on current autopilots. If logging is needed on the aircraft (say for use without a datalink) then a second board that "sniffs" the datalink telemetry is needed. Support for this is available in Paparazzi. For information, see Data Logger.

Telemetry not working

If you are receiving the error "Failure("Error opening modem serial device : fd < 0 (/dev/ttyUSB0)")"
Solution: You might need to add your user to the modems group (dialout), then log out and in again.
write in terminal:$ sudo adduser <user> dialout
it will be effective after your next login or simply write:
$newgrp dialout
hopefully this helps.