All Posts (14054)

Sort by
3D Robotics
Our alpha ArduPilot code has an okay GPS parser, but like all of them based on ASCII NMEA sentences, it's slow and doesn't handle errors (corrupted data) very well. We've now done a lot better. Here's Jordi's new Arduino GPS parser, which will be in the next version of the ArduPilot code and has the following features: --Reads the data in Sirf 3 binary mode, not ASCII NMEA sentences. --Autoconfigures your GPS module to go into binary mode. --Parses the GPS data and stores it in variables, including conversion to decimal degrees for gps data, and other stuff such as GPS status, lat, lon, MSL altitude, heading, speed over ground, and climb rate... --Super fast decoding and transmission at 57600 bps... --100% Checksum verification.. --Status LED, connected directly to the GPS fix status.. --More or less commented ;-) You can download the code and run and test it now, or integrate it into your own projects. Lots more cool improvements coming to the ArduPilot code, including better navigation routines and interrupt-driven RC channel reading. We've still got some work to do on the boards (the current one has got a problem with noise and current fluctuations when we're moving the servos, so we've got to add some diodes and capacitors), but we're getting there. Still on track for a September release, one way or another.
Read more…
3D Robotics

Review of new semi-autonomous toy heli

My other blog, GeekDad, has a review of the new WowWee BladeStar, which is like a body-less helicopter. It's got a semi-autonomous mode, using IR sensors, that lets it avoid any obstacles, from walls, ceilings and furniture or anything you wave in front of it: "If you desire, you can activate the autonomous flight function and literally navigate via waving your hands or a sheet of paper and triggering the BladeStar's IR sensors, causing it to move away. (I breathlessly referred to this phenomenon as 'gestural navigation' in my preview earlier this year.) It also packs a very impressive fly time, claimed at up to 15 minutes." More here.
Read more…
3D Robotics

UAVs over the Beijing Olympics

From our Wired Science blog: "Beginning tomorrow, a UC-San Diego professor will be sending unmanned aerial vehicles into the pollution clouds emanating from the city to measure the impacts of the government's industrial shutdowns and traffic bans on the region surrounding Beijing. "We have a huge and unprecedented opportunity to observe a large reduction in everyday emissions from a region that's very industrially active," said atmospheric scientist V. Ram Ramanathan, who also works with the Scripps Oceanographic Institution. While it does not appear that Beijing's plan has reduced particulate matter levels to World Health Organization recommended levels, the attempts still represent a large and unique science experiment. Chinese officials say they've reduced industrial activity by as much as 30 percent, although questions persist about the effectiveness of the shutdowns. Independent and government monitoring station data have been mixed since the program was instituted. But for Ramanthan, the Olympic shutdowns still provide a "once-in-a-lifetime" look at how a large atmospheric region responds to a rapid drop in particulate matter emissions. Ramanathan has been a leader in the use of UAVs and environmental sensors to measure black carbon, aka soot, levels. His previous work, presented at this year's AAAS conference, has attempted to provide evidence that black carbon is a major contributor to global warming. "By determining the effects of soot reductions during the Olympics on atmospheric heating, we can gain much needed insights into the magnitude of future global warming," Ramanathan said. His project, termed CAPMEX, is being conducted in cojunction with Seoul National University and is backed by the National Science Foundation. The UAVs will fly out of the South Korean island of Cheju. Located about 725 miles southeast of Beijing, Cheju lies in the projected path of pollution plumes called atmospheric brown clouds. The UAVs come loaded with a package of new micro- and nano-sensors that will gather important data about the interactions between various pollutants, the sun's energy, and natural meteorological conditions, said Jay Fein, the NSF program director for climate dynamics."
Read more…
3D Robotics

