All Posts (14048)

Sort by
I have just recently gotten one of these from http://thesiliconhorizon.com/

And I was basically planning on using it as the hardware platform for my own integrated UAV controller.The specs TechFX Motion OSD IMU:* small 2"x2.5" size* fast dsPIC 40 MIPS 80 Mhz MCU* 3 axis accelerometer MMA7260Q with G selectable* 3 axis Gyroscope of IDG300's* MAX 7456 On screen display video overlay NTSC and PAL formats which overlays the data sent to it from the dsPIC over the Video input* (2) RCA jacks for Video in and Video out supporting NTSC and PAL formats* GPS port for 32 channel Sannav FV-M8 (Etek EB-85A) GPS module MAX 2 HZ update rate* DGPS port for optional RTCM DGPS updates* Xbee connectors (XSC gives maximum range of 15 miles!)* 256K I2C serial eeprom for storing settings, waypoints and GPS logger data* USB fullspeed 2.0 communications via FTDI chip* SPI, I2C and UART ports for using optional modules* (8) 3.3 volt IO configurable* (8) 5 volt Output configurable as PWM (servo) or TTL* 10 bit a2d* ICSP port for ICD2 or Pickit2 programmers* 5 volt 800 mA LDO voltage regulator* 3.3 volt 800 mA LDO voltage regulator* Full power and ground planes with quality 6 layer board design minimizes noise* Power ports including 3.3, 5 volt, and ground connections* Optional 0.100 “ headers* Voltage input of 6-9 volts DCI have been thinking of a setup like this:TechFX OSD/IMU with custom programming for Kalman, as well as waypoint and return home navigation, using an XBee 868 modem for control and telemetry plus a video TX for live feed with the OSD overlay.The TechFX has 8 PWM out, and I2C, and I have a I2C 8 servo controller board so there should be enough channels for flight, camera pan tilt and zoom, plus a few other tricks.On the ground I was planning on using a laptop with a custom app in C# to communicate with the UAV, and to be able to also control it manually when needed using normal USB flight sim controllers. The laptop would be showing the video stream, or moving map, or attitude/flight data or a mix of them all.I would use software to select autonomous, manual or a mixed mode on the TechFX but would most likely include a RC rx with a hardware mux as a backup in case of software failure.The airframe will be my ~40" trainer (see my bad pic) with a hefty noname brushless motor, 70amp ESC, and 22.2V Li-Po batteries (big) plus a 7A BEC for 5V and a 3A 9V DC-DC.Will have at least one belly mounted camera with pan and tilt to begin with and then add zoom and another down facing camera later probably.This will take quite some time as it is being built on a very small budget and will move slowly, plus there is a ton of programming to do which may also move slowly since I already do it for 8 hours a day at work.Any comments welcome :-)Ps in case anyone wonders, No I am not affiliated in any way to the silicon horizon.
Read more…
3D Robotics
Some people have had questions about ArduPilot's FTDI port. Basically, it's a standard FTDI port but we don't use the power pin. That means that you can't power the board from the FTDI cable, and every time you're using the FTDI cable it must be powered by another source, such as your ESC, battery or whatever else you'd normally use. The reason we don't use the FTDI's power is to avoid power conflict with the board when you're using the FTDI cable as a serial monitor during regular ArduPilot operations. [FTDI is 3.3v and the board is 5v] The pinouts on the Sparkfun FTDI board are as follows: GND CTS 3.3v TXO RXI DTR ArduPilot's FTDI pins are: GND [not used] [not used] RXI [matches FTDI's TXO] TXO [matches FTDI RXI] DTR
Read more…

My UAV

Hey all I finally took some pictures, nothing really different about my UAV. It will have a police scanner in it though....here is whats in it.Video Tx (25 miles)....slight overkill for the momentO.S LA 40 Engine12v Battery Pack4.8v Battery PackArduPilot (on the way first board went toast)XBee (On the way)Ground SideEndurance RC Tx (Computer joystick to Radio TX)Video ReceiverGE Telemetry (On the way)Internet Video Stream (On the way)Still Image Geo-Referencer (Home grown and proud of it :-D )

Read more…
Hello everyone, I've been visiting the website for a while and have enjoyed reading the discussions here, but this is my first official post. I am working on hovering my co-axial helicopter and decided to do this using the Propeller chip, and specifically using the Sparkfun 5 DOF IMU and Jason Wood's code which we all appreciate. To make a long story short, I downloaded the code successfully to the development board with the IMU and ADC soldered according to the circuit in the code, but I am having trouble checking whether the IMU gives me correct angle, rate, and q bias. I am using the modified FullDuplexSerial object to display the readings from the KF on the screen using the serial terminal, but I am getting various different errors. Is this the correct way to do this? I was wondering if someone who has done this before could offer any advice or procedure to check whether the IMU and Kalman Filter work. Any help will be greatly appreciated! I look forward to advancing my knowledge to keep up with you guys! -Victor
Read more…
3D Robotics

Arduino v13 is out!

The new version of Arduino is now out. Improvements included fixing PulseIn() to wait for a transition to start timing (i.e. ignoring any pulse that had already started when the function was called) and, importantly, supporting the ATMega328 natively! That last one is a biggie, since the 328 has twice as much memory as the 168 we're currently using (32KB of flash, 2KB of RAM, and 1KB of EEPROM). Eventually, we'll migrate ArduPilot to that, which will allow us to load waypoints more gracefully (and a lot more of them) and other cool stuff that may include datalogging.
Read more…
As i postet here, i lost my UAV_Eins (one) due to "environmental effects".As i christmas wonder, i got a message that it has be spotet in a bush a couple of kilometers away from the airfield it was lost...Today (about 5months later!) i got it back!!The fuselage and wing is in 99% perfekt condition!!! No structural damage... :)Only the balsa wood is gone, due to the rain and weather. (its pretty wet in norther germany at the end of the year)Here are some pictures of this long-time-traveller...

