Why development has stopped?

This forum is dedicated to software development related to MultiWii.
It is not the right place to submit a setup problem.
Software download
User avatar
fuh
Posts: 72
Joined: Thu Jun 13, 2013 5:12 pm
Location: Portugal

Why development has stopped?

Post by fuh »

Yup.. unaware people do stupid things. But despite I'm a Linux power user I gladly shifted from Gentoo to Ubuntu.. so I agree we could ease our lives a bit within Multiwii.

I'm cooking something on the oven that I hope to pre alpha on the next couple of weeks that should get all of us happier users (not dumb users).

Stone-D
Posts: 4
Joined: Tue Aug 05, 2014 3:52 am

Re: Why development has stopped?

Post by Stone-D »

fuh wrote:Yup.. unaware people do stupid things. But despite I'm a Linux power user I gladly shifted from Gentoo to Ubuntu.. so I agree we could ease our lives a bit within Multiwii.


LOL me too. Hardcore Gentoo user for years, then toyed with Ubuntu, then realized that most of what I really actually used was available in OSX with a bit of digging. I'm now about to upgrade my rig and build a hackintosh. :p

I'm cooking something on the oven that I hope to pre alpha on the next couple of weeks that should get all of us happier users (not dumb users).


Tasty!

danhouldsworth
Posts: 19
Joined: Fri Aug 01, 2014 2:06 pm

Re: Why development has stopped?

Post by danhouldsworth »

jim lee wrote:Sometimes its a good idea to take what you've learned and start over fresh? I do it all the time and really, it does work well for cleaning things up and getting back on track.

That's what I'm doing now. I have a pretty good idea what I want as an end product. With this in mind I've just took a blank sheet and, with a look now and then at the multiWii code, started to roll my own. So far I have RC receiver, servos and the I2C gyro all working. Now that I have the first I2C chip running, I can use that to figure out the others. I still need to figure out the flight model, but I guess it'll come in time.

Anyone want to share?

-jim lee


Hi jim lee - I'm interested in sharing / helping out. Where do you host your source code? (hopefully GitHub....!)

Is the plan to support multiple boards or just one? I've experimented with pretty much all the 8bit and 32bit FCs now (with the exception of Flip boards), all have there pros and cons and I'd be more than happy to focus on a single board in the interests of developing a clean & easy to adopt FC firmware where people can experiment on the interesting parts (to me this is flight algorithms rather than adding endless features & sensors).

User avatar
fuh
Posts: 72
Joined: Thu Jun 13, 2013 5:12 pm
Location: Portugal

Why development has stopped?

Post by fuh »

The world does not need another FC fw fork.

danhouldsworth
Posts: 19
Joined: Fri Aug 01, 2014 2:06 pm

Re: Why development has stopped?

Post by danhouldsworth »

Agreed! But I do....

It's not for everyone, but there's good few in the multirotor community who are in it for curiosity & learning interests (myself included) and if someone is going to embark on building a FC from scratch, picking the good bits from MWC, APM, OpenPilot etc then thats an interesting project to be part of from the outset.

Much like Multiwii probably was for those lucky enough to be around at the start :geek:

rubadub
Posts: 154
Joined: Mon Apr 28, 2014 2:36 am

Re: Why development has stopped?

Post by rubadub »

wow, lot's of stuff going on this thread.
Here are some pretty clear points that I can see IMO:

move to github & decide on a *group* of people that can handle the main repo & not just one guy being the supreme overlord who decides which patch stays & which doesn't.

branch, branch, branch....embrace the community's attempts to branch off and create custom MWC remixes and feature add-ons. For example, bradwii's uncrashability mode is pretty fucking awesome, yet none of the elites here seem to have embraced it.

go the APM route and build up a solid HAL for the MWC; no need to go ape-shit crazy with the OOP & coding best practices like the APM guys do, but just enough to simplify board & sensor selection, and be able to abstract away the higher level code routines from the various hardware platforms.

define a clear split between 8-bit and 32-bit, MWC8 and MWC32 (this is already going on but in a bunch of random directions, baseflight, harakiri, whatever else...). The code base should be vastly different for each due to differences in hardware capabilities, and peace should be made between both; let MWC32 go off and do it's thing, and let MWC8 try to make the most of itself within its obvious limitations. Stop hating & complaining about one vs. the other.

MWC8 probably needs a fixed-point math library (KK2's ASM code uses this, and it's probably one of the reasons why the math is so light, clean, and effective). More of the utility routines & stuff should be moved to asm libraries.

if the Arduino/AVR GCC compiler is so bad & stupid that it doesn't even know how to optimize divides into bitshifts, then someone should seriously consider taking a look at upgrading/updating/patching/creating a customized version of GCC just for MWC use

come up with a better set of user-friendly tools; the MWconf tool is dated and limited. winGUI is cool, but too specific to nav, and it also has its own set of issues.

MWC8, stop depending on the fucking Arduino IDE. Ignorant/noob users need a MWC compile&config tool, something that lets you plug in your setup in a user-friendly GUI, generates the config file, auto-compiles & uploads. It should probably be an 'all-in-one' gui that will allow you to flash & config from the same interface. Perhaps maybe add a set of helper tools that can auto-detect chips/board sensors/baud rates/shit like that, so that total retard users don't have to spend hours figuring out what hardware they have.

overhaul a lot of the crappy code in MWC8, think outside the box and try to start from scratch on a lot of stupid and amateurish stuff that was done. the original developers should not be allowed to block any proposed changes just because their egos are at risk.

32bit fans... if the STM chips are the future, then why the hell don't I see $20 STM "naze clones" on ebay? timecop shouldn't have a fucking monopoly on what's basically a standard FC design (STM chip in place of an AVR, all other components pretty much the same). Plus, it's subject to supply shortages and price gouging. So, push for an open 32-bit design, publish the schematics online, let the chinese have at them and flood the market with affordable 32-bit FC's. People shouldn't have to haggle over limited local supplies or order a $60 FC from an angry troll in Japan just to be able to fly MWC32.