Interesting post from Noah Shachtman over at our Danger Room blog. Excerpt: "Flying drones from halfway-across the world used to be considered a cushy, if somewhat sterile, military job. But the wars in Iraq and Afghanistan have gone on for so long -- and become so dependent on the satellite-piloted planes -- that Air Force commanders have had to call in chaplains, psychologists, and psychiatrists "to help ease the mental strain on these remote-control warriors," the Associated Press reports. Just a few years ago, pilots of unmanned aerial vehicles (UAVs) crowed that "most of the time, I get to fight the war, and go home and see the wife and kids at night." Since then, the demands for remotely-flown spy planes have grown exponentially. Pilots' hours grew longer and longer. And they started to compare themselves to "prisoner[s] with [l]ife sentence[s]." ... In a fighter jet, "when you come in at 500-600 miles per hour, drop a 500-pound bomb and then fly away, you don't see what happens," said Colonel Albert K. Aimar, who is commander of the 163d Reconnaissance Wing here and has a bachelor's degree in psychology. But when a Predator fires a missile, "you watch it all the way to impact, and I mean it's very vivid, it's right there and personal. So it does stay in people's minds for a long time."
Read more…
The problemI think all engineers should play an active part in the programming of any robots they do. I suddenly realize the value of actually and actively sitting down and seeing what your robot can and can't do with the equipment you planned to put on it. A good example might a problem i had with waypoint navigation and the fact that "you have a bearing to head to and an inaccurate compass that updates about once a second" This is not good if your waypoints are close together. If they were far away, you could make it. This racked my brain for a few good hours. After trying different coding, and seeing what was acceptable, the best, cheapest answer for me right now became pretty clear. I've decided to put that IMU on the plane.The solutionThat IMU is going to be put into some pretty wide usage. I'm sure that having a compass would be easier, but an IMU...if i have a compass heading, i figure that I can calculate the angle and wait for the compass to refresh to tell me i'm on the right track. Sure there might be a greater degree of error, but the fact that i can do this with my altitude as well makes it a forgivable loss i guess. I say that now...Since this is a 5 axis IMU, i will lose Pitch. At first, i thought about losing Roll, as I didn't see myself doing much rolling when i have the rudder, and even if i did to make for a sharp turn, i have the copilot to right me. Then i realized that was pretty foolish. I have an altimeter and i can plot a rate of climb/descent using that, and therefor my pitch. This means that i will have a *FUN* time programming in the math to accurately get my bearing precise. I think if i put my X and Y axes to use, and know my Roll, Pitch and Yaw rates, i should get a vector from the two components. and that will help with the coarse tuning. when i get close enough, i will level off and fine tune the turn with pure rudder (Yaw). Does this sound feasible?Don't worry about the difficulty of the math, i just need to know that it will work lol.As far as programming goes, i will have a second snapshot up soon with a bunch of fixes for what i messed up on in the first snapshot, and a more complete Autonomous Flight Activity, sans how it gets the waypoints and the IMU service, which i now have to make lol. grreeattt...
Read more…
3D Robotics
You know those excellent video downlink transmitters from Range Video that we recommend? Turns out that some of them are a little too excellent, which is to say that they're illegal (more power and different frequenceis than those allowed by FCC regs without a licence). The owner has been cited. Articles here and here. It appears the main problem is that the devices can operated on bands other than those authorized. From the first article: "The Commission sent Reznik a Letter of Inquiry (LOI) regarding this and noting the following specific items he had for sale on the RangeVideo Web site: 900 MHz 100 mW audio/video transmitters; 900 MHz 500 mW audio/video transmitters; 1.3 GHz 300 mW audio/video transmitters; 2.4 GHz 200 mW audio/video transmitters; 2.4 GHz 500 mW audio/video transmitters; 2.4 GHz 1000 mW audio/video transmitters, and 2.4 GHz 1000 mW cased audio/video transmitters. According to the FCC, the 900 MHz devices are capable of operation on 980 MHz, 1010 MHz and 1040 MHz; the 1.3 GHz device is capable of operating on 1240 MHz, 1320 MHz and 1360 MHz, and the 2.4 GHz devices are capable of operating on 2490 MHz. "Thus, these transmitter devices cannot comply with the FCC's technical standards and therefore cannot be certified or marketed," the Citation reads. Reznik responded to the LOI, admitting that he first imported the devices in 2006 and that he continues to import the devices. The FCC noted that he admitted to selling more than 2600 of the transmitters since 2006. Reznik also admitted to not filing the proper forms with the US Customs Office or the Border Patrol. The FCC also noted that Reznik stated that before he ships a transmitter device, he "switches" it to operate only in the Amateur Radio Service ('ARS') bands. While radio transmitting equipment that transmits solely on ARS frequencies is not subject to the equipment authorization requirement prior to manufacture or marketing, it appears that the seven transmitter devices marketed on your website are equipped with external toggle switches on the unit, which if engaged would allow operation of the device on the restricted frequencies." [Cool picture of AP plane taken from RangeVideo website]
Read more…
3D Robotics