3264604174_dfbd6155f5_o.jpg

3264599462_869689447b_o.jpg

3264249692_032b25abb2_o.jpg

3264239466_a554b20b95_o.jpg

Edit: Seems that 2 servos are scrap, the rest works just fine.....receiver, esc, motor, fma baord and sensor, the other two servos....everything is working... :)i think it will fly this week
Read more…
3D Robotics

ArduPilot MUX issue update: CKDIV8 fuse

We have now fully diagnosed the ArduPilot MUX firmware problem, and it turns out there were two problems, not one. The early boards were flashed with the wrong firmware, which was fixed on 1/26, but the boards after that until 2/5 continued to have a second problem, which is that the CKDIV8 fuse in the Attiny45 chip wasn't cleared at the factory, as it was supposed to be. What does the CKDIV8 fuse do? It divides the internal 8Mhz clock speed by 8, so the Attinys ship from the manufacturer with a default clock speed of 1Mhz. Our code, however, was designed to run at 8Mhz, so we clear that fuse to bring the chip up to its full speed. If you have an affected board, what should you do? Clear the fuse yourself with your AVR programmer and AVR Studio. Instructions are included in this post. Our apologies again for these teething problems, but I think this time we've squashed the last bug. All board shipping now have that fuse set correctly.
Read more…

Be Careful with your ArduPilots