MWC8/32 needs a full GPS flying mode (ala the NAZA/WKM/APM). let go of the sticks, copter stays in place... I don't personally want or need this, but, if MWC doesn't want to be left behind, it should at least try to offer it.

8-bit fans, if you're so set on keeping the AVR's in the game, then someone should come up with a multi-processor PCB with a couple of ATMega's and then create a custom code base that can handle splitting off the computational work & synchronizing communications between the two MCU's. I personally don't see the point, but, hey, it'll keep you busy...

Even though I'm not the biggest fan of OOP, I think it could totally help MWC in order to organize its spaghetti-code problem. Haters of this idea are either too scared to change their ways or are simply not strong enough with their coding skills to get with the program.

and there's so much more that I could go on all day, but I'll stop there.
If people start crying & flaming, it'll only prove that the sentiment here is very close-minded and this will thus spell multiwii's own demise.

LVNeptune
Posts: 19
Joined: Mon Jan 20, 2014 10:54 pm

Re: Why development has stopped?

Post by LVNeptune »

rubadub wrote:wow, lot's of stuff going on this thread.
Here are some pretty clear points that I can see IMO:

move to github & decide on a *group* of people that can handle the main repo & not just one guy being the supreme overlord who decides which patch stays & which doesn't.

branch, branch, branch....embrace the community's attempts to branch off and create custom MWC remixes and feature add-ons. For example, bradwii's uncrashability mode is pretty fucking awesome, yet none of the elites here seem to have embraced it.

go the APM route and build up a solid HAL for the MWC; no need to go ape-shit crazy with the OOP & coding best practices like the APM guys do, but just enough to simplify board & sensor selection, and be able to abstract away the higher level code routines from the various hardware platforms.

define a clear split between 8-bit and 32-bit, MWC8 and MWC32 (this is already going on but in a bunch of random directions, baseflight, harakiri, whatever else...). The code base should be vastly different for each due to differences in hardware capabilities, and peace should be made between both; let MWC32 go off and do it's thing, and let MWC8 try to make the most of itself within its obvious limitations. Stop hating & complaining about one vs. the other.

MWC8 probably needs a fixed-point math library (KK2's ASM code uses this, and it's probably one of the reasons why the math is so light, clean, and effective). More of the utility routines & stuff should be moved to asm libraries.

if the Arduino/AVR GCC compiler is so bad & stupid that it doesn't even know how to optimize divides into bitshifts, then someone should seriously consider taking a look at upgrading/updating/patching/creating a customized version of GCC just for MWC use

come up with a better set of user-friendly tools; the MWconf tool is dated and limited. winGUI is cool, but too specific to nav, and it also has its own set of issues.

MWC8, stop depending on the fucking Arduino IDE. Ignorant/noob users need a MWC compile&config tool, something that lets you plug in your setup in a user-friendly GUI, generates the config file, auto-compiles & uploads. It should probably be an 'all-in-one' gui that will allow you to flash & config from the same interface. Perhaps maybe add a set of helper tools that can auto-detect chips/board sensors/baud rates/shit like that, so that total retard users don't have to spend hours figuring out what hardware they have.

overhaul a lot of the crappy code in MWC8, think outside the box and try to start from scratch on a lot of stupid and amateurish stuff that was done. the original developers should not be allowed to block any proposed changes just because their egos are at risk.

32bit fans... if the STM chips are the future, then why the hell don't I see $20 STM "naze clones" on ebay? timecop shouldn't have a fucking monopoly on what's basically a standard FC design (STM chip in place of an AVR, all other components pretty much the same). Plus, it's subject to supply shortages and price gouging. So, push for an open 32-bit design, publish the schematics online, let the chinese have at them and flood the market with affordable 32-bit FC's. People shouldn't have to haggle over limited local supplies or order a $60 FC from an angry troll in Japan just to be able to fly MWC32.

MWC8/32 needs a full GPS flying mode (ala the NAZA/WKM/APM). let go of the sticks, copter stays in place... I don't personally want or need this, but, if MWC doesn't want to be left behind, it should at least try to offer it.

8-bit fans, if you're so set on keeping the AVR's in the game, then someone should come up with a multi-processor PCB with a couple of ATMega's and then create a custom code base that can handle splitting off the computational work & synchronizing communications between the two MCU's. I personally don't see the point, but, hey, it'll keep you busy...

Even though I'm not the biggest fan of OOP, I think it could totally help MWC in order to organize its spaghetti-code problem. Haters of this idea are either too scared to change their ways or are simply not strong enough with their coding skills to get with the program.

and there's so much more that I could go on all day, but I'll stop there.
If people start crying & flaming, it'll only prove that the sentiment here is very close-minded and this will thus spell multiwii's own demise.



$18 Naze32 clone available at clonespy http://witespyquad.gostorego.com/the-flip32.html

rubadub
Posts: 154
Joined: Mon Apr 28, 2014 2:36 am

Re: Why development has stopped?

Post by rubadub »

LVNeptune wrote:
$18 Naze32 clone available at clonespy http://witespyquad.gostorego.com/the-flip32.html


and then you order it and have to wait six months for paul to ship, no thanks.
show me an afro clone on ebay. I want a full-sensor FC from a little chinese man on ebay.

timecop
Posts: 1880
Joined: Fri Sep 02, 2011 4:48 pm

Re: Why development has stopped?

Post by timecop »

Awesome post. I lol'd and fully agreed with all the points.

-angry troll in japan.

User avatar
haydent
Posts: 583
Joined: Sun Jun 17, 2012 1:35 am
Location: NSW, AU

Re: Why development has stopped?

Post by haydent »

Just sat down and read this whole thread and see all the differing focus, and its what one puts their importance on that they will be likely to develop, particularly for free.

It is something to be having this discussion if nothing else.

So many posts i agreed with. If i had to pick one thing it would be code/issue tracking, followed by documentation.

