Posted by Faisal Shah on January 8, 2010 at 1:29pm
* 900 MHz Frequency Hopping Spread Spectrum Transceiver* Point-to-Point and Point-to-Multipoint Network Topologies* Transmitter Power Configurable from 1 mW to 1 W* RF Data Rate Configurable from 38.4 to 500 kb/s* Serial Port Rate up to 460.8 kb/s for Streaming Applications* 128-Bit AES Encryption* Separate Serial Port for Diagnostics* Analog and Digital I/O for Sensor Applications* FCC and Canadian IC Certified for Unlicensed Operationhttp://www.rfm.com/products/dnt900.shtmlIs this too good to be true? Anyone try this out yet?How does it compare to the Digi Xtend module (1W as well): http://www.digi.com/products/wireless/long-range-multipoint/xtend-module.jspRead more…
Posted by Faisal Shah on October 28, 2009 at 11:02am
http://www.chrobotics.com/CHR6d.phpFEATURES* IMU weighs less than 1.5 grams* .8" x .7" footprint* Customizable FIR digital filter* TTL UART communication interface* 16-bit ADC resolution* +/- 400 deg/s gyro dynamic range* +/- 3 g accelerometer dynamic rangeSophisticated onboard filtering, simple user-interfaceThe CHR-6d Inertial Measurement Unit includes a customizeable Parks-McClellan windowed FIR filter to process sensor data. The filter is easily customized by sending commands over the TTL UART.Open-source firmware makes the CHR-6d fully customizableWhile the CHR-6d comes ready to use, it can also be reprogrammed for specialized applications. In addition to the UART, four extra GPIO pins are routed out for additional flexibility. At 64 Mhz, the onboard ARM Cortex™ processor is fast enough to handle a wide variety of sensing and control tasks.On their products page (http://chrobotics.com/products.php), they also make mention of this :CHR-9d Inertial Measurement UnitComing soon - the CHR-9 line incorporates rate gyro, accelerometer, and magnetometer data to create a self-contained attitude estimation system.No news yet on pricing, but they said it should be available in Oct 2009.
Read more…
Posted by Faisal Shah on October 25, 2009 at 11:02pm
Figured out how to close the loop!Programs can interface with FlightGear through FlightGear's property tree. Very powerful.http://wiki.flightgear.org/index.php/Property_TreeIf you run FlightGear with the --httpd= option, it will run a webserver on http://localhost: where you can browse the property tree and refresh the current values. Alternatively, in FlightGear you can type "/", and the property tree viewer will pop up and you can view the values changing in real time. I did this to figure out the sign convention for different properties.The property tree can be read from and written to using a "Protocol". The protocol basically defines the format in which data is exchanged. You identify the nodes in the property tree which you want to interact with, the data types, the string formatting, and voila! Attached are the input and output .xml protocol files which I used (copy to FlightGear's data/Protocol directory).The data can be passed through several means, serial port, tcp, udp, etc... I chose UDP for ease.Here is how I ran FlightGear:fgfs --httpd=5500 --generic=socket,out,40,localhost,5000,udp,output_protocol --generic=socket,in,45,localhost,5010,udp,input_protocolI made the input data rate faster than the output data rate, because I would rather have FlightGear waiting for a new input value (when it doesn't get a new input, the last one persists) than the input being buffered.The --generic option allows one to specify a generic protocol, which was defined in the .xml file (attached).--generic=socket,,, ,,,.Attached is a .c program which I wrote to interact with the property tree and provide feedback controls to FlightGear. I've implemented simple proportional control for roll and pitch to stabilize the aircraft. Timing is driven by FlightGear. The code makes a blocking call to read UDP data. It waits until it receives a new packet, processes it, and sends a packet with control inputs back to FlightGear. Then it loops again, waiting for another packet from FlightGear. Currently, everything is hardcoded (port numbers, etc ..), but it should be trivial to make it more general purpose.This should provide a complete framework with which to write an autopilot controller in C.Comments please!udpserver.coutput_protocol.xmlinput_protocol.xmlRead more…
Posted by Faisal Shah on October 19, 2009 at 10:30pm
I don't have the cash right now to buy a plane, ArduIMU, an auto pilot, and associated hardware. So, while I'm saving for the hardware, I want to play with the various algorithms out there in a simulation environment - to gain a deeper understanding and feel for it. I want to be able to code in C, so I can use the code directly in the hardware autopilot when I reach that point.I want to use a flight dynamics model to generate sensor inputs to the autopilot (3 axis gyro, 3 axis accelerometer, GPS - just like ArduIMU), and have the autopilot generate control surface inputs to the simulated plane in the flight dynamics model.Phase 1: Open loop. Tuning/experimenting with the AHRS algorithm. This would not require the flight dynamics model to accept control surface input from the autopilot. I would load the simulation and fly an airplane around in some pattern. The FDM would generate and log the sensor readings and the "ground truth" pitch-roll-yaw angles. My AHRS code would read in the sensor log, compute the pitch-roll-yaw angles, and would allow me to compare it with the "ground truth" data generated by the FDM.Phase 2: Close the loop. Use the autopilot to accept sensor inputs from the FDM, and send back control surface inputs.Right now I'm concentrating on Phase 1. Has this been done before? I've looked around a bit and it seems that FlightGear is well suited for this type of hackery. Are these properties the ones I should use to generate the correct sensor data, emulating an ArduIMU? How can I get the values I need out of FlightGear (I read that a UDP socket is used?).*Gyro sensors*/orientation/roll-rate-degps/orientation/pitch-rate-degps/orientation/yaw-rate-degps*Accelerometers*/accelerations/pilot/x-accel-fps_sec/accelerations/pilot/y-accel-fps_sec/accelerations/pilot/z-accel-fps_sec*ground truth data to be logged and compared with my own AHRS output*/orientation/roll-deg/orientation/pitch-deg/orientation/heading-degHow does everyone here test their algorithms before sending it up in the air? Anyone else run their autopilot code in a closed loop with a flight dynamics model? If not, I wouldn't mind putting in some extra effort to make this interface nice/easy-to-use so that it can be used by the community out of the box for autopilot testing.Thanks in advance!
Read more…