Hey guys, I was setting up my autopilot system for my senior thesis "Building a UAV for Remote Sensing and Cartographic Applications" when I guess I burnt it out. No power to the board, including direct power, and yes i switched the jumper. :-(.... The whole board seems toast. I ordered two new boards today. I followed the wiring diagram and all. I'm thinking there was a surge somehow. If you guys have any ideas let me know....P.S. The programers won't even read the board :'-( Take care and keep up the good work...I'll be posting pictures soon
Read more…
I'm an amateur radio operator (K7AAY) specializing in emergency services work, seeking a way to loft a repeater for fire fighting support and other emergency services work. We get wildfires and the state rado net has big gaps in canyons and the boonies.Any design would compete with current state of the art, i.e., a weather balloon, a tank of helium and the tether with a wire carrying 500ma at DC voltage adequate to deliver 8.4VDC to the transceiver (an HT or Handheld Transceiver and a controller board) on the weather balloon.How much mass can I squeeze into a UAV?What's the optimum design?1) Solar cells on fabric to also run an electric motor for sterage on a lighter-than-air craft2) a larger LTA burning hydrogen from the envelope to run a motor with a small generator set as well as an engine for steerage, or3) a multi-engine heavier-than-air craft with larger than ususal fuel capacity?
Read more…
I’m completely new to this and a complete no-know about electronics but I have a few questions not related to a typical UAV.

For reference and typical for 2 stage recovery.I launch rockets in The Netherlands and as a side project I want the rocket to be recovered by a steerable parachute and returned to a fixed waypoint. Preferable this waypoint would be right next to the launch pad. Basically the return-to-launch (RTL) feature of the ArduPilot.The rockets are launched twice a year on a military shooting range with restricted airspace and typically achieve heights between 1500 – 2000m. Because of wind, the rockets have either a small parachute for a rapid decent or drift for several km from the launch pad. Ideal situation would be a parachute that could steer / circle the rocket back to the place where it was launched. Two main reasons: 1) safety, 2) higher flights possible with less drift.RC is not an option because at 1km the rocket under chute is hardly visible.I have a 3 stage plan of approach:Stage 1) Proof of principle - by means of building a prototype and launch it from a RC plane. There is an organisation which does just that: www.rc-parachute.nlStage 2) Single stage recovery of a test rocket from an altitude of +/- 1km. All pyro events are triggered by means of a RDAS tiny.Stage 3) Dual stage recovery from an altitude of 2 km. First a small drogue is released for a rapid but controlled decent to 1km after which the steerable parachute will be deployed and the ArduPilot should take over. Again all pyro events will be triggered by the RDAS.A few questions arise:Stage 1-21) I think I figured this one out already but is it possible to have an independent direct power supply which does not go through the ESC?2) Can the unit be switched on/off by means of a physical toggle switch next to the unit and not through and RC receiver?3) I will not be using IN 1 & 2 on the ArduPilot. Does the unit still function? Basically all I will be using is the rudder servo to control the steering of the chute. The rest is not used.4) I have the possibility to get a GPS lock when the rocket is at the launch pad and the GPS receiver is out (for reference see photo below. Before launch, I have to put the receiver into the aluminium or carbon fibre rocket. There it will lose GPS lock and only after apogee when the parachute is out the GPS receiver is hanging free again and able to get a lock again. Is this possible? How long would it take for the GPS to get a new lock and does the ArduPilot remember the first GPS lock thus returning to the launch pad (the unit is not switched off)?Stage 35) Experience proves that when the rockets rapidly descents under the drogue chute only it rotate on its longitudinal axis even if swivels are installed in the lines. Is the GPS receiver still able to get a lock when, for example, it rotates at 1Hz on its own axis?Looking forward to your comments and I thinks this will be quite a fun project.JurriaanPS - I’m not trying to make the next DIY cruise missile (there is a distinct difference between a rocket and a missile as my rockets lack guidance).For more info www.nerorockets.org or my personal site www.verticallimits.nl
Read more…
While transcribing parts of ArduPilot code in Python for testing and NMEA sentence parsing/emulation, I noticed that the checksum calculations/comparisons are made twice, once for the RMC and later for the GGA sentences.Could it be worth a few bytes or simply better to do it another way to limit the number of checksum to process (for now, all received sentences are cross-checksummed)Could we1) test the sentence header (RMC or GGA)2) if header found, do the checksum calc3) if chksum ok parsing the sentenceThis solution would leave all unnecessary sentences eventually sent by the GPS out of the processing loops a little earlier than now. this would probably save some processing time for those who do not program their GPS to limit the NMEA flow to the minimum sentence needed in ArduPilot.Another question concerning the code:is there an explanation as to why the latitude/longitude conversions to decimal degrees need temp variables. In Python, I do each conversion in one line:lat = float(`latIn`[:2]) + float(`latIn`[2:])/60lon = float(`lonIn`[:`lonIn`.index('.')-1]) + float(`lonIn`[`lonIn`.index('.')-1:])/60Would such single line be doable in Arduino?Finally, I would like know if there is any way to read a full line out of the GPS instead of parsing through each character. In Python, I use a serial.readline() and then read complete blocks between the comma delimiters:datablock = buffer.split(',')latIn = string.atof(datablock[3])lonIn = string.atof(datablock[5])course = string.atof(datablock[8])Is there aFinally, I wish to say I am not a programmer, but only an archaeologist, so I could be wrong ! Thanks for any inputs on this, I'll probably add more questions about the code in the coming days, I am a newbie.
Read more…