[start rant]

There's no outline of who does what or how to get a patch/bug/addition dealt with. It would be great to have somewhere that allowed users to vote up additions/focus they want on, and submit their comments/mods/fixes that gives them a space to belong, rather than the current post and hope approach, which generally ends up seeing your thread rolled off the forum active threads by all manner of topics with no replies, even though actual devs may have actually read it but maybe assumed it to be someone else's responsibility/area.

Im not 100% if this is github, but happy with any developments that build on the open source contribution based model that i believe will facilitate and keep the community functioning for as long as it wants to with what ever hardware it wants to.

Then there's the documentation issue, and it sounds like we have already an available platform for that, as the existing wiki, that members can request access to, its more the motivated individuals missing there. But is it really as big an issue as we think ?! I guess it depends who you talk too... thats why something making it easy for users & devs alike to submit/vote/track what was important to them. (like a free https://www.uservoice.com/ if available) Heck even user questionnaires would be great to find out what people where using or into.

[end rant]

We will always argue about what hardware/feature is important to us vs what is not, (thats what im doing now), but i think we can do more to provide a better place to do that, that takes a more structured approach to the dev sid of things, & make MW a more accessible & open place to its users to get involved and feel a part of this project.

I think even something simple like that i got forum email notifications working again, has made a positive difference... but to do that i had to dig into the svn logs and find some dev email address's to hound to make it happen :D

danhouldsworth
Posts: 19
Joined: Fri Aug 01, 2014 2:06 pm

Re: Why development has stopped?

Post by danhouldsworth »

Stop hating & complaining about one vs. the other.


Here here! Any reasonably smart person (and surely thats everyone in the quad community?) can see there are pros and cons of all sides.

MWC8, stop depending on the fucking Arduino IDE.


Abso-bloodly-lutely! I get the great work that Arduino has done, I really do, but its IDE is a pig to work with, and hiding the build / upload process is something I can't live with. Happy to have both (as well as a GUI like OpenPilot) but if I can't just type 'make' to build / flash like every other software project in the world then its hard to want to get involved.

32bit fans... if the STM chips are the future, then why the hell don't I see $20 STM "naze clones" on ebay? timecop shouldn't have a fucking monopoly on what's basically a standard FC design (STM chip in place of an AVR, all other components pretty much the same). Plus, it's subject to supply shortages and price gouging. So, push for an open 32-bit design, publish the schematics online, let the chinese have at them and flood the market with affordable 32-bit FC's. People shouldn't have to haggle over limited local supplies or order a $60 FC from an angry troll in Japan just to be able to fly MWC32.


Not sure I agree with this. All the 32bit NazeAcros I've bought have been cheaper than the 8bit NanoWiis..? The reason I still buy the NanoWii is I believe 8bit AVR is a more familiar place to start experimenting vs the slightly more complicated 32bit ARM.

8-bit fans, if you're so set on keeping the AVR's in the game, then someone should come up with a multi-processor PCB with a couple of ATMega's and then create a custom code base that can handle splitting off the computational work & synchronizing communications between the two MCU's. I personally don't see the point, but, hey, it'll keep you busy...


I think people are missing the point with 8-bit AVRs. Look, as we bring in more sensor fusion, more flight & mission modes and more logging then 32-bit is the only way to go - or in fact 2x32bit like the PixHawk. What 8-bit brings is simplicity and low-cost (although see my point above - we don't currently seem to be benefitting from this..?). There's a huge chunk of the quad community that are flying Acro quads to some incredibly impressive results. These don't need 32bit, they need a simple code base that is easy to under stand, easy to maintain, easy to flash and easy to replace. That is the attraction of 8bit AVR. The MWC21Nano code base is a good start, but its still very messy to read, and still relies on Arduino libraries and IDE.

As an example, look at the battle raging between OneShot vs 400hz PWM. I've no idea which is right, but I know that neither side can give you a coherent argument, and every single post is about 'yeah, it feels locked in' or 'that cant work because of the Rx input cycle .. / .. timeloop jitter .. / .. MPU read rates .. / .. whatever..' And the reason is that none of the users really understand the code anymore to know whats going on under the hood, let alone conduct meaningful experiments that everyone else can learn from. Its only the few guys who originally wrote the code - and they tend to the ones with vested interests.

User avatar
haydent
Posts: 583
Joined: Sun Jun 17, 2012 1:35 am
Location: NSW, AU

Re: Why development has stopped?

Post by haydent »

thanks dan, i think you sum the situation up well in regard to those topic, and thats what i found through most of this thread, by in large, we all generally agree on many aspects of this project, particularly once we have heard each others options or had the chance to voice ours.

what we seem to be lacking though is an open dialogue between the 'leaders' and the broader 'community' of what we can do further develop this 'maker' space. what more do we need/want besides the technicalities of coding itself which i think has primarily the main focus around here, the next release, what/when ever that is...

is it a matter of getting agreement on something between a group, or convincing one person ?

we have all been making these suggestions but what is the next step ?

do we need to agree on something/s we would like changed, and then make a submission or open letter ?

or is the silence of ideas or conversation because everyone is too busy or imply that they are happy with things and not looking for change ?

food for thought, here are a list of forum posters, from highest to lowest:
memberlist.php?mode=&sk=d&sd=d#memberlist

And page #1:
Username Posts
Hamburger 2325
copterrichie 2215
timecop 1789
PatrikE 1590
Alexinparis 1571
scrat 876
EOSBandi 755
jevermeister 708
tovrin 705
kataventos 702
ezio 634
Crashpilot1000 591
shikra 577
ziss_dm 529
crashlander 500
Sebbi 478
dramida 473
haydent 460
mr.rc-cam 455
Tommie 438
nhadrian 421
waltr 398
Plüschi 350
NikTheGreek 348
bill516 334

timecop
Posts: 1880
Joined: Fri Sep 02, 2011 4:48 pm

Re: Why development has stopped?

Post by timecop »

You can take me off the list, all my posts are just trolling.

User avatar
haydent
Posts: 583
Joined: Sun Jun 17, 2012 1:35 am
Location: NSW, AU

Re: Why development has stopped?

Post by haydent »

hehe, i almost made the comment that number of posts does not necessarily equate to quality or involvement at any particular field... ;p

actually svn commit numbers would be an interesting stat to get too

User avatar
haydent
Posts: 583
Joined: Sun Jun 17, 2012 1:35 am
Location: NSW, AU

Re: Why development has stopped?

Post by haydent »

though code contribution is not the only thing, and users in this thread are suggesting we need to develop some of these other areas, your a member of this just as much as anyone, and that you havnt been banned must mean you dont troll that much ...

msev
Posts: 186
Joined: Thu Apr 14, 2011 11:49 am

Re: Why development has stopped?

Post by msev »

With like couple of 100 stm32 based fcs sold each day when they become available, there is clearly a direction outlined, what is most liked and where talented coders should look for future work. If you just look at mere thread-size, one can see an indication whats hot.

If Alex would just merge Eosbandi's gps-nav stuff, iron out the bugs and call it Mwii 2.4, he'd have some peace from us general ranting public :)...