New desktop autopilot simulation software

Mattay does it again: here's an alpha of his new desktop autopilot simulator. The software simulates an autopilot, and you connect it to FlightGear, which simulates the sensors. This allows you to try different autopilot algorithms and tweak settings on the ground (this is different from a "hardware in the loop" simulation, which uses real autopilot hardware). Requires Windows and the .Net framework. Mattay says that he'll be releasing the source code soon. Very impressive!
Read more…
3D Robotics
Here's a few quick notes that will help you program your own Arduino-compatible boards for first-time use. This is just for people building their own boards. If you bought ArduPilot or BlimpDuino pre-made, all this has already been done for you, so ignore this. Here are the necessary steps to load firmware onto the Atmega chip: 1) You'll need an ICSP AVR programmer and a FTDI cable. We recommend AVRSIP2 [shown] or USBTinyISP for the former and the Adafruit cable for the latter. Connect the cable to the ICSP port on your board [on ArduPilot it's the one marked "AT168"]. The red stripe on the cable should be on the same side of the connector as the square solder pad on the back of the board. (On our boards that means that the red strip is on the side closest to the processor) 2) Now you'll need to change (turn off) one of the default "fuse" settings in the Atmega, which divides the internal clock by 8 so it only runs at 1 Mhz. (Explanation of all that and more about fuses are in the excellent Sparkfun tutorial here). For that you'll need to download some special software. If you have the AVRSIP2 programmer, it came with AVR Studio, which is excellent. If you got the USBTinyISP, I recommend AVRdude, and instructions on how to get and install it are here. 3) To change the fuse with AVR Studio, connect the programmer and go to Tools/Program AVR/Connect. Choose AVRISP mkII. You may get an error (choose cancel). On the "Main" tab of the dialog, click the "Settings" button and pick 125khz, then click "Write". Then make sure "Device" is ATMega168 and "Read signature". At the bottom it should say that all's okay. If so, switch to "Fuses" tab and uncheck CKDIV8. Press "Program", then "Verify" to make sure it's working. Now you can go back to the "Main" tab and change the Settings to 2Mhz. You processor is working fine and ready to program. To change that fuse with AVRDude call up the Windows command line CMD and enter the following command (this assumes you're using the USBTinyISP programmer; if you're using the AVRISP2, substitute "avrispv2" for "usbtiny"): avrdude -p m168 -c usbtiny -U lfuse:w:0xE2:m 4) Now you'll need to burn the bootloader. It's easiest to do this within AVR Studio. Still in the AVR Studio dialog box you used above, go to the Program tab. Where it says "Flash", input the correct bootloader file. For ArduPilot, that's the "ATmegaBOOT_168_diecimila.hex" file in your Arduino hardware\bootloaders\atmega168 folder. For BlimpDuino it's the "ATmegaBOOT_168_pro_8MHz.hex" in the same folder. Click "Program". All should go well and you'll see the OKs below. If you don't have AVR Studio, you can do this within the Arduino IDE. We've found that it doesn't currently support the AVRISP2 programmer, but it does support the Adafruit one linked above. If you're using a crystal or resonator on your board (to run the processor at 16MhZ), select the Decimila board in the Arduino IDE [Note: this is the mode you should use for ArduPilot]. If you're not using any external frequency generator and are thus running on the Atmega's internal 8 Mhz clock, select "Arduino Pro or Arduino Mini (8mhz)" [Note: this is the mode you should use for BlimpDuino]. Connect the AVR programmer to the ICSP pins on the board and select "Burn Bootloader" with whichever AVR programmer you have. The IDE should freeze for about 15 seconds and then report that it's done that successfully. If it doesn't work despite a few attempts, you may have a wiring problem on the board. Each one of those ICSP pins connects straight to an ATmega pin as shown in the schematics, so it should be pretty easy to diagnose. 5) Now you should be able to upload Arduino sketches (ie, your program) from the IDE. Just remember to make sure you've selected the right board--Decimila if you're using an external frequency generator [ArduPilot] and Arduino Pro if you're not [BlimpDuino]. Both boards now support autoreset when programming, so all you should need to do is to press the "upload to I/O board" button in the Arduino IDE and wait a minute. [If for any reason autoreset isn't working you can manually push the reset button on the board every time you uploading code so the bootloader can "look" for the IDE.]. If this all seems a bit complicated, rest assured it's a lot easier to read and follow these instructions than it is to figure it out yourself over months, like Jordi and I did ;-) And remember, you only have to go through this once. After the Atmega is configured for Arduino, you can let the IDE take over all the hard work.
Read more…

