Emile and Roberto are progressing on the port and test of the VRBrain with the Arducopter
code now we are working on rev 2.7.3-4.
In this video is possible to see the test of Emile Hexa . It's the first flight and we testing the stability , loiter and alt hold and return to land with approach activated.
We have succesfully flown and tested latest features and came up with some benchmarks to compare the different architectures using Arducopter firmwarre.
Results are pretty impressive and although all the glory goes to the Dev team for the latest firmware a special note goes to Roberto with his new VRBrain design.
Our goal was to have an already "ready platform" where actual developers could start coding on a 32bit platform without loosing the actual code simplicity.
We started with the STM32F1 CPU, running at 72MHz with no FPU and then jumped onto the STM32F4 168MHz CPU which supports hardware FPU on the chip.
Our latest improvements were on the CPU side and we were able to activate soft FPU calculation without the need to modify actual code.
Basically the STM32F4 supports three types of FPU:
no-fpu: uses standard libraries and emulates floating point calculation
soft-fpu: uses hardware floating point instructions but floating point function parameters/return values will be passed in core registers and not FPU registers
hard-fp: all function parameters/return values are passed to the FPU core registers bypassing the core register
These are basic results for the main loops in the Arducopter code:
Arduino 2560 on APM1-2:
Main loop time taken (microseconds):
Min: 4380 us
Max: 6592 us
STM32F1 on Multipilot32F1 V1 and V3 (72MHz no FPU):
Main loop time taken (microseconds):
min: 656 us
max: 1104 us
STM32F4 No FPU on VBRAIN and MP32F4V3 and VBRAIN (168MHz FPU available but not used):
min: 315 us
max: 492 us
STM32F4 soft FPU on VBRAIN and MP32F4V3 and VBRAIN (168MHz with soft FPU enabled):
min: 210 us
max: 315 us
Basically we are at least 20 times faster than current Arduino Hardware although we share 90% of original application code.
Also with the same CPU (F4) we can go 2 times faster without changing one single line of code (almost).
Better performances (at cost of re-writing the code) could be with hard FPU .
So this performances is impressive :) We have a lot of power for start to try more complex algorith as EKF or UFK inside standard Arducopter32 library architecture. If there are some hardcoder that want try to work on this task are welcome . Will be all support from FOXTEAM :)
We yet try the OpenPilot EKF on VBRain and it is very smooth ... but not so differernt of last DCM implementation. Thanks Tridge :)
In this video is possible to see a vbrain installed on a custom frame that use great component : SmartDrone motors and propeller the time of flight is around 27 min.
This is the video of first flight of special revision of firmware for VBRAIN that use the FPU acceleration the benchmark is about this revision of code.
I agree with you, I don't see very well the advantage of RTOS : it increases the complexity of reading and writing code by the community.
But porting ardupilot or arducopter on STM32F4 (which is a very powerfull MCU and I think a good choice) will necessit a lot of work (I'm new to STM32), because architecture is very different.
Personnaly, I would prefer to drive the code by a clean interrupt schem for drivers.
But as I told you, I'm new to STM32, and I don't know where to begin to create a simple workspace on eclipse with minimal "Hello world" application on STM32F4 for the PX4 and with the following :
- linking to ST libraries
- Initializing external oscillator for PX4 board, and RTC
- enable FPU
- enable uart for debuging
After that, it's just a lot of work...
It should not be that hard, do you have advises to begin that work ?
In our lab the working progress for November , so now the board is yet available for Developer the price for Dev is 199 euro complete of all sensor and gps . We are waiting enclosure :) But is not a real problem because we put it on Thinkverse so is simple to print yourself it. For more info you can contact Elisa at virtualrobotix@gmail.com
it's working progress,but we are decideing how write it ... could be different proposal ... my idea was doing as i doing for VBRAIN only change the code inside the AP_LIB without add other wrapper lib. I prefer optimize the lib instead to put another layer between the hardware and the application. Other proposal is to use AP_HAL , any platform have his hal and you put this between the ap_library and HAL. This is a PAT proposal . Other proposal is to transform all the code in a task up on nuttx ... mhhhhh
So my opinion is htat the O.S. is a very interesting feature , but is not so simple to manage and develop for standard use that came from arduino - microcontroller approach. I'm working on a new advanced design that will be an add on of vbrain that will be presented in November at MakersItaly and intend invest all my resource on it .
That design use a great O.S. and have a lot of hardware resource a lot of ram , flash , Mhz .... Ideal platform for add advanced feature to our Arducopter platform.
did you write code for PX4 board ? Did you compiled something without Nuttx ?
I'd like to know if there is existing code for this board, but without any RTOS. Just initializing FPU GPIOs, SPI, I2C, Uart (eventually main drivers to mpu6000, magneto...).
we are official member of DIYDRONES dev team until the begin of the project :) So we only decide to invest two years ago on arm because for us that will be the future. So we have a lot of experience on arm platform and arducopter on it. Now we are support also other project as PX4 and try to port our work also on other platform ... but it's work in progress ... on VBrain we have the arducopter aligned to 2.7.2-4 and try to improve it every day. So now the limit is that the dev team for 70 % is now focus on apm 2.5 but in the future the situation could be change. So the main advantages of VBRAIN is that the firmware is similar for 90 % of code and the library use the same class but inside it's totally rewrite for ARM CORTEX M4 . We think that stm32f4 will be best platform for our development also when will be available arduino 2 because the STM32F4 is more of 2x respetct of SAM3X. So now we need good developer that help us to integrate inside the standard apm lib advanced algorithm as EKF or UKF for continue to improve our great firmware :)
Obout PX4 i play a lot with that platform , nuttx firmware and try also it on VBRAIN but now is in early stage and isn't so affordable as Arducopter32 on VBRAIN. We are also working to a "Secret" project that will be present in November at MakersItaly. Our new platform will be a great improvment for our RC project stay connected :)
Dror, for what I know (somebody correct me if I'm wrong), Arducopter team is focused on other 32bit projects (PX4 and Arduino2) but on a long term.
PX4 being a totally new approach and Arduino2 still in beta hardware.
We try to give our contribution to Dev. team with suggestions and testing of the firmware, but none of the Devs are actually working with us.
All our work is done by porting actual code and leaves very little space for personal improvements so we are happy to have an almost 1:1 functionality with the original code sharing goods and evils.
The good thing about this hardware is that it can be used (with some work) with the Autoquad, Openpilot, PX4 and almost every project that uses the STM32F4 MCU.
Also it has enough room to add new functionalities like complex alogorithms, that unfortunaltely, are out of my reach. :)
Comments
I Yet doing all :) Start two years ago. Now the Arducopter32 is available on stm32f4 VBRAIN have inside STM32F4 check here : http://code.google.com/p/multipilot32/downloads/list
You can downlad all you need. VRIDE PRO is an Eclipse enviroment yet configured
http://code.google.com/p/multipilot32/downloads/detail?name=vroboti...
Use this one is 4 file to download and unrar in a folder.
Inside the workspace is yet available the Arducopter code for stm32f4. - VBRAIN
If you need more info about the project you can find me in skype my nick is virtualrobotix :)
I agree with you, I don't see very well the advantage of RTOS : it increases the complexity of reading and writing code by the community.
But porting ardupilot or arducopter on STM32F4 (which is a very powerfull MCU and I think a good choice) will necessit a lot of work (I'm new to STM32), because architecture is very different.
Personnaly, I would prefer to drive the code by a clean interrupt schem for drivers.
But as I told you, I'm new to STM32, and I don't know where to begin to create a simple workspace on eclipse with minimal "Hello world" application on STM32F4 for the PX4 and with the following :
- linking to ST libraries
- Initializing external oscillator for PX4 board, and RTC
- enable FPU
- enable uart for debuging
After that, it's just a lot of work...
It should not be that hard, do you have advises to begin that work ?
In our lab the working progress for November , so now the board is yet available for Developer the price for Dev is 199 euro complete of all sensor and gps . We are waiting enclosure :) But is not a real problem because we put it on Thinkverse so is simple to print yourself it. For more info you can contact Elisa at virtualrobotix@gmail.com
the benchmarks look promising!
now devs are needed to keep the snowball growing!
is there an estimated price point?
Hi Stephane,
it's working progress,but we are decideing how write it ... could be different proposal ... my idea was doing as i doing for VBRAIN only change the code inside the AP_LIB without add other wrapper lib. I prefer optimize the lib instead to put another layer between the hardware and the application. Other proposal is to use AP_HAL , any platform have his hal and you put this between the ap_library and HAL. This is a PAT proposal . Other proposal is to transform all the code in a task up on nuttx ... mhhhhh
So my opinion is htat the O.S. is a very interesting feature , but is not so simple to manage and develop for standard use that came from arduino - microcontroller approach. I'm working on a new advanced design that will be an add on of vbrain that will be presented in November at MakersItaly and intend invest all my resource on it .
That design use a great O.S. and have a lot of hardware resource a lot of ram , flash , Mhz .... Ideal platform for add advanced feature to our Arducopter platform.
For more info about VBRAIN Project and arducopter32 check here www.virtualrobotix.com and http://code.google.com/p/multipilot32/
Here you can found Developer tools , code , library ecc ecc.
Hi Robero,
did you write code for PX4 board ? Did you compiled something without Nuttx ?
I'd like to know if there is existing code for this board, but without any RTOS. Just initializing FPU GPIOs, SPI, I2C, Uart (eventually main drivers to mpu6000, magneto...).
Tx
Hi Dror Caspi,
we are official member of DIYDRONES dev team until the begin of the project :) So we only decide to invest two years ago on arm because for us that will be the future. So we have a lot of experience on arm platform and arducopter on it. Now we are support also other project as PX4 and try to port our work also on other platform ... but it's work in progress ... on VBrain we have the arducopter aligned to 2.7.2-4 and try to improve it every day. So now the limit is that the dev team for 70 % is now focus on apm 2.5 but in the future the situation could be change. So the main advantages of VBRAIN is that the firmware is similar for 90 % of code and the library use the same class but inside it's totally rewrite for ARM CORTEX M4 . We think that stm32f4 will be best platform for our development also when will be available arduino 2 because the STM32F4 is more of 2x respetct of SAM3X. So now we need good developer that help us to integrate inside the standard apm lib advanced algorithm as EKF or UKF for continue to improve our great firmware :)
Obout PX4 i play a lot with that platform , nuttx firmware and try also it on VBRAIN but now is in early stage and isn't so affordable as Arducopter32 on VBRAIN. We are also working to a "Secret" project that will be present in November at MakersItaly. Our new platform will be a great improvment for our RC project stay connected :)
Best
Roberto Navoni
Dror, for what I know (somebody correct me if I'm wrong), Arducopter team is focused on other 32bit projects (PX4 and Arduino2) but on a long term.
PX4 being a totally new approach and Arduino2 still in beta hardware.
We try to give our contribution to Dev. team with suggestions and testing of the firmware, but none of the Devs are actually working with us.
All our work is done by porting actual code and leaves very little space for personal improvements so we are happy to have an almost 1:1 functionality with the original code sharing goods and evils.
The good thing about this hardware is that it can be used (with some work) with the Autoquad, Openpilot, PX4 and almost every project that uses the STM32F4 MCU.
Also it has enough room to add new functionalities like complex alogorithms, that unfortunaltely, are out of my reach. :)
27 minutes flight time, that's very cool well done.
Excellent!
Could you please tell us more about how this project cooperates with ArduCopter? Is it part of the development of a future ACM 3.x?
Dror