User avatar
Plüschi
Posts: 433
Joined: Thu Feb 21, 2013 6:09 am

Re: Why development has stopped?

Post by Plüschi »

I did hear rumors 2.4 would be 2560 processors only. Ok for me, but i think its suicidal.

-We need to fork a 328 / 32u4 version, maybe call it SimpleWii.
-Throw out stuff nobody uses, like openlrs.
-Go back to arduino ide.
-Throw out alarms,lcd,log and other nonsense code.
-Throw out code for sensors NOBODY uses.
-Throw out the massive and pointless averaging of data (sensor read, rc input, attitude estim and more)
-Throw out gps stuff and rewrite it.
- Stop focusing on pretty irrelevant looptime
- Get rid of cryptic optimizations. imu.cpp -> horrible. Looks like public masturbation.
- Ban use of unreadable stuff like ternary operators. If you want to show off do it on omegle.

scrat
Posts: 925
Joined: Mon Oct 15, 2012 9:47 am
Location: Slovenia

Re: Why development has stopped?

Post by scrat »

Plüschi wrote:I did hear rumors 2.4 would be 2560 processors only. Ok for me, but i think its suicidal.

-We need to fork a 328 / 32u4 version, maybe call it SimpleWii.
-Throw out stuff nobody uses, like openlrs.
-Go back to arduino ide.
-Throw out alarms,lcd,log and other nonsense code.
-Throw out code for sensors NOBODY uses.
-Throw out the massive and pointless averaging of data (sensor read, rc input, attitude estim and more)
-Throw out gps stuff and rewrite it.
- Stop focusing on pretty irrelevant looptime
- Get rid of cryptic optimizations. imu.cpp -> horrible. Looks like public masturbation. ROFL
- Ban use of unreadable stuff like ternary operators. If you want to show off do it on omegle.

copterrichie
Posts: 2261
Joined: Sat Feb 19, 2011 8:30 pm

Re: Why development has stopped?

Post by copterrichie »

All of this Tit for tat, who shot John BS is not getting anything done. There is only one person that makes decisions and when he is good and ready, things will resumes. Personally, I am just sitting on the sideline. That is all.

timecop
Posts: 1880
Joined: Fri Sep 02, 2011 4:48 pm

Re: Why development has stopped?

Post by timecop »

Never heard of omegle until now. Thank you!

User avatar
shikra
Posts: 783
Joined: Wed Mar 30, 2011 7:58 pm

Re: Why development has stopped?

Post by shikra »

+1
Never heard of it, but hooked for all the wrong reasons :)

Frank
Posts: 16
Joined: Wed Jul 17, 2013 8:59 am

Re: Why development has stopped?

Post by Frank »

IMHO the point is: Here are some heated discussions going on about features, future etc., but the people in power are have lost their interest or got back to real life, letting die this project slowly or by funny decisions.
And as the fork-maintainers dont get agreed on a common position they will also be just specialized small forks in future. Maybe MW2.4 will get released someday, eventually, but I dont think that anyone will be enthusiastic about it anymore as in old days :)
So, decide for yourself to go with one of the forks or check out the other FC-projects out there :)

rubadub
Posts: 154
Joined: Mon Apr 28, 2014 2:36 am

Re: Why development has stopped?

Post by rubadub »

some more random ideas...

toss this ugly, dated forum system & go with something more modern. find some qualified web coders, get them into quads, and then recruit them to completely redo the web info, consolidtate all the random wikis, doc's, crap into something clean & understandable.

come up with a makefile+script/webapp? that will allow user to select the desired platform, sensors & features, and have the source-code for the selected features be auto-packaged in a downloadable zip on the fly (for any web dev's that have worked with modular systems like jquery-ui, you'll know what I mean). This will help get rid of all the unwanted bullshit for normal builds

ternary's aren't as bad as all of the crazy bit-shifting and up&down scaling that's done in order to prevent 8/16-bit overflows while maintaining precision (this bullshit should definitely be REMOVED completely from MWC32). This needs to be re-thought and completely overhauled, or, at the very least, someone needs to come up with a complete wiki document that explains ALL of the scaling that's done in the MWC code.

the foundation of MWC needs to be more modular to allow for adding and removing features on the fly. a zillion #DEFINE's doesn't cut it. This is where an object-oriented layout will help out alot. something like imu->calculate() that will handle everything, instead of all the "#if ACC {do-this} #if GYRO {do-that}"

let's get the fuck AWAY from depending on the Arduino IDE AND *libraries*. Come up with lightweight libraries that will suit MWC's specific needs, and avoid any bloat from the crap that's auto-loaded from the Arduino IDE. Build directly with GCC from a CLI script (with a nice, user-friendly GUI tool for the 'tard users), upload to the board from the tool as well.

