T3

Pic32 Autopilot Progress.

Got the Altitude sensor working (BMP085). This graph shows the responds from holding the autopilot near the roof then lowering it to the floor, then back again. All in all about 8 ft. A little noisy, but not too bad. I haven't attempted any filtering of the data yet.

This graph shows the accelerometer data as I hand held it and did several rotations about the roll and pitch axis.

This plot shows the noise floor of the IDG500 and LISY300AL. The LISY300 is a little quieter, but not by a whole lot. For the most part I'm happy with the performance of the IDG500. Check out the video of the Attitude Estimator if you haven't already.I also got the PWM inputs done for measuring the pulses from the RC Receiver. Here is a quick rundown of status.Power Supplies - workingProcessor - working12 bit AD - workingGyros - workingAccelerometers - workingAirspeed Sensor - workingUSB - workingAltitude Sensor - workingMagnetometer - workingGPS Interface - workingRF Interface - Not DoneCurrent Monitor - workingVoltage Monitor - workingSD Card - Not DoneServo Outputs - workingPWM In - workingI'll get the RF Interface running tomorrow and start sending messages to the ArduPilot ground station. After that I need to finish up on processing the magnetometer to give a heading for removing drift in the Yaw axis of the Attitude Estimator, then it's time to start looking for an airframe to install the autopilot in and begin the stabilization process.Regards,Brian
E-mail me when people leave their comments –

You need to be a member of diydrones to add comments!

Join diydrones

Comments

  • T3
    Hey Brij,
    At this point I'm collecting data with hyper terminal using it's capture text to file feature. Then I plot the data afterwords in a program called Easy Plot. I send the data to the PC either via a USB wired connection with a USB-Serial driver on the PC or with a wirless link using X-Bee radios and a X-Bee to USB interface on the PC side. Either way, the USB driver shows up as a com port and I use hyper terminal to display and capture the data. I also have a python script that can capture the data and show my orientation as in this video -> http://diydrones.com/video/pic32-autopilot-attitude
    or I can send packets compatible with the Ardupilot ground station.

    I may write some software in the future to plot the data in real time, but right now I'm focusing on getting the firmware further along.

    Brian
  • Hi Brian,

    I would be keep to help you test one of the boards as well. I am located in Australia, so not sure if that is a problem?
  • Brian

    Thank you...and July is fine. Will you have any data on the gyro performance on a Heli (like a Trex 450)? There seems to be data that says some gyros have a natural frequency close to the motor vibrations that make the gyros inoperable. It appears that the Analog Devices ADXRS401 gyros may work and LISY300AL gyros not.

    Best,
    John
  • T3
    John,
    I am building up four boards now and have a commitment on two of them. I'll post when they are together. Unfortunately a couple parts are back ordered till early July.
    I'll be posting code shortly too so people can look things over. It's far from done and has many optimizations that can be made, but it might be helpful to some. Just need to find a spare moment or two.

    Brian
  • There was a lot of discussion of gyros that would and wouldn't work on heli's I think in Bill's blog.

    I have a Trex 450 also, but waiting to see what gyros r gonna work. I would love to get one of Brian's boards, but no good at surface mount soldering.

    John
  • Hi Brian,

    I might be interested in one of those four boards. I have a couple of helis 2x Trex 450s and one Trex 600 that I can use a test platform. I was a controls engineer, a while back and did also a lot of C programming again a while back. I do not have the soldering skills nor the equipment to do what you have attempted, so the board has to be stuffed. I also have access to a lot of controls engineers at work, Solar Turbines Inc. if further assistance is required. If interested, please advise of the price tag and what other tools, programs required to keep good progress on your effort.
  • I would also like one of your boards. Looks like you have a great project going. I'm also a full scale pilot with a RC airframe ready for an IMU board, could help with flight testing. Let me know what I need to do. Thanks
  • Developer
    I would like a board if you still have one. Would love to help on the control law writing. Have writen all loops from lower up upperlevel navigation smoothing and a very interetesting energy height controll scheme. Hit me up on pm
  • T3
    Todd,
    I'm using the MPXV2010DP with my own differential amp. An alternative is the MPXV5004DP which has the amplifier built in. They are available on this site for $15.00.

    Brian
  • T3
    Dan,
    The estimator is based on a paper by someone named Mahony and a lot of hard work by William Premerlani and Paul Bizard.

    Check out this link:

    Robust Estimator of the direction cosine matrix

    and also in general the blogs under the UAV Devboard heading at the top of the page. I'm basically building on their foundation.

    In a nut shell though, it's generating a body to local earth (NED) DCM by generating a delta DCM in the body reference frame using on board gyros and multiplying the previous pass's Body to Ned DCM by this DCM to generate a new Body to NED DCM. This DCM can then be used to tell you all you need to know about the bodies orientation with respect to the local NED system. Also the transpose of the DCM can be used to get local NED data (navigation, heading) into the body frame. A slow outer loop based on accelerometer, magnetometer and/or GPS data is used to cancel drift in the mems gyros. I'm currently doing this at a 50Hz rate.

    Hope this helps. If after looking over Bill's threads and the Mahony paper you have any questions, let me know and Bill/Paul have shown themselves to be extremely helpful and willing to share.

    Regards,
    Brian
This reply was deleted.