In Ostheim vor der Rhön findet dieses Jahr wieder ein Kopter-Treffen statt, und zwar vom 5.-8. Mai 2016!
Weitere Informationen zum Event (Anreise-Infos, Teilnehmer-Anmeldung, etc.) gibt es unter http://kopter-in-ostheim.de/.
In Ostheim vor der Rhön findet dieses Jahr wieder ein Kopter-Treffen statt, und zwar vom 5.-8. Mai 2016!
Weitere Informationen zum Event (Anreise-Infos, Teilnehmer-Anmeldung, etc.) gibt es unter http://kopter-in-ostheim.de/.
Today I managed to get my first DC Easy Rev 1.4 up and running I wanted to do it at the CCCamp 2015, but I had very bad luck with the two first PCBs (assembly problems with our reflow oven which does not produce really reliable PCBs with fine pitch and QFN components). Only electronic geeks can share the insanely lucky feeling when at last a LED is blinking (but for this, of course we need a floating point ARM Microcontroller – ah well, a 555 Timer would also do, but everybody can do that!).
dragonCopter will be on the #cccamp15. Have a look at the CCCamp 2015 Wiki. The main goal will be to present the new DC Easy Hardware with a (hopefully finished) software, and to do some FPV flying experiments.
I posted some information about the DC Easy electronics in the electronics category. The DC Easy is really great: A complete quadrotor electronics with flight control and four brushless controllers on a single 50x50mm PCB (where others barely manage to put a flight control µC and some SMD resistors). The DC Easy hardware was created in 2014 but due to a lack of time, the software for it still is not ready, but is targeted for the CCCamp 2015.
Welcome back to my blog, esteemed reader!
In June, we organized the 11. UAVP-NG Multicopter Meeting in Zurich, Switzerland. It was a great event with good weather. Lots of folks joined and we had a lot of fun.
Besides that Ralf, one of our software and hardware developers, finalized the first prototype of the new HW-0.30-mini in the last month. We sent the Gerber files to our chinese producer and two days ago we finally received the first prototype PCB of the new UAVP-NG HW-0.30-mini-r0 boards!
The boards look great. I used my new Fujifilm X-T1 to take the pictures. It seems I still need to learn a lot - finding nice lightning was not easy and I finally resorted to normal sunlight, after failing to get sensible pictures using two table lamps.
The new HW-0.30-mini-r0 PCB in 6 layers has our classic 'mini' hardware size of 55x55mm. All features of the bigger hardware are included - except the second STM32F4 CPU and the dual port RAM, which wouldn't fit on a PCB of this size.
Top side of the new HW-0.30-mini-r0 PCB (full size):
The bottom side of the new HW-0.30-mini-r0 PCB (full size), the footprint of the STM32F4 processor is nicly visible:
The boards look nicely made and I hope we will get them airborne soon!
In the next weeks we will assemble some of the new PCB and test them throughly. Should everything be fine, the new PCBs will show up in the UAVP-NG Shop.
|;* TowerPro 25A 2009+ "type 3" boards with inverted nFETs *|
|;* Phase A and B sense on ADC5, ADC4; based on tp-18a as *|
|;* modified by Eduardo Reginato Lavratti (agressiva) *|
A quick update:
'Kempo' has put together a great manual on how to use Gluonpilot for geomapping. You can find it here.
Some people seem to be unaware that the GP2 manual is located here.
Since Google Code doesn't allow any more updates, I have moved the latest beta to Google Drive. You can find it here.
Again it was a while since I posted something here. I just wanted to write a quick update on what I’ve been up to lately.
The Lisa/S board is only 20mm x 20mm and weighs about 3g with a lot of integrated sensors.
Just like Lisa/M it’s bigger sister. Lisa/S is powered by the STM32F103 ARM 32bit microcontroller. Providing quite a lot of processing power for your UAV needs. On top of it all the board has 4 MOSFET solid state switches. They make it possible to use the board directly on the tiny brushed motor quadcopters, nano helicopters and fixed wing airplanes. I am quite excited how much I managed to put onto that tiny footprint. Usually much bigger boards don’t even include a GPS receiver on the board.
CYRF is a module that I developed as part of the system. It contains the CYRF6936 2.5GHz transceiver chip. It is connected to the MCU on Lisa/S through SPI. The particular transceiver is the one at the heart of all the Spektrum transmitter and receiver systems and many others like Walkera Devo. It is very exciting because we have direct access to that chip from the autopilot and can implement compatibility to a lot of 2.4GHz RC gear available out there.
Our current software implements support for some Spektrum RC transmitters and as a bonus we can simultaneously connect to a laptop using the USBRF dongle. This removes the need for having two radios on your vehicle thus saving weight.
All of these items are currently available for pre-order in the 1 BIT SQUARED shop. We are working on finalizing the production process of the first batch of Lisa/S, CYRF and USBRF. We are projecting they will be available in the shop by the end of May. We have put a lot of effort into making these boards, if you are interested you can read more about it in the 1 BIT SQUARED blog.
Last but not least 1 BIT SQUARED is my own company that I founded early last year. I want to develop and produce hardware and software that I am excited about and would like to share with others that are interested in the field of airborne robotics. If you like open hardware and software and want to support me directly the shop is the most direct and easiest way to do so.
I just re-built my largest 12″ quad, the “bumblebee” with the fireBLDC 1.2 brushless controllers mounted directly under the motors under round aluminum carrier plates. This is really the way these brushless controllers are meant to be installed:
Of course the cable routing could be better (inside the riggers and through the aluminum plate), but for testing/quick installation, this is ideal. The first two flights were excellent, the quad really makes a nice humming sound when rising at full throttle, like a church organ pipe ;-). The CAN bus makes it extremely robust, so no fears of I2C bus errors here, even with long cabling. I also put some position light LEDs at each end, because the fireBLDC supports to switch one LED for this reason. Sadly I decided to use only a microcontroller GPIO, so the LEDs are very dark due to the little current. For the next version, I will use more powerful LED drivers.
For once, not that much time passed since my last post. Which is a good thing! It helps me to concentrate on the real news... ;)
So, let's see... The UAVP-NG team was meeting at the 30. Chaos Communication Congress 30C3 in Hamburg. The congress gets organized by the Chaos Computer Club, one of the oldest hacker clubs of the worlds. As every year, it was a great event with numerious interesting talks and workshops.
Our team built a small UAVP-NG assembly at the 30c3. We showed our different copter hardwares, did a lot of software and hardware hacking and had many interesting discussions.
Volker - one of our hardware head developers - brought with him the first assembled HW-0.30-r0 prototype which you can see Volker presenting here at the 30c3 assembly in Hamburg.
This is the first prototype of our new STM32F4 based HW-0.3x hardware family. It's feature list is impressive and I will introduce you to it's features further on.
Most of our head developers showed up to the 30c3 meeting and we did a lot of NGOS hacking to get our newest hardware airborne. Several small bugs on the PCB had to be fixed and Volker, Ben, Martin and several others did a great job in tracing the problems of our newest prototype.
Christi brought with him his new styropor oktocopter which he flew inside of the 30c3 hackcenter.
Shortly after 30c3 the UAVP-NG core team meet in Zurich, Switzerland for a hacking weekend. There we finished the last hard- and software fixes for HW-0.30-r0 and did the first maidenflight of the new hardware prototype.
In the days since the maidenflight our hardware developers prepared HW-0.30-r1 and we produced a first batch of the new boards, accompanying breakout boards for switches and a JTAG adapter as well as a new NGusb-v2 which supports 6-pin RTS/CTS connections with flow-control and 4-pin UART connections without.
The new PCBs have arrived from the fab and look great. Here you see the top-side of the brand new HW-0.30-r1 PCB in 6 layer:
And this is the bottom-side of the board:
As you can see, the new hardware sports two STM32F4 CPUs coupled by a dual-port RAM, shared by the two CPU.
Here's a short overview of the features:
I wrote down the development history with some nice pictures of the logikopter and the first revisions of the dragonCopter hardware. See the about page. Having a look back sometimes gives a good prediction what can be anticipated in the future ;-).
What I currently look at: Invensense has its MPU 9250 coming up, which could be a nice replacement for the MPU-6000 6DOF Gyro/Acc and HMC5883L Compass in one chip package. So, less PCB space occupied and less different parts to source as well as a simpler serial protocol. Looks like the future IMU for quads! Also, I like the new ublox GPS module with an integrated patch antenna, the PAM-7Q. Too sad I am not a facebooker, so I can’t press any like buttons for that one. Both the Invense IMU and ublox GPS are upcoming products which can not be sourced yet, so there a nice candidates for an upcoming design.
When I started to develop the dragonCopter, I used Keil Realview MDK Evaluation (Code Size limited to 32KB) and some self-built Eclipse/Codesourcery solution which overcame the 32KB limit, but which did not work very well (especially debugging did not work well when it came to set breakpoints over Segger GDB Server). Since the project will grow out of the 32KB limit when it comes to navigation features, it was time to switch development tools to a free solution. I recently installed Coocox which is a very good eclipse based IDE for ARM Cortex Development. It works together with GCC ARM Embedded which is maintained by ARM developers and seems superior to the Codesourcery Toolchain. Coocox seems very nice, its only drawback so far seems that it is not yet ported to linux. But GCC ARM Embedded is ported to Linux, so development on Linux could be done with another IDE and makefiles for GCC ARM Embedded.
It has been quite a while since the last post. Becoming a father does not necessarily ramp up your time budget for your hobbies, but abandoning your hobbies does not necessarily make you a better father, because hobbies make you lucky. And when you are lucky, you can be a better father! So, whats up next? I always wanted to implement the navigation features such as GPS position hold/ waypoint navigation and the like. But until now, I only managed to implement a simple barometric height controller, which is a good start for navigation, but not yet the complete solution. So this will be my target for this year. I also switched my blog to the english language, so it is not limited to a german audience anymore.
The following playlist shows the first 10 weeks of our house construction as a timelapse. Each week was compressed to approximately three to five minutes. The videos were recorded with a GoPro 2 with a time interval of 30 seconds.
The direct link to the playlist:
Welcome back to my blog, esteemed reader!
Let's see what has happened since my last blog post end of 2012...
In december 2012 the whole UAVP-NG team meet at the 29. Chaos Communication Congress in Hamburg. It was a great event with many interesting talks. Many of our pilots, beta-testers and developers joined the UAVP-NG assembly and we had a lot of fine discussions, hacking, talks and fun. Many visitors came by at the assembly and all of our developers and beta-testers were constantly explaining and showing our new hardware HW-0.24-mini-r1 and the NGOS software.
Our team started to design a new hardware revision, called HW-0.30 at 29c3. Volker, one of our hardware head developers, took the project lead. We discussed and designed the features of the new hardware revision during the 4 days the congress lasted. Having defined most of the feature set the real design work on the new hardware revision was done later in early spring by Volker together with Ben and Martin.
In early May the 9. UAVP-NG Developer Meeting took place in Zurich, Switzerland. Sadly we had bad luck with the weather and we got rain for most of the 4 days. On the other hand this gave us a lot of time to discuss the HW-0.30 design and our hardware team verified the new design pin by pin and chip by chip. In the night I myself did two long hour talks on NGOS and it's implementation for my fellow developers. The design of the new hardware had already progressed a lot and the new design looked promising.
Later on in July Martin invited us to the 10. UAVP-NG Developer Meeting, which took place in Gruenstadt, Germany. The weather was wonderful and we enjoyed two great flight days. The design of the new HW-0.30 was nearing completion and we started to plan production of the first prototypes.
This fall, we implemented a new fully autonomious looping function in NGOS which Christi, one of our developers, implemented while doing a lot of crash intensive testing. It essentially allows you to do fully autonomious loopings on the press of a button. Over time the new looping function was perfected and Ralf, another of our developers, demonstrated the new feature in a great movie some days ago.
End of september we finally ordered the first HW-0.30-r0 prototypes. The board will feature two STM32F4 CPUs with a dual-port RAM in between them allowing both CPUs to have near realtime sensory data and synchronisation. It will support a CAN bus ring additionally to the I2C bus for BLCs. A lot more improvements were incoperated and I will post more on this in a later post.
The first HW-0.30-r0 prototype PCB arrived today. Here are the first pictures of the new board...
The top of HW-0.30-r0:
The bottom of HW-0.30-r0:
We plan to design a HW-0.30-mini later on, when the HW-0.30 design has been stabilized and has proven itself. The HW-0.30-mini will contain only one of the STM32F4 CPUs and will not use a dual port RAM. This will allow to build it with a 55x55mm footprint similar to the earlier HW-0.24-mini and HW-0.22-mini PCBs. It will provide a nice upgrade path for all our HW-0.24-mini and HW-0.22-mini pilots.
The HW-0.30-r0 prototypes will now be delivered to our developers and we can hope to see fully assembled HW-0.30-r0 boards soon. If we are lucky and our software developers find time for the final touches on the NGOS STM32 port we will eventually see the first prototype get airborne at the 30C3 - The 30. Chaos Communication Congress in Hamburg where all developers will meet again for the UAVP-NG Developer Meeting at 30C3.
If you are interested in the UAVP-NG and live near Hamburg, make sure to visit us between the 27. and 30. december at the 30C3 in Hamburg!
And again it's getting winter and I've not updated my blog for too long. ;)
Let's change that...
At last year's 28c3 Chaos Communication Congress the UAVP-NG developer team succeeded to get (our back then brand new hardware) HW-0.23-mini-r0 airborne.
The new hardware - designed by Volker and Ben, two of our NG developers - no longer contains analog sensor technology but instad uses modern 3D digital sensor chips. This gave enough room to include the GPS sensor on-board. We also designed a GPS antenna perfectly suited to be mounted on top of the flight control.
In spring 2012 the 7. UAVP-NG Developer Meeting took place in Heidelberg. It was a great event - we were very lucky with the weather - and lot's of folks showed up. We all had a lot of fun and had great 4 days. Thanks to Volker & Ben again for making that great location available to us!
After 28c3 Ralf, one of our NG developers, started designing the new NGblc-4mini-r0, a quad-BLC for small Mini-NGs. His first design was airborne in spring 2012. After testing serveral smaller design changes were done and a NGblc-4mini-r1 was produced and tested successfully.
Small changes in print and a footprint error resulted in a NGblc-4mini-r2 design which we will produce now and hope to have ready for the 29c3 congress at the end of this year.
Besides that we started testing the new HW-0.23-mini-r0 in spring 2012 and we had to find out that the combined gyro/accelerometer called MPU6000 has a shortcoming: It only contains one filter set for both, the gyro and the accelerometer. As both sensor have opposing filter requirements in our application, we concluded that it would be nicer to have an additional accelerometer.
In our new hardware design HW-0.24-mini-r0 which we designed over summer 2012 we include a secondary additional footprint for a second (optional) accelerometer. We choose the proven accelerometer we used in previous designs. Furthermore we added a antenna PCB allowing everyone to build flight control sized GPS antennas perfectly suited to be mounted on top of the flight control.
HW-0.24-mini-r0 got airborne some weeks ago. Except for small textual fixes which we will incoperate in HW-0.24-mini-r1 everything worked out fine! We hope to have HW-0.24-mini-r1 with us for 29c3.
As you can see the new HW-0.24-mini-r0 includes the flight control PCB, a GPS antenna PCB with the same size as the flight control, the Cam/RC controller PCB, an external compass PCB, a JTAG connector PCB and two push button PCB.
Besides all the above some of our developers took the time to design NGlight, a small I2C peripherial devices to the flight controll allowing control of 16 PWM LED channels for control of RGB leds. It allows you to control different colors of 5 RGB LEDs while choosing the color in a range of 0.255 for each of the 5x 3 RGB channels.
Last but not least I should mention our UAVP-NG assembly at the 29c3 Chaos Communication Congress 2012 in Hamburg. If you live near Hamburg feel free to visit us from 26.12.2012 to 30.12.2012 at the congress!
It's winter again and I did not update my blog for half a year. Evil me. Let's change this...
Let me start with this summer's CCC Camp, which was a great event and everybody who joined us in the UAVP-Village in Finowfurth had a lot of fun. If you head over here, then you will find some pictures of the event.
After the camp we had a nasty surprise, when we found out that our new hardware HW-0.22-mini-r2 of the Mini-NG had a non recoverable bug on the PCB. It was nobody's fault in special, we all should have take more care in checking the changes, which have been done. To make up to our users, who already got a revision 2 board, we replaced them for free with a HW-0.22-mini-r3 board, produced immediately after we found out about the bug.
The new HW-0.22-mini-r3 of the Mini-NG performs admirably and many of us are now flying these boards, which offer exactly the same features as the big HW-0.22 tower, except that it's only one board with 55x55mm.
In the meantime we also developed new features for NGOS. Having received my new ACT 2.4GHz Kit with Diversity on both sender and receiver side together with telemetry, we decided that it would be time to support the telemetry system from ACT (M-Bus) and Multiplex (M-Link). Both systems are essentially identical. The new NGOS supports up to 14 different on-board values to be transmited on the back channel to the sender. The user is free to define which of the 14 slots should transmit which on-board data. A ACT UDP or a Multiplex sender is able to show these slots on his display to the pilot. Documentation and configuration examples can be found here, in the extensive NGOS documentation.
Having completed my new Mini-NG with all sensors, including GPS and compass, I decided to give Position Hold, Coming Home and Waypoint flying a bit of priority.
Having already completed the new NGCTRL2 communication protocol in summer, I decided to give Qngctrl a update and visualize all the new navigation stuff using the new features of NGCTRL2.
NGCTRL2 is a framed packet based communication protocol, where each packet may contain an arbitrary amount of data-sets which in turn each contain a type and a payload. The packet content is encoded with the COBS (Constant Overhead Byte Stuffing) algorithm making sure we only use up 1 byte in 256 for byte stuffing (worst case) which in turn makes sure we can always detect our framing byte and also assures, that we may use all possible byte values inside the packet. The COBS encoded packet content then gets a XOR checksum and a framing byte at the end and is sent over the unsecured serial connection.
Each of the NGCTRL2 data-set packed into a packet contain a type value, describing the payload type and it's implicit length. libng, our PC client library for NGOS communication has a poll() API allowing client applications to easily receive and parse the NGCTRL2 packets. As each data-set contains a type field, a client can request arbitrary dump intervals for each data-set type. A NGOS is even able to send data-sets which were not even requested by a client, thus allowing NGOS to inform a client of events happening on the copter side.
I've implemented waypoint flying on the NGOS side by giving NGOS a new waypoint table, which describes the coordinates of the available waypoints. The table can be manipulated with the normal "show" and "set" commands in the NGOS shells. There is a new suite of shell commands starting which the keyword "nav", allowing the user to issue navigational commands like "nav position-hold" or "nav fly-waypoint-fdw". The amir-ng controller was changed to understands the concepts of target, waypoint and it's navigation algorithms were adapted to be able to fly with different behaviors. Each waypoint is defined by it's coordinates, a dwell time and a action and argument, which will allow for a lot of new cool features in the future. At the moment, we only know two actions called "reach, next" and "reach, dwell, next". More actions are to be expected.
On the client side I implemented a new GPS Map view, which visualizes all navigational information received from a NGOS and displays it's position, it's target, it's waypoints as well as all navigational data needed to calculate the curse, consisting of target deviation and target distance. A nice small navigational control shows the headings of the different target/waypoints/home positions and also shows the result of the navigation algorithm for debugging purposes.
This is the above mentioned GPS Map. At that moment it shows a NG flying in a simulated flight using real GPS data and currently doing waypoint flying forward with 5 waypoints currently heading towards the first of them:
As you can see the GUI not only shows multiple waypoints and targets but also many of the on-board states like the battery voltage and the controller flight state. These get transmitted to the client whenever they change. Altitude Height controls are missing yet and will be implemented soon.
In the meantime our hardware developers were busy too and they redesigned the Mini-NG in HW-0.23-mini-r0. The new prototype will use the MPU6050 3D acc and gyro sensors and features an on-board GPS. First prototypes have been built and we hope to bring some of them to 28C3.
Last but not least work on our next-generation hardware platform HW-0.30 has begun. It will feature 2 STM32 CPUs with single precision FPU running at 168MHz combined with a dual-port RAM for fast direct memory communication. We hope to port NGOS to the STM32 architecture during summer 2012 and so support multiple architectures within one source code.
Currently everybody is preparing and packing for the 28C3, this years Chaos Communication Congress in Berlin where we will participate as every year.
On the 28C3 we plan to work on the NGOS software for the upcoming HW-0.23-mini release. Also we plan to further develop HW-0.30. Everybody interested in our project is invited to visit us at 28C3.
Besides our new hardware revisions, some developers are currently working on new brushless-controllers, a controller for lights called NGlight and other fun projects. We're looking forward to discuss, improve upon and show prototypes of them on 28C3.
28C3, we're incoming... ;)
The time is near... The Chaos Communication Camp 2011 will start the 10th August and continue until the 14th August in Finowfurt near Berlin, Germany Europe, Earth, Milkyway!
The Chaos Communication Camp 2011 is an international, five-day open-air event for hackers and associated life-forms. It provides a relaxed atmosphere for free exchange of technical, social, and political ideas. The Camp has everything you need: power, internet, food and fun. Bring your tent and participate!
Make sure to join us in the UAVP-NG Village at the Chaos Communication Camp 2011 in Finowfurt!
As you probably know, neighter Taarek nor I ever flew anything before we found out about quadcopters. We were real noobs when we started with the stuff and trough having flown the old UAVP and the commercial MK we both never had a lot of pilot experience.
Switching to the UAVP-NG did not really help the issue. As a test pilot you are never sure if the fault was yours or if the software or hardware failed... ;)
Still after a while you get a bit of feeling for piloting and it seems that Taarek finally got the groove. Using a not so heavy NG probably helped too as we did this using our new Mini-NG, which you can see on the following picture:
Using the above Mini-NG it has suddenly become quite easy to fly pirouttes and I did a small movies of Taarek's first stunts. Flying NG is fun... ;)
These are Taarek's first pirouttes flown with my brand new Mini-NG
Finally I found the time to update my blog! End of last month we had the 5. NG Developer Meeting in Heidelberg. Ben and Volker organized the event and it was a lot of fun! Peoples from all over Europe showed up and we had 3 days of BBQ, discussions and flying.
Now, a month later some of the movies shot have been cut and posted to the net. Below you find Robert's and my moving pictures of the event.
This is a summary movie of the 5. NG Developer Meeting in Heidelberg, which took place the 27./28./29. May 2011
Short Movie of the NG UAVP Meeting in Heidelberg Germany from 27 to 29th May 2011
I would like to thank all visitors and special thanks goes to Volker and Ben for organizing the great event!
It has been a while since my last post, again. In the meantime we survived winter and had a lot of fun at the 27c3, the yearly CCC Congress in Berlin.
Spring is coming - and as every year, we need something new to play with... ;)
The new Mini-NG hardware has arrived!
Over winter time Volker redesigned our original HW-0.22 into a HW-0.22-mini. The new hardware is fully feature compatible to the old one, is running the normal NGOS and was shrunk to a size of 5.5cm x 5.5cm on 4 layers!
The RC-Controller was moved to a small separate PCB so that only folks needing additional DSL channels or servo channels will have to use it. The functions of the SB-Controller are provided by the LPC itself.
Here are the first shots of the PCBs...
And bottom side:
Next, we will test the new PCBs and should everything work out, we will make them available in the NG Shop. Please note that the boards need to have a LISL acceleromenter directly soldered to the board. This means you need hot air to solder it by youself.
Our first Mini-NG prototype was airborne in december 2010 at the 27c3 congress!
A fully assembled HW-0.22-mini (this is our prototype which was airborne at 27c3) looks like this (courtesy of KeyOz):
Volker did a great job and the new Mini-NG looks nice and cute (at least for my humble eyes)!
We hope to be able to provide Mini-NGs with pre-soldered LISL and eventually even with pre-soldered LISL and ADXRS620 gyros in limited numbers in the NG Shop.
Check the NG Forum for Project News on that.
The Next Generation Multicopter team would like to announce the source code release of NGOS - The NG Operating System under a GPLv3 license after 3.5 years of intense development time.
Check out the UAVP-NG homepage for more informations!
Release source code repository:
List of supported platforms:
This project was started in summer 2007, half a year after the original UAVP, also a GPL project, was released. All over the world UAVPs started to get built. At that time, many of us started dreaming of bigger and more powerful processors, peripherals and sensors. The current projects available at that time seemed not to be able to scale according to our needs, so the idea of something new was born. In April 2008, about a year later, there were about 500 UAVPs airborne around the world.
Having flown most of the other open projects available at that time some of us decided that they did not offer the resources we wished to have on our copters. Especially when looking into the future it seemed that none of them had the scaling possibilities needed. Studying the available processors we realized that we needed to switch processor types to get the computing power we dreamed of. Neither PIC nor Atmel could provide what we needed.
In the end we decided to go for an ARM7 and started the Next Generation Multicopter Project.
The development of a free Open Source Multicopter software and hardware framework for further research based on a high performance 32bit ARM7 RISC CPU.
We started work in August 2007 as a small team which met on IRC. The first hardware (HW-0.10) went airborne in January 2008. The software has been extended with a lot of new features after that. We then worked on a new hardware revision (HW-0.20) in summer 2008 and the first prototypes were produced some weeks before the 25C3 congress. The new hardware got airborne in December 2008. After 25C3 we improved the flight control software immensely and started working on the peripheral controllers software support for the new hardware. Having tested and flown HW-0.20 a lot we decided to improve the hardware in summer 2009 and so we started work on the next hardware revision (HW-0.21). We finished that in June 2009 and produced enough boards for all beta testers and developers to thoroughly test the hard and software. The new hardware got airborne in August 2009. Discovering small problems and print issues we decided to produce one last hardware revision 0.22 fixing those before a final release. We hoped to produce this revision before 26C3 and have it ready for a first public release at 26C3. We succeeded and did a hardware release with HW-0.22 at the 26C3 Congress in Berlin.
Finally having a stable hardware platform out in the green, we started working on the source code immediately after returning from the 26C3. Cleaning out the source, commenting and polishing while still implementing new bells and whistles took the time from then until today.
Be aware that this still is work in progress. We decided that it's time to let everybody play with it, now that the hardware has reached a stable state but this is still a very livid project and new hardware revisions and software changes have to be expected any day... ;)
The Design Principles
The design principles of the NG project are simple:
"Complexity, modularity and encapsulation where performance allows it, simplicity and directness where performance requires it."
This has led to a quite complex framework which we started calling the NG Operating System. The system uses abstraction and complex pointer tables where necessity requires it and performance allows it. It uses global variables and breaks encapsulation where performance requires it. We use classic Open Source tools like the autotools suite, gcc and gnu make. We adhere to common C design rules. And we try to provide a user friendly interface with features like help for commands and verbose error messages.
The Key Features
The NGOS has a design rather different from most available flight control software. Instad of building a fully synchronous system as most did, we built a fully asynchronous system which only synchronizes when needed. This allows for a much more modular design and also allowed us to implement modern operating system like features.
A Multicopter only flies as good as its algorithms allow. Since the model is inherently unstable the closed-loop control algorithm is most critical for flying. People tend to have different ideas about the right algorithms. In order to allow different developers to implement different algorithms and to help compare them we designed the NG controller framework.
Our NGOS uses a modular, pluggable extension framework for closed-loop control algorithms, called controllers, and allows for several of them to be implemented at the same time using a simple abstract programming interface. This enables simple extensions to the system's closed-loop control algorithms by people not used to firmware and system programming. The modular controller framework is coupled with a modular configuration framework, allowing each Controller to have a different set of parameters in different configurations. Several controllers have been implemented. We have a good flying heading hold controller, a Kalman filter based integral controller with a lot of features like PT1-compensation and more and last but not least a port of the old Wolferl-controller from the old UAVP, which, BTW, flies very good with a closed-loop running at 1kHz... ;)
The system allows multiple interactive command shells and their spawned commands to be used concurrently on the different physical i/o devices. This means you can log in to your NG several times through one of the two UARTs or the USB port. Other available character devices could be supported as well. The shell command interface is also very modular and allows developers to add new commands quickly for debugging and testing purposes. A command can "take over its controlling tty", which allows an implemented shell command to put the shell to sleep, take over the physical i/o device and start doing with it what it likes. This allows for implementing new communication protocols (for ground station communication or similar) side by side with older and/or different protocols without having side effects or worse.
Controllers and configurations can be manipulated online using one of mentioned shells above. The controllers output the results of their calculations to a physical hardware abstraction layer called HAL which uses a similar modular framework as the controllers. Different multicopter models (eg. QuadCopter, OktoCopter et al.) can be implemented and flown using different HALs. Different flight styles can be implemented this way as well (X-mode, Reverse-Mode). It's even possible to mix different actors (eg. i2c bl-controllers, pwm-servos and i2c-servos) to control models different from the common multicopters. We already support a whole bunch of HALs (quad, quadX, quadR, Y6, X8, X8X) and new ones are implemented easily.
The above is tightly coupled with a behavior system which allows the user to configure arbitrary behavior rules using simple behavior conditions and behavior actions. Users can customize these behavior rules according to their needs. A behavior rule is defined by a behavior condition (which can have arguments) which, when triggered, executes a defined behavior action (which can have arguments too). Conditions and actions are arbitrary functions implemented separately in the NG framework. The implemented console commands can be used to inspect the currently defined behaviors as well as the predefined conditions and actions. Users are able to define custom new behaviors using the predefined conditions and actions. As each condition and action can receive user chosen parameters these allow further customization by the user.
If you ponder the above behavior concept you will see that every and all of the current UAV features can be mapped to behavior rules. You need calibration on channel 5? You want your camera to make a photo when channel 8 goes to 100%? You would like to turn on the lights, when you have reached 10m or more... it's all possible.
The NGOS supports several different types of RC receivers. It supports the normal sum-signal input as well as the faster sum-signal from the ACT 4+2XS 2.4GHz sum-signal receiver. Furthermore it supports the proprietary serial DSL protocol from ACT which allows us to attach any ACT DSL receiver to the NG. ACT produces great cheap and expensive PPM, PCM, SPCM and 2.4GHz receivers and most of them have a DSL interface. The NGOS contains an rc-mixer which allows to mix several rc input signals in different ways. Currently a primary and a secondary device are supported which can be mixed as teacher/student or for diversity. As the DSL protocol contains the signal quality received the diversity mixer can mix the two signals accordingly. If in teacher/student mode, the mode can be switched using arbitrary behavior rules defined by the above user configurable behavior system.
Do you wonder why we call the firmware an Operating System? Now, we all agree, it _is_ a firmware, but it has become a firmware with many, many operating system like features. The NGOS does hardware probing on startup and activates hardware dependent interrupt handlers. It outputs bootup messages while starting. It is split into user, system and irq context, the closed-loop controller is running on the system level, the user mode shells have to use system calls to use privileged opcode. Furthermore it has a timer scheduler and a task scheduler with a process table, it has a device table and it has tools to inspect all of them. The NGOS's device-probing dependent interrupt handlers could be called drivers. The started consoles implemented as cooperative shell tasks in user context (which are able to fork off commands) executed by a round-robin scheduler conclude the operating system like features.
The Developers and Users
Essentially the NGOS provides a simple API for controllers, configurations, HALs and behaviors programming for developers while giving users of the system very broad possibilities to customize their multicopter and the available features. This way the whole system will be interesting to users and developers with its unique options and possibilities.
The firmware is built modular and enables different closed-loop control algorithms to run side by side to allow different developers to share and compare their algorithms and designs. The abstract closed-loop controller framework allows non-programmers like mathematicians, closed-loop engineers and similar minded folks to implement new closed-loop control algorithms without having to understand more than input and output structures of their algorithms.
The Catch ;)
Please be aware that much of this source code was written by a single person - me. I am an EE engineer specialised in computer sience, system programming, network protocols, high-availability, clustering and security. I'm in no way a specialist for closed-loop controls, embedded system programming and aeronautics. Please be aware of this when studying the chosen solutions and implementations in these fields. I'm sure many experts out there could contribute a lot better solutions.
This all was - and still is - a very interesting experience and a lot of fun for me and I learned more about embedded programming and closed-loop control than I ever imagined I would... ;)
If you would like to contribute to the project make sure to check the development page in the NG wiki.
It can be found at http://ng.uavp.ch/moin/Development
I would like to mentions some great guys who joined our team and contributed to improve hardware and software to where we stand:
Also special thanks goes to Wolfgang Mahringer who built the original UAVP and infected many of us with the multicopter virus and to Bernd Richter who infected us with a lot of new ideas and who was a great source of information and knowledge to us.
We hope to be able to provide a platform for experiments, new ideas and research for all Multicopter fans out there!
- Amir Guindehi & The NG Team
It seems I only find time to blog about the NG when new hardware arrives! You will find more about the new hardware below.
At first, I would like to tell your what happened since my last post from mid sommer! We were busy developing the NGOS further and we succeeded in supporting most parts of the hardware!
This means our RC-Controller now has control over the two DSL inputs and the sum-signal input. This also means we are now fully supporting up to 4 DSL receivers and two times sum-signal input for RC control. This will allow all forms of diversity, teacher/student as well as channel extension up to 4 times the number of channels you normally may have.
Furthermore the new RC-Controller firmware receives attitude data from the Flight Control's Kalman filters and uses it to do Servo Attitude Compensation for Pitch and Roll.
We implemented two servo operation modes, one where servo attitude compensation is done on servo 1+2 and servos 3-5 are available for other things, and another where the Flight Control has full control over all 5 servo channels. This will allow us to implement different Hardware Abstraction Layers (HALs) which not only use I2C actors but also those needing servo control like airplanes and helicopters.
Our SB-Controller firmware was completed as well. It now supports the MicroMag3 3-axis magnetic compass. To do that, it receives regularly attitude data from the Flight Control, uses it to do compass attitude compensation and then delivers the result to the Flight Control.
Looking at the device table on the Flight Control we now see this:
# show devices Detected devices: Addr Bus Description 0x16 I2C0 Atmel 644P RC/Comm Controller 0x18 I2C0 Atmel 328P SB Controller 0x02 ADC12 ADXR/MLX MEMS Gyroscope 12bit (nick) 0x01 ADC12 ADXR/MLX MEMS Gyroscope 12bit (roll) 0x00 ADC12 ADXR/MLX MEMS Gyroscope 12bit (yaw) 0x00 SPI0 LIS3LV02DQ 3-Axis Accelerometer 0x02 SPI0 ADS1255 24bit Analog Digital Converter 0x03 SPI0 AD7924 12bit Analog Digital Converter 0x00 SBCTRL MicroMag 3 Magnetic Compass 0x01 RCCTRL ACT DSL Receiver 0 0x02 RCCTRL ACT DSL Receiver 1
As you can see all our newly supported devices pop up, even those attached to peripherial CPUs. I had no actors attached, so it's normal that they do not show up.
These peripherial CPUs implement a new protocol called NGPP - The NG Peripherial Protocol.
NGPP represents a register based store/load framework allowing direct memory access on the slave devices. It's possible to implement it on most physical character based interfaces, which allowed us to implement it on top of I2C and which will allow us to use it on other serial devices like the UART. Those of you knowing the MODBUS protocol will recognize a lot of similarities.
NGPP is able to issue several read/write requests within one cycle. It's also able to read or write multiple sequential registers in one request allowing for a very efficient data transfer between slave device and host. Currently the NGPP implementation is built on top of our I2C physical layer, which by itself is a task based framework able to run several "state machine tasks" sequentially allowing NGPP to queue requests and get notified when the finish.
The RC-Controller as well as the SB-Controller both use the NGPP a lot to transfer data between slave and host devices several times per cycle.
Current RC- and SB-Controller NGPP statistics look like this:
NGPP RCctrl read: 16 ticks/100 cycle (max: 17, ngpp overrun 0) NGPP RCctrl write: 5 ticks/100 cycle (max: 6, ngpp overrun 0) NGPP RCctrl read: 66 bytes/100 cycle (max: 76) NGPP RCctrl write: 41 bytes/100 cycle (max: 45)
NGPP SBctrl read: 6 ticks/100 cycle (max: 7, ngpp overrun 0) NGPP SBctrl write: 5 ticks/100 cycle (max: 6, ngpp overrun 0) NGPP SBctrl read: 11 bytes/100 cycle (max: 13) NGPP SBctrl write: 31 bytes/100 cycle (max: 36)
As you can read from the above statistics data, we have no problems in transfering the needed amount of data. Since NGPP requests can be issued during the whole closed-loop cycle as well as from any user space context (meaning the shells and their associated processes) we are free to model our code according to our needs.
We can access the registers directly from any Flight Control shell:
# show ngpp sbctrl NGPP sb-ctrl registers: sb.devices 1 sb.nick 57 sb.roll -35 sb.mag.x -67 sb.mag.y 21 sb.mag.z 335 sb.heading 3164 sb.test1 42 sb.test2 43
And set them directly if they have a read-write flag:
# set sb.test1 44 NGPP: wrote sb-ctrl register 7 value: 44
To demonstrate the cooperation of the three CPUs in our distributed system, I made a small movie showing Servo Attitude Compensation:
After having implemented support for most hardware devices on the new NG, our hardware developers also produced a new revision of the NG PCB boards.
The newest revision is called HW-0.22 and is a pure bug fix revision as all 0.2x versions were. The next feature revision will be HW-0.30 on which brainstorming and work already has begun.
We received the new boards today!
Here are the first pictures of the new HW-0.22:
Opening the packet and looking inside it seems that the boards look fine:
We also received a separate panel containing the 7 breakout boards which we will include with each HW-0.22 board!
We now have six accompanying MLX and ADXR610 gyro breakout boards (three of each) as well as a LISL breakout board:
A set of these 7 breakout boards will be included with each FC+SB PCB set.
We will start to investigate the new hardware and should everything be in order, we will release them to the broad public. Be sure to check our homepage in the next days.
We will open up the new UAVP-NG Shop soon!
I'm once again back from hollidays! My girlfrend and I went to Helengeli, that's a small island on the Maldives in the North-Male atoll.
To give you a small impression of the island... this is how Helengeli looks from above:
Helengeli really is a nice place to stay. It's a wonderfull marvel of a classical Maldivian island with a lot of trees and bushes and wonderfull clear beach with white sand and blue water.
This is a small plan of the Helengeli island itself:
My brother already visited the island some years ago and he told me that it's a nice place for diving! Staying in the hotel managed by Manta Reisen, we visited the Ocean Pro Dive Center there and went diving for 12 days.
The dive center manager is called Uwe. He's a very experienced diver who knows the place and the sea very well and he was able to show us really nice places!
I should not forget to mention Line, Manja and Gio, all dive guides of the Ocean Pro dive center, who organized the dive excursions besides Uwe. Line was with us when we all saw our first waleshark...
... but let's start at the beginning.
When we arrived we were quite tilt. Neighter Kathrin nor I could really sleep in the plane and so we were up for 30 hours or so. First thing we did was to check in everywhere and then drop dead to bed.
The next day and the following two days we did some refresher dives where we did not see a lot of stuff. I have to mention that I had a new dive computer with me, an UWATEC Gallileo, which i wanted to test during the hollidays. It lit up like a christmas tree under water... ;)
Luckily I had my old dive computer with me as well and so I was able to dive as always using my old one while exploring the new and shiny one which shows so much more information under water that you're simply confused at first... :D
Anyway, after some dives I had found out that I needed to activate Profile Dependend Intermediate Stops but change the air integration to accept 30 bar as reserve for the Remaining Bottom Time calculation instad of calculating with a 80 bar reserve, which I anyway don't have and don't want. Having changed that, it suddenly was quite a lot of fun to have beats per minutes of your own heart, remaining bottom time approximation, microbubble protection and profile dependant intermediate stops. It also plots very nice profile graphs overlayed with bpm or temperature at which you can look live under water. It would even support multi-gas features like adaptive microbubble predictive multi-gas algorithms but that's nothing I can use atm. since you need to have multiple tanks with different gases for that.
Here's a small map of the dive spots around Helengeli (the upper right part):
Anyway... having mastered the new computer and having made some easy dives we started off for Bodu Thila, a dive place near Helengeli where some current has to be expected. Now, to be true... it was a lot more than some current and having never experienced that much current under water, using up my air in exorbitant rate, I aborted the dive and Kathrin and I came up after 19min, which probably is our shortest dive ever... :)
Needless to say that my girlfriend performed more than great and was not half as stressed as I was... *hide* Kathrin is starting to become a really experienced diver!
After that crazy dive at Bodu Thila, everything started to normalize. And from then on we had wonderful dives! Check out these nice corals:
Sometime in the first week we finally visited Farytale. That's a place where Mantas can be found often in this time of the year. And we were lucky! More than 6 animals came by in the time we digged us in on the ground and we had wonderful 74 minutes under water!
I made as many pictures as possible...
... at first we only saw them from afar...
Then more near...
But then the next ones flew directly over our heads...
And you won't belive it, there came more and more of the huge animals...
And they did not shy in any form...
But behaved, as if they own the sky, the land and the sea...
... and nothing on earth could ever change that!
It was great! Can't say more... simply great, great, great... ;)
When we visited the place a second time, two days later, we did not find the mantas again. On the other hand we swam into a pack of White Tip Sharks hunting on the reeftop we were drifting over. The pack consisted of 6 very active hunting White Tip Sharks, which swam around us for more than a minute!
Some days later we visited the Trix Caves. Another famous dive spot, where big open caves are carved into the 40m deep dropoff at the outer reef. Here's a picture where I look from the Trix Caves out into the blue, where we saw a Waleshark some minutes after I made this picture!
Directly out of the blue you see in the above picture a gigant 7-8m long waleshark appeared, swam parallel to us for some seconds and then disappeared again into the blue again! You can't belive how shocked we all were, suddenly seeing such a huge monster (it looks very shark-like!) appear out of the blue!
Our guide - it was Line on this day - did not yet have seen a waleshark near Helengeli eigther and was very happy when it suddenly happed! This is how she looked afterwards... do you see how exhilarated she was? ;) We all looked similar...
And I should not forget to mention that we saw two Spotted Eagle ray immediately after the waleshark... we could not belive our luck!
Kathrin had loaned a lamp in the dive center and had a lot of fun exploring the Trix Caves with it! There are so many colors down there, if you only have light to show them! It's like Alice's wonderland... you just have to open it up with a light-thrower... ;)
Kathrin also found her first slug by herself! And I even was able to make a picture of the second one she found! It's a Wart Slug becoming up to 7cm in size!
Some days later we finally were able to visit Bodu Thila a second time! This time the current was very easy and we saw several white tip sharks near the Thila...
On the same dive we also saw a Yellow Spotted Burrfish, which looks very strange and nearly alien!
On the third to last day we did another dive at Bodu Thila. This time we had a bit more current, but it was still easy going. No comparision to the first dive we did there. This time we found some more sharks...
All in all it were wonderful hollidays and we had a lot of fun! We saw nearly everything we wanted to see and some of it even in abundance!
The new dive computer also performed very well and if it would not be so expensive (it costs EUR2000 with all sensors) I probably would buy one for myself. Let's see if I can simply loan it, next time I go diving...
Let's hope it does not take long until we find the time for the next dive hollidays!
Sorry guys, I never found the time to update my blog with the newest developments!
Hopefully this will change again...
It's time to revive this blog!
There was a lot of stuff going on behind the scenes. Our hardware developers designed the next hardware revision 0.21. And our software developers extended the NGOS in the meantime with a lot of new features like a Hardware Abstraction Layer (HAL) to support arbitrary propeller configurations and up to 16 motors, PT1 compensation, a new framework for our peripherial processors, the NG Peripherial Protocol (NGPP) and more. I will write separate blog entries in the near future describing them...
Anyway... today's News is: The new hardware 0.21 has arrived!
These hopefully will be the final prototypes which - when everything checks out - will then be produced for the masses.
Here are some first pictures of the packet I received today...
The boards look great!
We will test them out ASAP and order more if they perform to our expectations...
... expect the new hardware available to the public within several weeks!
There appears to be an issue with the firmware upgrade tool. This is fixed in GluonCS 0.10 Beta 3, where the bootloader programmer has been updated to the latest version.
This version of GluonCS can be used together with firmware 0.10 beta 2!
See download section.
New release: version 0.10 BETA 2.
Google maps has a changed API so we needed an urgent update to support this! (Thanks for bringing this up Alex!)
Also added: smooth turns. The maximum roll rate is now limited to 45°/s. This means soft turns when going from waypoint to waypoint!
Download from the download section!
Dear fellow enthousiasts,
Version 0.10 Beta has just been released! You can download it from: https://code.google.com/p/gluonpilot/downloads/list
Please stick to the standard upgrade routine:
New features include:
During the last one and a half days, the old house on our property was removed. The weather was pretty messy and it was raining the whole time.
Now we have enough to build our house (duplex house) in Autumn 2013. Probably I will also create a “building up” timelapse.
I recorded a timelapse of the progress and uploaded a Youtube Video which you can see below.
[There is a video that cannot be displayed in this feed. Visit the blog entry to see the video.]
The GP2 is sold out, but already a new batch is being manufactured as we speak. Tested & Assembled units will be available again mid-June.
For those who can't wait or those who live in North-America: our distributor Jim will be very happy to supply you at GluonpilotUSA.
To celebrate the first day of really good weather here, we released stable version 0.9!
This is the first non-beta release for GP2, so all the owners of the new cutting-edge GP2 hardware are encouraged to upgrade. Owners of GP1 can also upgrade, but are encouraged to do rigorous ground testing because from this release on, the firmware won't be tested anymore on GP1 hardware. It should be compatible, it should work, but no guarantees!
Some changes compared to beta 2 you'll notice:
Another big step has been taken since v0.8. This stable release allows us to start working on a lot of new features. Planned changes are:
Have a neat idea? Let me know!