User avatar
treym
Posts: 258
Joined: Sat Jul 21, 2012 12:28 am

Re: Why development has stopped?

Post by treym »

one does not just say that development has stopped : development take place in a great scheme, user dont understand the arcan and mystery of this process and they see the development as stopped. But as the books of mwi8bit says , one day a new release will come and a great number of flight controller will maiden together in joy and happiness.

also , havving fun and reading forum's post about how things should be done is always time consuming .... that dont help in any way... it is obvious why development has pause ^^ that dont help in any way... did i just says that ?

dominicclifton
Posts: 202
Joined: Tue Feb 05, 2013 10:28 pm

Re: Why development has stopped?

Post by dominicclifton »

haydent wrote:or is the silence of ideas or conversation because everyone is too busy?


Busy here in cleanflight world!

https://github.com/hydra/cleanflight/commits/master

https://github.com/hydra/cleanflight/gr ... ntributors

lots of ideas too:

https://github.com/hydra/cleanflight/labels/enhancement

User avatar
haydent
Posts: 583
Joined: Sun Jun 17, 2012 1:35 am
Location: NSW, AU

Re: Why development has stopped?

Post by haydent »

i recently had a go at openlrsng with its browser app configurator which is very smooth, though i dislike being forced to install google

jim lee
Posts: 16
Joined: Tue Apr 22, 2014 10:09 pm

Re: Why development has stopped?

Post by jim lee »

Wow, went off to do other stuff and thought this thread was dead.

IF I was to redo this myself I'd..

A) The flight controller would just be a flight controller. Roll, pitch, rudder, throttle. No GPS, no anything but make the bird fly. Simple Simple Simple! Want more "features"? Add another board between the receiver and this one. That can be your commander/navigator etc.

B) Since it is ONLY a flight controller 8 bit stuff should be just fine.

C) New GUI altogether.

D) c++ object oriented.

E) Stop the optimizations. I coded for years and can't follow this stuff at all. Every place I worked had at least one coder that wrote code like this and we all dreaded having to track a bug through it.

F) Scrap everything, start fresh!

And that's what I'm doing. But its a back burner project and going quite slowly.

Why do this?

We make and sell quads and find the flight controller to be a nightmare! We track every board we program and save off the parameters. I can't get 2 multiWii boards to act the same! Some work, some don't. Some are great, some won't even fly. There's no one to ask. GPS doesn't work, well sometimes it does, sometimes it just smashes your machine into the dirt as hard as possible. When you ask about issues here you either get "Its your fault" or silence. There's no head to this hydra, so it has no direction.

Sorry for the rant, feel better now..

-jim lee

rubadub
Posts: 154
Joined: Mon Apr 28, 2014 2:36 am

Re: Why development has stopped?

Post by rubadub »

KK2 has its own (optimized?) math libraries for dealing with the integer math. Though I haven't verified it, I'm pretty sure that KK did it that way for a good reason. I believe there's even a 24-bit integer type that's used, which seems like a great compromise. signed 16bit is just too damn small to do anything practical with, and 32bit is overkill for a lot of stuff.

there are a lot of inconsistencies regarding integer usage in the MW code. There are no restrictions or rules on how & when integers should be up&down-graded or how instruction/clock cycle count should be managed on a per routine or per loop basis.

