Difference between revisions of "Talk:Balance Board Pro"

From WiiBrew
Jump to navigation Jump to search
Line 54: Line 54:
:Update: I'd like to give implementing this a shot, but I can't compile the source with DevkitPro. What libraries do I need?  Can you share the makefile? -[[User:Anachronist|Anachronist]] 06:31, 30 August 2009 (UTC).
:Update: I'd like to give implementing this a shot, but I can't compile the source with DevkitPro. What libraries do I need?  Can you share the makefile? -[[User:Anachronist|Anachronist]] 06:31, 30 August 2009 (UTC).
If you ever get a chance, a couple add ons that would make the center of pressure utility even better are:
1. A line that traces your center of pressure so you can see where you've been.
2. Sound that changes pitch the further you get from the center (think of people with poor vision...)
3. Percentage readouts to be able to record how much weight is on the front/ back/or sides.--[[User:Joshuacohen|Joshuacohen]] 20:02, 11 October 2009 (UTC)

Revision as of 22:02, 11 October 2009

Source for Balance Board Pro

Can you please make the full source available, and not just main.cpp? This would include the Make file along with all assets and local includes. Antiaverage (talk/con) 15:56, 24 September 2009 (UTC)


Initial version 1.0 released to public! - Paulus 22:27, 20 July 2009 (UTC)

Balance Board Pro was pulled for a few days, and is now re-released as BALANCE BOARD PRO v1.1 with source included! - Paulus 23:29, 25 July 2009 (UTC)

Just downloaded, I'll try it later.--FUNKAMATIC ~talk 00:56, 26 July 2009 (UTC)
I'm still looking for that "credit" to me you mentioned... (it's obvious you took big chunks of code from Balance Board Tools, it doesn't matter the variables names). --Elisherer 20:21, 31 July 2009 (UTC)
I'm sorry you feel that way and I really don't want any trouble or bad feelings, but I really didn't use anything directly from Balance Board Tools (I gave you credit before for using part of your KG ruler image, but I've since created my own). We both use libwiisprite (which I chose after reading some great things about it and playing with some of the tutorials and seeing how (mostly) effective it was) and the Balance Board (it is a Balance Board program, after all) and the few chunks of similar code is the code native to each of those uses that are given in several public tutorials out there. At the most it seems we found many of the same tutorials when dealing with some of the same situations. I just looked over both of our sources, just out of curiosity, and even though we do both use some of the same libraries, we implemented the functionality in completely different ways! Especially considering that we have some similar functionality. After looking over your latest source, I would say that your implementation is much cleaner than mine and probably uses less CPU cycles overall. I went through MANY, MANY different ways of implementing some of the various features, but I often ran into graphic display problems, glitchy images, and a few other anomalies, until I settled on what you see now. I guess I should have kept a development log of all the steps and the thought process I went through, but I didn't :( But technical matters aside, you did give me the initial idea back with your initial release so credit given for that! Thanks! (I also noticed the several requests that people had with your program, so I thought I'd honor those requests in mine, but when I felt like I could share what I'd done so far, I noticed that you already released your final version with several of those requests fullfilled.) And on a side note, since you have experience with this too (wiiuse/wpad with wii_board_t), have you found any wiiuse documentation that includes the wii_board_t support? All the documentation I find seems to have been written before Balance Board support was implemented. - Paulus 22:10, 31 July 2009 (UTC)
I Didn't explain myself correctly. When I want to make a program, same as a one that already out there, I try FIRST to improve the exisiting (maybe a MOD version) and if the source is not released or not clean enough I go and make a new one, cause otherwise it may look like credit stilling...I don't say you stole anything but the CORE idea was already existing and you went and made a new and published that as a new release. I hope next time you'll use common sense... (*And about the wii_board_t I guess your thinking of the calibration variables...no I don't know how to use them...I think nobody does, Your idea of calibration is quite good!). --Elisherer 06:41, 1 August 2009 (UTC)

My problemis about calibration. It is nice and easy, i like the music.

I guess that if you zero the BB it means it s not a real calibration of the BB?