His & Hers

My girl always said that "good things come in small, teal boxes", and now I think I understand... I am all about small, red boxes!

Kudos to Sparkfun and the DIYDrones developers who got the hardware / software / simulators figured out - this really opens the door for the rest of us to tinker away!
Read more…
Developer

New ArduPilot Pocket Navigation Algorithm

For months i have been slowly investigating and "developing" an accurate, efficient nav code (for slow power 8-bit uControllers), finally i just finish my new navigation algorithm, is super faster and smaller.... =).Before the functions were like this:int get_gps_course(float flat1, float flon1, float flat2, float flon2){float calc;float calc2;float bear_calc;float diflon;//I've to spplit all the calculation in several steps. If i try it to do it in a single line the arduino will explode.flat1=radians(flat1);flat2=radians(flat2);diflon=radians((flon2)-(flon1));calc=sin(diflon)*cos(flat2);calc2=cos(flat1)*sin(flat2)-sin(flat1)*cos(flat2)*cos(diflon);calc=atan2(calc,calc2);bear_calc= degrees(calc);if(bear_calc<=1){bear_calc=360+bear_calc;}return bear_calc;/********************************************************************************/}unsigned int get_gps_dist(float flat1, float flon1, float flat2, float flon2){float dist_calc=0;float dist_calc2=0;float diflat=0;float diflon=0;//I've to spplit all the calculation in several steps. If i try to do it in a single line the arduino will explode.diflat=radians(flat2-flat1);flat1=radians(flat1);flat2=radians(flat2);diflon=radians((flon2)-(flon1));dist_calc = (sin(diflat/2.0)*sin(diflat/2.0));dist_calc2= cos(flat1);dist_calc2*=cos(flat2);dist_calc2*=sin(diflon/2.0);dist_calc2*=sin(diflon/2.0);dist_calc +=dist_calc2;dist_calc=(2*atan2(sqrt(dist_calc),sqrt(1.0-dist_calc)));dist_calc*=6371000.0; //Converting to meters, i love the metric system.. =)return dist_calc;}Now are like this:int get_gps_course(float flat1, float flon1, float flat2, float flon2){float calc;float bear_calc;float x = 69.1 * (flat2 - flat1);float y = 69.1 * (flon2 - flon1) * cos(flat1/57.3);calc=atan2(y,x);bear_calc= degrees(calc);if(bear_calc<=1){bear_calc=360+bear_calc; }return bear_calc;}/********************************************************************************/unsigned int get_gps_dist(float flat1, float flon1, float flat2, float flon2){float x = 69.1 * (flat2 - flat1);float y = 69.1 * (flon2 - flon1) * cos(flat1/57.3);return (float)sqrt((float)(x*x) + (float)(y*y))*1609.344;}And if you wonder the difference i have compared them side by side and recorded it.The results are here:The precision is exactly the same, only if you go more than 8 km away, the distance starts to get dirty... But good enough for our purposes... =)
Read more…

ArduPilot successful flight simulation

A photo of successful flight as seen in Google Earth and X-plane:

Here is another ArduPilot simulation inspired by Jordi's simulation.My simulation requires minimum additional hardware, all you need is ArduPilot connected by FTDI cable to PC.Actual simulation runs in X-plane simulator. ArduPilot get simulated GPS data over serial, and it returns back proposed servo positions back over serial as part of telemetry info (servos can also move physically). ArduPilot also reports bunch of variables - lat/lot/alt, next waypoint, distance to it, etc.What you need to repeat the simulation:- Modified ArduPilot code from this blog post- X-plane 9 demo (buy full version if you wish, but demo works just perfect, it only ignores joystick input after 10 minutes, but we control it other way so it really doesn't limit us)- Google Earth- ArduSimulator ArduSim_20090211.zip (developed by me), which is simple application that does following:1) Connects to ArduPilot over serial for sending/receiving data2) Connects to X-plane on localhost (same PC)3) Reads data from X-plane (lat/lon/alt/course), sending these to ArduPilot as GPS sentences4) Simulating FMA copilot stabilization on ailerons/elevator5) Reads and displays telemetry and servo positions from ArduPilot6) Sends servo positions to X-plane to control throttle and rudder7) Records fly path and sends it to Google Earth to displayHere's how to repeat the simulation:- Start X-plane, go to Menu->Settings->Net Connections, select tab Inet 3 and enable "IP of data receiver", change IP address to 127.0.0.1 and port to 49001. It looks like this:

- Select Aircraft from folder Aircraft\Radio Control\GP_PT_60 (yes, we want to fly RC plane which has ail/elv/rud/thr controll)- Select airport Innsbruck- You can open this KML path: Innsbruck.kmz in Google Earth, which was my testing fly plan configured in ArduPilot; this will show you the waypoints- upload compiled ArduPilot code to the board and leave it running; LOCK LED should keep flashing- start ArduSim.exe (simulator tool); it will connect to serial port and X-plane; if it can't connect to serial, specify correct port and baudrate and press Start button- click [Google Earth] button in ArduSim to make connection with GE- hit B in X-plane to release brakes, and try keys A/W/C to choose various viewsNow simulation should be running if everything is connected successfully, and you should see plane in X-plane to fly and visualization path & icon in Google Earth to move. Don't control plane in X-plane! ArduPilot will take-off and fly on its own.Here's video how it all looks in action:And complete flight path visualization for Google Earth: Flight.kmzYou can see original waypoints in white, and real fly path in yellow. And also final circulation over start point when all waypoints were visited...Now about problems and future tasks:- I have strong impression that controlling altitude by throttle with use of copilot stabilization doesn't work properly, this simulation showed me that plane didn't want to drop altitude from high point to lower one... see results in above flight path in GE. I'm not sure how real plane behaves (didn't went out to real world with this yet), we'll see.- For this reason I plan to start playing with complete stabilization in ArduPilot, and controlling both elevator+throttle to get desired altitude.- You can play with dozen of various parameters to control behavior, most obvious are PID settings for throttle/rudder in ArduPilot, but also PID values in stabilization (which is here provided by simulator tool, in real world it is FMA Copilot which you can control by its sensitivity setting). Then you can change maximal servo rotation for ArduPilot to work with. All these values make the plane fly smoother, make more precise turns, etc etc. And the settings seem to depend on actual aircraft and its physical behavior. So there won't be single settings working for everyone.- It's somehow cumbersome to specify different altitude for various waypoints; while I converted waypoints from KML file out of Google Earth, I had to specify individual altitudes manually in waypoints.h file in ArduPilot code.After all, I'm pretty happy to see the plane flying in simulator and doing the task! Note that it's ArduPilot doing the navigation work. And in a real airplane, this simulation allows to reuse the ArduSim application as a base station, getting telemetry from plane over Xbee modem and displaying what it does as well as showing path in Google Earth.
Read more…