One common example: In order to generate some 16bit integer term, first, you'll have a bunch of crazy optimizations, up/down scaling, and integer acrobatics in order to try to cut down on the instruction count / clock cycles. But, then, for apparently no good reason, you'll have some intermediate integer term multiplied by a float constant, which loads the whole damn thing up again by forcing it up to 32bit float, inflating the instruction count, and introducing the overhead from casting up and down. In that case, you could have just kept everything at 32bit and avoided all of the headache of managing all of the integer spaghetti (I'm not saying that *everything* should be 32bit on MWC8, but the effort to avoid int32 or floats sometimes seems like too much of a hassle).

Another thing that I've thought about is the use of flag/bool variables in MWC8. It seems like there are a lot of variables taking up 8 bits of space when only 1 bit is actually being used. I once worked on a project that had a 'flags' class, where flags could be added/removed and set/unset via a class-based interface, whereas the actual memory allocation was handled transparently by the class in order to achieve the most efficient memory usage. So, for example, if you needed 12 flag/bool variables, you'd only require that two 8bit registers be allocated by the flags class (which can accomodate up to 16flags), and you'd access the bits for these flags via the class:
something like this:

Code: Select all

flags::allocate(FLAG_COUNT);
flags::add(flagID);
flags::set_flag(flagID,flagVal);
flags::get_flag(flagID);
flags::remove(flagID);


Another things that bugs me is how MWC handles its time-based looping structures.
The whole way it goes about setting up a Hertz-based time loop is ugly, messy, and confusing.
The APM does it the right way, wherein it has a 'task scheduler' class that handles firing off the appropriate loop functions at the right intervals.

I built an Arduino sketch once that did something similar, where I had different sub-loops, such as 'loop50Hz(),loop20Hz(),loop10Hz()...', I'd reference my time-based sub-routines within those sub-loops, and then I'd poll micros() from the main 'loop()' function and fire off each sub-loop when necessary. Much cleaner and easier to understand and expand that way, vs. doing the whole "if (currentTime > rcTime )" and "annexCode()" crap.

anyway, these are just random thoughts/ideas, of which I've had many when it comes to MWC :)

User avatar
EOSBandi
Posts: 802
Joined: Sun Jun 19, 2011 11:32 am
Location: Budapest, Hungary
Contact:

Re: Why development has stopped?

Post by EOSBandi »

Rubadub :
MultiWii has assembly coded function for the most resource hungry integer function (multiplication)
Flags are stored in the flag_struct_t bit packed. So 16 flags are using 8 bytes.... there are even flags with four states packed to 2 bit....
Exactly where in the code you found that integer * float ?

Originally multiwii was written solely for AtMega328 platform which has small FLASH and even smaller SRAM. The core flight code is hand optimized for speed, program size and memory footprint. I agree that sometimes it is hard to read and understand the code but this is the direct result of the optimization.

Comparing to APM code is not relevant. Even the first version of the APM code was made for atmega1280 which had four times more SRAM and FLASH.

rubadub
Posts: 154
Joined: Mon Apr 28, 2014 2:36 am

Re: Why development has stopped?

Post by rubadub »

EOSBandi wrote:Rubadub :
MultiWii has assembly coded function for the most resource hungry integer function (multiplication)

that's not true, and sounds like a bunch of marketing hype.
there's pretty much standard multiplication going on throughout the majority of the code, with only a couple/few assembly routines randomly thrown in.
EOSBandi wrote:Exactly where in the code you found that integer * float ?

did a quick scan of Output.cpp, & here's one...

Code: Select all

   // Common controlls for Helicopters
    int16_t heliRoll,heliNick;
... do integer stuff with heliRoll&heliNick
    // Limit Maximum Rates for Heli
    int16_t cRange[2] = CONTROL_RANGE;
    heliRoll*= cRange[0]*0.01;
    heliNick*= cRange[1]*0.01;
...now, do more integer gymnastics with helinick&heliroll

if you look around, you should find others.

EOSBandi wrote:Originally multiwii was written solely for AtMega328 platform which has small FLASH and even smaller SRAM. The core flight code is hand optimized for speed, program size and memory footprint.

again, sounds like a bunch of hype, when it's simply a way to justify having an old, over-glorified, overgrown, over-patched Arduino sketch. If speed and memory usage were such a big deal, then the Arduino libraries would have been ditched a long time ago. It would have been written in pure C with native, home-grown libraries & probably a better compiler.
EOSBandi wrote:Comparing to APM code is not relevant.

lol, what?
Comparison IS relevant...In fact, it's basically the main theme of this thread, as the discussion is about why Multiwii development has stagnated and other FC projects are pushing ahead.

it's "grumpy old men" attitudes like these that are holding multiwii back. No one is allowed to think outside the box and give their opinions for features & changes because someone will immediately bark and defend legacy code with the whole 'hand optimized for speed' cop-out.

but, anyway, ok, I can see where this is going. I guess the atmega328 crowd can keep defending the "hand optimized" spaghetti code while the rest of the world moves on to bigger and better things.

e_lm_70
Posts: 297
Joined: Fri Aug 09, 2013 8:35 pm

Re: Why development has stopped?

Post by e_lm_70 »

rubadub wrote:...

but, anyway, ok, I can see where this is going. I guess the atmega328 crowd can keep defending the "hand optimized" spaghetti code while the rest of the world moves on to bigger and better things.


Spaghetti code :mrgreen:

In my book APM is a spaghetti code .. with lot of marketing hype .. even spaghetti HW I would say ..APM a dual 8bit chip, which one is useless ... and PixHawk .. dual CPU for a fake HW resilience concept .. also fake RTOS , and a fake scheduler on APM

If you look of the APM code ... you get lost on the mega encapsulation of every simple function ... for see the real thing you need to mess around over multiple file and dummy declaration ...

Anyhow .. there is no point on compare APM with MultiWii .. MultiWii has been born to be "simple" ... and since it is more simple ... in my book it does not look a spaghetti code.
Once you remove the #ifdef parts that are not relevant ... it will became very very simple and clear to read

On one point you are right above ... I don't get where does come this "MultiWii has assembly coded function for the most resource hungry integer function (multiplication)" ... I don't see a single line of assembly in MultiWii code :roll:

Anyhow ... since both APM and Multiwii ... are based on Arduino compiler ... actually ... there is not much difference in this aspect between the two.

Speaking about evolution ... this is for me a way to make MultiWii to evolve ... making more easy for everybody :ugeek:


User avatar
haydent
Posts: 583
Joined: Sun Jun 17, 2012 1:35 am
Location: NSW, AU

Re: Why development has stopped?

Post by haydent »

i was curious to see the assembly code too...

User avatar
Plüschi
Posts: 433
Joined: Thu Feb 21, 2013 6:09 am

Re: Why development has stopped?

Post by Plüschi »

imu.cpp

Code: Select all

// signed16 * signed16
// 22 cycles
// http://mekonik.wordpress.com/2009/03/18/arduino-avr-gcc-multiplication/
#define MultiS16X16to32(longRes, intIn1, intIn2) \
asm volatile ( \
"clr r26 \n\t" \
"mul %A1, %A2 \n\t" \
"movw %A0, r0 \n\t" \
"muls %B1, %B2 \n\t" \
"movw %C0, r0 \n\t" \
"mulsu %B2, %A1 \n\t" \
"sbc %D0, r26 \n\t" \
"add %B0, r0 \n\t" \
"adc %C0, r1 \n\t" \
"adc %D0, r26 \n\t" \
"mulsu %B1, %A2 \n\t" \
"sbc %D0, r26 \n\t" \
"add %B0, r0 \n\t" \
"adc %C0, r1 \n\t" \
"adc %D0, r26 \n\t" \
"clr r1 \n\t" \
: \
"=&r" (longRes) \
: \
"a" (intIn1), \
"a" (intIn2) \
: \
"r26" \
)

e_lm_70
Posts: 297
Joined: Fri Aug 09, 2013 8:35 pm

Re: Why development has stopped?

Post by e_lm_70 »

Plüschi wrote:imu.cpp

Code: Select all

// signed16 * signed16
// 22 cycles
// http://mekonik.wordpress.com/2009/03/18/arduino-avr-gcc-multiplication/
#define MultiS16X16to32(longRes, intIn1, intIn2) \
asm volatile ( \
"clr r26 \n\t" \
"mul %A1, %A2 \n\t" \
"movw %A0, r0 \n\t" \
"muls %B1, %B2 \n\t" \
"movw %C0, r0 \n\t" \
"mulsu %B2, %A1 \n\t" \
"sbc %D0, r26 \n\t" \
"add %B0, r0 \n\t" \
"adc %C0, r1 \n\t" \
"adc %D0, r26 \n\t" \
"mulsu %B1, %A2 \n\t" \
"sbc %D0, r26 \n\t" \
"add %B0, r0 \n\t" \
"adc %C0, r1 \n\t" \
"adc %D0, r26 \n\t" \
"clr r1 \n\t" \
: \
"=&r" (longRes) \
: \
"a" (intIn1), \
"a" (intIn2) \
: \
"r26" \
)


Ok ... still this is not in the official MultiWii 2.3 .. it is part of the 2.3 R1648 .. that was sounding more a beta
But .. yes this is the current latest development code.

danhouldsworth
Posts: 19
Joined: Fri Aug 01, 2014 2:06 pm

Re: Why development has stopped?

Post by danhouldsworth »

Jim Lee - you were my inspiration up until
D) c++ object oriented.