Programming

Bah...annoyance. Trevor Taylor has been my rope to sanity, i swear! There's nothing like needing just an Int and having to deal with a "list of Ints". which is the right one? you just never know...Anyways, i'm going to post up what i have done so far. let you guys play with it, incorporate it, comment on it, add it. I think we're decently protected under the creative common license. There are a few things i would LOVE to just make activities, and they REFUSE to compile a such (no idea why). This .MVPL is using the April CTP, ProMRDS, the Lab, and a few other services that i scrounged up. If you don't already have these, get them. I have moved over to the July CTP, so pretty soon you guys will need to upgrade:). Its a mess of activities, and there is more on my other computer.UAV side code.rarEnjoy.***edit*** July CTP saved files won't open with oder CTPs. That is why you have to upgrade:)
Read more…
3D Robotics

Watch SpaceX countdown live NOW

After two earlier failures, SpaceX is going for their third oribital attempt o the Falcon 1 today, with expect launch time at 5:55 sometime after 7:00 PDT Aborted. Stay tuned. May retry around 8:20. Watch the countdown live here. UPDATE: a minute and a half into the flight, the camera cut off and they reported an "anomoly". Doesn't look good. Tragic. UPDATE2: A SpaceX spokesperson speaks: ""It was obviously a big disappointment not to reach orbit on this Flight 003 of the Falcon 1. On the plus side, the flight of our first stage with the new Merlin 1C regenerative engine that will be used in Falcon 9 was picture-perfect. Unfortunately, a problem occurred at stage separation causing the stages to be held together. This is under investigation."
Read more…
3D Robotics

Final (?) BlimpDuino board

I think we're pretty much there on a production-quality BlimpDuino board. It's a beaut, isn't it?
  • 17 grams, with ultrasonic and IR sensors.
  • Controls two motors and one vectoring servo.
  • Built-in RC compatibility (can read two RC channels--throttle and steering)
  • Designed for a 7.4v LiPo battery; has an automatic power cut-off at low voltage to protect the battery.
  • Should cost less than $50, with all SMD parts already soldered. Total blimp kit, with envelope, motors and props, vectoring servo and all necessary gears and shafts, should be under $100. Available by the end of the year. Stay tuned.
Here's what it looks like with the ultrasonic sensor removed. You can now see the SMD ATMega168 chip.

Once we properly test the board, we'll post all the Eagle files and code so you can make it yourself if you don't want to wait for our production version.
Read more…

The CHAOS of AI