I am trying to make quite the same thing using the wiiremotej java api on computer. Only trouble there is no calibration method. As i don t read well computer porgramming except a bit of java i didn t quite understand your method for calibrating. Thanx for helping.

If my message is at the wrong place please tell thanx again.


Yeah, I should have methodized the sections of code I used more than once. I did on some things, but I even should have on the zero, calibrate, and fine tune stuff. Basically what I did for the zero/calibration stuff is to just take about 400 sample readings from of the board's sensors, average them, and then subtract that average from whatever the current sensor reading is to get the actual weight on the scale. The Balance Board is pretty jumpy as far as taking readings goes, but this method seems to work about 99% of the time. And by "work" I mean that right after you calibrate it, you can fine tune the reading and get "0.00". It's not perfect, however, but it's pretty darn close...Though I'm still toying with a few ideas for more consistent calibration (100%). - Paulus 01:04, 28 July 2009 (UTC)
Thanx for your answer. So i guess i ll take about the same number of sample, and for example if Bl is +0.2 kg when Balance board is empty. Than correction is : Corrected(BL)= Read(Bl)-0.2Read(Bl) is that right? —Preceding unsigned comment added by Samba (talkcontribs) 10:22, 29 July 2009 (UTC)
I think you have the right idea there. It would be like this: ActualWeight = CurrentReading - Offset, where the CurrentReading is what the board is currently returning, and with Offset being the average of the ~400 readings you take from the board. - Paulus 20:36, 29 July 2009 (UTC)
About calibration. I guess that substracting offset can be good for zeroing but how can it work for calibrating? I guess it should be a division. Can't manage better than :Actual percentage of total weight on Top Bootom =Currentreading top bottom * (1/(4*Offset reading). Any better idea? —Preceding unsigned comment added by Samba (talkcontribs) 09:50, 7 August 2009 (UTC)


I think a new logo is necessary. --The33dude33 20:52, 26 July 2009 (UTC)

Agreed. I never really liked the current logo...Maybe I'll have time to revamp it this week. - Paulus 01:04, 28 July 2009 (UTC)

I also think the cursor is obnoxious. Can you please let us change it to something more conventional or at least fitting with the rest of the application? This isn't a football game, why the football helmet? Antiaverage (talk/con) 15:56, 24 September 2009 (UTC)

Could you please release all the source and files for your application, not just parts of it? I can't seem to find the background music, images, or other items to properly build it. Thanks in advance, -- Bpienig 03:43, 5 October 2009 (UTC)

Replace the "fine tune" with a lowpass filter

Overall, I really like this utility. It gives me an accurate scale to measure the growth of my baby boy.

I would change one thing: I'd replace that fine-tune locking display with a running signal average that you can toggle on and off. Most test equipment for measuring noisy data comes with a way to display continuously an average of, say, the last 120 data points. The quickest and easiest way to approximate an arithmetic average is to use an exponential average, that is:

avg = w * (xavg) + avg;

...where avg is the last average calculated, x is the most recent data value, and w is a weighting factor. You just have to initialize w as w = 2 ⁄ (n + 1), where n is the number of prior data points to average.

If n = 120, then the displayed weight on the balance board will approximate the average of the last 120 values. The displayed result may have lag of a second or two to settle to whatever it's weighing — I'm guessing here, but play with it. The advantage is that you'd have a stable weight display that doesn't need to "lock", but would change right away if the weight on the board changes.

The filter I describe is formally known as a "single-pole Bessel infinite impulse response (IIR) lowpass filter." It has the advantage of being very fast to calculate. If you are willing to save the last couple of results and data inputs in a couple of ring buffers, you can go to higher-order filters for better noise suppression. See my IIR filter page for recipes on constructing higher-order filters. The 2-pole Bessel, I have found, is a good compromise between overshoot and settling time, and it's fast to calculate. -Anachronist 23:18, 23 August 2009 (UTC)

Update: I'd like to give implementing this a shot, but I can't compile the source with DevkitPro. What libraries do I need? Can you share the makefile? -Anachronist 06:31, 30 August 2009 (UTC).