you're on your own my friend...

rubadub
Posts: 154
Joined: Mon Apr 28, 2014 2:36 am

Re: Why development has stopped?

Post by rubadub »

danhouldsworth wrote:Jim Lee - you were my inspiration up until
D) c++ object oriented.

you're on your own my friend...

hmmm. there's nothing wrong with going OOP.
At first it kinda sux, but, in the long-run, it's much cleaner and better.

The funny&stupid thing is that inside of GPS.cpp, there's a class called "LeadFilter". So, someone at some point decided "hey, let's use some OOP here and setup a simple class for GPS filtering! very sophisticated solution!!" and everyone else just decided it was ok to indiscriminately shove it in there while, at the same time, bashing on anyone else's proposals to switch to full OOP in the future.

MW has no sense of structure, conventions, or identity for that matter :roll:

jim lee
Posts: 16
Joined: Tue Apr 22, 2014 10:09 pm

Re: Why development has stopped?

Post by jim lee »

danhouldsworth wrote:Jim Lee - you were my inspiration up until
D) c++ object oriented.

you're on your own my friend...


HAHAHA!! Not a problem! Back in the day, that's what I wrote most in and what I still think in. Too old to learn anything new. :)

-jim lee

e_lm_70
Posts: 297
Joined: Fri Aug 09, 2013 8:35 pm

Re: Why development has stopped?

Post by e_lm_70 »

danhouldsworth wrote:Jim Lee - you were my inspiration up until
D) c++ object oriented.

you're on your own my friend...


+1

OO Coding ... make no sense with limited memory and CPU power

The next step from OO Coding will be to go to virtual machine using Java ... like many server applications do in these days

But one thing is to make code for a 1G ram 3Ghz CPU ... and another is for 1K ram and 16Mhz CPU

rubadub
Posts: 154
Joined: Mon Apr 28, 2014 2:36 am

Re: Why development has stopped?

Post by rubadub »

e_lm_70 wrote:
danhouldsworth wrote:Jim Lee - you were my inspiration up until
D) c++ object oriented.

you're on your own my friend...


+1

OO Coding ... make no sense with limited memory and CPU power

The next step from OO Coding will be to go to virtual machine using Java ... like many server applications do in these days

But one thing is to make code for a 1G ram 3Ghz CPU ... and another is for 1K ram and 16Mhz CPU


not necessarily.
If done correctly & with limited resources in mind, OOP can be very effective. As long as you don't go crazy with the layers of abstraction, there shouldn't be that much more overhead with it, as the classes/objects basically act as glorified structs (which MW already uses a lot) yet with embedded function pointers (generous use of singleton classes would be ideal in this case). A good compiler should take care of stripping it all down & simplifying it at c-time.

NoRCExperience
Posts: 4
Joined: Tue Sep 30, 2014 3:26 pm

Re: Why development has stopped?

Post by NoRCExperience »

rubadub wrote:
LVNeptune wrote:
$18 Naze32 clone available at clonespy http://witespyquad.gostorego.com/the-flip32.html


and then you order it and have to wait six months for paul to ship, no thanks.
show me an afro clone on ebay. I want a full-sensor FC from a little chinese man on ebay.


You do know you can build your own full board in 10 minutes for $10....? GOOGLE

Then you are not hostage to anything but yourself....

danhouldsworth
Posts: 19
Joined: Fri Aug 01, 2014 2:06 pm

Re: Why development has stopped?

Post by danhouldsworth »

I've never really understood the argument about lack of availability of FC boards. I have an embarrassingly full draw of FCs I've still yet to use - both 8bit and 16bit. Admittedly I'm London based so benefit from easy logistics, but surely everyone has access to a few of the following :