Hey, who out there is coding AI?My basic assumption is that AI programming today is, at best, a chess program. What I mean is that everything is based off of pre-existing data and a decision tree that handles each situation. In a chess program that means that there is most likely a database of some sort that chooses a move based upon its likely hood of leading to a check mate. Maybe the chess program is capable of assessing which move it should make based upon the chess rating of the player it is up against, but that still is developed by previous experience (data logging) with that user or preprogrammed difficulty levels and the result is nothing more than a secondary decision tree that helps narrow down the decision the chess program makes.The essence of AI is a decision based upon known data.Pretend that we have a project with the mission of flying from Seattle to Mount Rushmore. Even if I take my basic assumption about AI and apply it to what is taking place inside a UAV, decisions are based on the constant flow of data from the sensors and GPS. If the UAV’s AI is designed to find lift then all the AI is doing is recognizing that condition, which is preprogrammed, and executing a sub routine that takes advantage of that situation and modifying its flight plan accordingly, as long as it ends up at Mount Rushmore. From the perspective of the computer, even the sensor input is pre-existing as a kind of analog database that it compares to conditions that it can utilize. What the AI should do in a particular situation is predefined based on recognizing the conditions in the environment. If the AI encounters an unknown it will have to resort to a program that is designed to handle what it has not experienced before, which is going to require data logging and Boolean logic “learning” to still achieve the goal of getting to Mount Rushmore.Suppose the condition the AI has never encountered before is a hurricane. It may be that the AI collected more data, data that it had no idea existed before, but to do that, the AI had to be pointed in the direction of collecting the data in the first place. Whatever response the AI then makes with this new data is going to come from a program that tells it to collect a certain kind of data about itself as it strives to achieve the goal of getting to Mount Rushmore. But the essence of AI is still a decision tree; it is just that the decision tree is being filtered through the predefined expectation of what gets it to Mount Rushmore.Basically:If this is getting me to Mount Rushmore ThenKeep doing it = trueEnd IfWe still have a decision tree that works on predefined data. The only difference is that we have a program that tells the AI how to build the decision tree based on the positive choices that achieve the goal.The decision tree being built would really be based on a template and that is why AI is essentially a decision based upon known data, even data that it has not seen before, because even the unknown is going to be made to conform to something that is known.Here is a philosophy of where I would like to take AI in the future.I think the future of AI will be made using chaos theory and fractals. For instance, snowflakes are practically infinite in their appearance but they are still snowflakes. AI intelligence based on a pure decision tree may be able to handle this fact, but the process of recognizing each individual snowflake will take more time than it’s worth to figure out. Wind moves in predicable patterns and the predictability is not much different than the fact that a snowflake is still a snowflake even though each, individually, is radically different.Of course, this notion of using chaos theory is nothing new. In a world that is increasingly using biometrics, the idea of using the math that matches the fractal for something like facial recognition is becoming increasingly more common. This recognition then would allow a robot, perhaps, to go into a subroutine that governs its protocol around a human being.In the world of UAVs, and for that matter robotics in general, the ability to use fractals could create the ability to forecast conditions before they happen. For instance, instead of having a situation where the decision tree is being created on the linear input of the sensors, the AI would anticipate its own unknowns.A good example of what I mean would be eddies of the wind. In order to survive a hurricane the AI is able to anticipate where they are and plan a flight path that tries to avoid the most powerful swirls. In a one knot breeze, the AI can choose to ignore them as unimportant and stop forecasting these unknowable events. Somewhere in-between these two wind factors the AI might choose to start forecasting new data for itself.Another way this might be useful is recognizing a geographical condition, such a mountain, and projecting how the wind may act in that situation. A factor it might consider then is the abandonment of a current lift scenario in favor of taking advantage of the lift being provided near that mountain (or hill for that matter).There is no escaping a decision tree. They are a necessary function, but they can become more of the conscious part of the AI while the abstract of fractals can become more of a subconscious that is able to bring the abstract into focus.In fact, in this subconscious, the AI can run simulations of what events might take place if it chooses a certain path and have a preplanned behavior for venturing off into the unknown.
Read more…