32bit NazeAcro (best 32bit acro FC) @ $25 ; http://hobbyking.com/hobbyking/store/__ ... oller.html
8bit NanoWii (best 8bit acro FC @ €30 : http://flyduino.net/Multikopter-FC-Multiwii_1
8bit ArduPilot (best hobbyists choice with baro, data logging and million ports) @ $70 : http://www.hobbyking.co.uk/hobbyking/st ... _BARO.html
32bit OpenPilotRevo (high end 168MHz CortexM4F with 433Mhz modem) @ AUS$129 : http://store.openpilot.org/home/25-open ... arter.html

(well, admittedly that last one is a bit steep) but they're always in stock whenever I've been ordering with fast delivery times?

Anyway, back on thread, the issue IMHO is not with board availability but with the lack of high-quality, accessible firmware to put on them.

rubadub
Posts: 154
Joined: Mon Apr 28, 2014 2:36 am

Re: Why development has stopped?

Post by rubadub »

NoRCExperience wrote:
rubadub wrote:
LVNeptune wrote:
$18 Naze32 clone available at clonespy http://witespyquad.gostorego.com/the-flip32.html


and then you order it and have to wait six months for paul to ship, no thanks.
show me an afro clone on ebay. I want a full-sensor FC from a little chinese man on ebay.


You do know you can build your own full board in 10 minutes for $10....? GOOGLE

Then you are not hostage to anything but yourself....


Screw you, go build it for me then and sell it to me for $12, instead of coming here, trying to get personal, and derailing the thread u dipshit.

Oh, and go and google some more shit yourself since you have "NoRCExperience" and one post, yet you felt compelled to chime in and disrupt an ongoing development discussion with your bullshit. I can smell a fake user account a mile away.

User avatar
haydent
Posts: 583
Joined: Sun Jun 17, 2012 1:35 am
Location: NSW, AU

Re: Why development has stopped?

Post by haydent »

come on rub, language like that is making it personal
Last edited by haydent on Wed Oct 01, 2014 4:18 am, edited 1 time in total.

kilby
Posts: 76
Joined: Wed May 28, 2014 10:17 am

Post by kilby »

Considering somebody somebody was bothered enough to register as noRCExperience to post this I think somebody was bothered enough to make it personal already (which was really a little pathetic)

rubadub
Posts: 154
Joined: Mon Apr 28, 2014 2:36 am

Re:

Post by rubadub »

^^^^

No apologies. I have very little tolerance for stupid people, especially those that want to act like condescending assholes or try to belittle others. Sadly, this seems to be the growing trend around the RC world.

Btw, you're seriously kidding yourself if you think that was a real user. It's just somebody who created an account for the sole purpose of trolling, so they deserve what they get.

"Build a naze32 for under $10"
...as long as you already have all of the components and a reflow oven/station, and then you only need to print a pcb for $10!!!
whatever.

timecop
Posts: 1880
Joined: Fri Sep 02, 2011 4:48 pm

Re: Why development has stopped?

Post by timecop »

danhouldsworth wrote:Anyway, back on thread, the issue IMHO is not with board availability but with the lack of high-quality, accessible firmware to put on them.


You've pretty much nailed it.

Also lack of people interested in writing non-shitty code and improving one thing instead of renaming shit everywhere and wasting time (lookin at you, Dominic "jobless" Clifton).

e_lm_70
Posts: 297
Joined: Fri Aug 09, 2013 8:35 pm

Re: Re:

Post by e_lm_70 »

rubadub wrote:...

"Build a naze32 for under $10"
...as long as you already have all of the components and a reflow oven/station, and then you only need to print a pcb for $10!!!
whatever.


Seriously ... you don't need any reflow oven station ... just a 3$ cheap battery power iron is enough for the job for DIY Naze32.
Actually ... even no soldering at all if you get some GY-86 / GY-87 with already pre solder pin.

Hot glue come handy for stick the 10DOF on the STM32 board.



Anyhow ... the proper TimeCop board has also a 16Mbit memory ... to add this in the DIY it make little sense ... too much efforts for too little gain

In my book, it is better DIY a Naze32 ... then buy a clone ... Naze32 now is available for cheap and without mayor problem of availability from HobbyKing

About bad Firmware ... or bad code ... as far as it works ... I would not call it bad ... and as far as I know .. all the FC firmware are doing the job in the 99% of cases (1% is the tricky part for bad ESC, vibrations, overpower, etc)

rubadub
Posts: 154
Joined: Mon Apr 28, 2014 2:36 am

Re: Re:

Post by rubadub »

e_lm_70 wrote:Seriously ... you don't need any reflow oven station ... just a 3$ cheap battery power iron is enough for the job for DIY Naze32.
Actually ... even no soldering at all if you get some GY-86 / GY-87 with already pre solder pin.

Hot glue come handy for stick the 10DOF on the STM32 board.


that's not "building a board for under $10", that's slapping together separate components in an attempt to cheaply replicate what an all-in-one design already does & in a much more efficient and effective way.

I also just realized that HK is finally selling their own in-house naze32's, so that'll open up the floodgates to better prices & more availability.

anyway, can we please get off the board subject & back on topic?

danhouldsworth
Posts: 19
Joined: Fri Aug 01, 2014 2:06 pm

Re: Why development has stopped?

Post by danhouldsworth »

anyway, can we please get off the board subject & back on topic?


Here here!

Btw - I feel I should row back slightly from my earlier comment. There are some great firmwares out there, from which I have learnt a great deal - my position is more about the fact they take considerable effort to understand, and tinker in a safe* way, and that effort is possibly more than starting fresh from a blank canvas.

*As an example from MultiWii, casting between signed / unsigned & 16bit / 32bit integer representations of floats during the same PID calculation depending on whether particular parameters and RC inputs are likely to cause an overflow, may make optimal sense to the person who came up with it. But if you want to come in and try out a slightly different algorithm - you can come unstuck quickly. I tried and ended up with copter that flew beautifully, but in certain fringe conditions would overflow (always when in a large positive gyro direction - ie pitch back or left) and would switch direction - always ending in a spectacularly blur-fast roll.

e_lm_70
Posts: 297
Joined: Fri Aug 09, 2013 8:35 pm

Re: Re:

Post by e_lm_70 »

rubadub wrote:
e_lm_70 wrote:Seriously ... you don't need any reflow oven station ... just a 3$ cheap battery power iron is enough for the job for DIY Naze32.
Actually ... even no soldering at all if you get some GY-86 / GY-87 with already pre solder pin.

Hot glue come handy for stick the 10DOF on the STM32 board.


that's not "building a board for under $10", that's slapping together separate components in an attempt to cheaply replicate what an all-in-one design already does & in a much more efficient and effective way.

I also just realized that HK is finally selling their own in-house naze32's, so that'll open up the floodgates to better prices & more availability.

anyway, can we please get off the board subject & back on topic?


It is not about to agree or not .. or to have a different point of view.

You are just plain wrong ... something people should have smell already on your rude post above.

BTW: HobbyKing does not sell an in-house naze32 .. it does sell a licensed board bless by TimeCop

PS: If you avoid posting disinformation, the back in topic it happens much faster. :ugeek:

Post Reply