LAVA Forums Buy cool LAVA gear Forums RSS Feed

Welcome Guest ( Log In | Register )

Tags:
None
2 Pages V   1 2 >  
Closed Topic Start new topic
> 2nd LAVA Coding Challenge, Mouse Gestures
mballa
post Jun 14 2006, 05:28 AM
Post #1


Extremely Active
****

Grp: Premium Member
Posts: 315
Joined: 6-August 04
From: Gurnee Illinois
Member No.: 584
Using LabVIEW Since:1997
LV:8.5 ,8.2.1 ,7.1
United States us_illinois us_michigan


Greetings LAVA members
the coding challenge committee:...

Attached ImageAttached ImageAttached Image[attachment=2934
attachment]
Attached ImageAttached ImageAttached Image[attachment=2940
attachment]

...would like to announce the next LAVA coding challenge.
We are going to change things around for this challenge. Instead of having judges choose a final winner we are going to ask the LAVA members to vote on the final choice.

Review Format:

Here is how the coding challenge format will work.
  • All submissions must meet a set of minimum requirements defined by the committee.
  • Every submission that passes the minimum requirements will be evaluated by the challenge committee and the top 5 will be selected.
  • The top 5 will be posted publiclly to all the LAVA members and a winner will be chosen by popular vote.
Challenge Definition:
The challenge that the committee has selected is called "Mouse Gestures". A mouse gesture is a technique used in a user interface that combines mouse movements and clicks. The software interprets these actions into application commands. Mouse Gestures allow quick access to programmable commands without the need for keyboard strokes or menus. The task of the Mouse Gesture Application Interface (MGAPI) is to return to its calling application the detected gesture string. It does this by tracking the mouse trajectory on the caller's front panel between the mouse down and up events. It translates the trajectory into a series of string characters to be returned to the application.

The string characters are identified as follows;
U for Up
D for Down
R for Right
L for Left,
The 4 diagonal directions are identified by the corresponding numbers on the numeric keypad.
1 for Down Left
3 for Down Right
7 for Up Left
9 for Up Right

For example, if the users presses the Mouse button and draws a "Z" on screen and then releases the button, the MGAPI returns the final string of "R1R".

Note: Mouse Gestures are not about pattern recognition but about mapping the mouse movements to a simple set of string characters. Install the Firefox Mouse Gestures extension to see it at work.

Challenge Framwork:
The Mouse Gestures challenge will consist of two parts a technical part and a creative part.

1:MGAPI:(MG Test vi)
The first part will be to create a MGAPI and place it inside a Test VI supplied by the committee. This will give the committee a standard platform to test all submissions fairly. The committee will use the test VI along with other tools to evaluate the MGAPI to the following criteria.
  • Ease of portability,
  • Performance,
  • Scalability and Adjustability,
  • Coding Style
Attached File  MGAPI_Test_Vis_6.1_to_8.01.zip ( 63.22K ) Number of downloads: 358


2:Application of MGAPI(MG Application vi)
The second or creative part will be to build a LabVIEW application that makes the best use of the MGAPI. This could be anything that you can think of as long as it uses the same MGAPI as was used in the test vi. Remember you are trying to impress your LAVA peers so the cooler the better.
Both the MGAPI and final application will be evaluated by the committee when selecting the top 5.

Minimum Requirements:
For the Mouse Gesture challenge, the minimum requirements are as follows:
  • The MGAPI must intercept mouse movements from the calling vi's front panel between mouse down and mouse up.
  • The MGAPI must produce two string outputs that use the 8 direction string characters UDLR1379.
  • The First string indicator Labeled (MG Process) will display the direction characters as they occur in process or while the mouse button is pressed.
  • The Second string indicator Labeled (MG Final) will remain empty until the mouse button is released and then display the final character string.
    Example:
    Referring to the Z example, when the mouse button is pressed both the (MG Process) and (MG Final) will display an empty string. After the first detected motion (MG Process) would display a "R" then a "R1" after the second and a "R1R" after the third.
    When the mouse button is released (MG Final) will then display "R1R".
  • Standard LabView Coding Challenge rules apply.
    All coding must be done in LabVIEW (any version is acceptable).
    No external code, DLLs, CINs, exes, ActiveX, .NET, etc
    DLL's or libraries that are part of the core LabVIEW are allowed.
    OpenG code is allowed. Please include this code in the ZIP file.
  • The same MGAPI code from the MG Test vi must also be use in the MG Application vi.
Considerations:
These Items although not mandatory should be considered when developing the MGAPI
  • Minimum segment length
  • Angle tolerance
  • Timeout when mouse is idle.
Prize:

Attached Image
The Winner will receive a NI USB-6008 Multifunction I/O worth $159.

Submissions:
The deadline for all submissions is Aug-20-2006.
The final submission should consist of a ZIP file containing the two main vis (MG Test vi and MG Application vi) along with all of the support files and VI's. Warning, ONLY ZIP files will be acceptable as attachments.
Please e-mail the final ZIP file to: codingchallenge@lavag.org. Multiple submissions are acceptable.
In the subject of the email please write MG Challenge followed by your LAVA user name.
Example: MG Challenge joe_user
Please Do not post submissions to this thread. Please use a valid email address that you check often so we can contact you for possible missing VI's or questions.

You CAN post questions to this thread.

Finally, My thanks to the committee for all there past, present and future help.
mballa
Attached image(s)
Attached Image Attached Image
 

--------------------
There are only 10 kinds of people.
Those who understand binary and
those who don't.


Tags:
None
Go to the top of the page
+Quote Post
Ad
post Jun 14 2006, 05:28 AM
Post #















Tags:
None
Go to the top of the page
Quote Post
Yair
post Jun 24 2006, 09:07 PM
Post #2


Extwemely Active
*****

Grp: Premium Member
Posts: 1429
Joined: 23-January 05
From: Here
Member No.: 1431
Using LabVIEW Since:2003
LV:7.0 ,7.1 ,.
Israel Nothing Selected Nothing Selected


Great challenge, and I'm happy to say that I've completed the basic part of my API and am thinking of some cool apps, but I do have a couple of questions.



1. The challenge states that my application HAS to use the same API as the test VI. This strikes me as very limited. I would much rather extend my API and use more powerful features in my application. Is this not a possiblity?



2. Both dynamic events and the mouse input VIs were not available in 6.1, so obviously there's no way to make it really portable in 6.1 without writing some external code (which is not allowed by the rules nono.gif laugh.gif ). Did you include the 6.1 template on purpose or was that just an oversight?

--------------------
More than meets the eye...


Tags:
None
Go to the top of the page
+Quote Post
crelf
post Jun 24 2006, 10:06 PM
Post #3


I'm a LAVA, not a fighter.
******

Grp: Premium Member
Posts: 3184
Joined: 13-October 03
From: Michigan, USA
Member No.: 181
Using LabVIEW Since:1993
LV:8.5 ,. ,.
Australia United States aus_aboriginal My Blog


QUOTE (yen @ Jun 25 2006, 07:07 AM) *
Great challenge, and I'm happy to say that I've completed the basic part of my API and am thinking of some cool apps

That's what we like to hear - glad that it's stimulating your mind smile.gif
QUOTE (yen @ Jun 25 2006, 07:07 AM) *
The challenge states that my application HAS to use the same API as the test VI.

The reason we chose a simgle API for all entries is that of a level playing field - as you can see from the announcement positing, there are a number of judges involved in selecting the final five, and we felt that placing this limit on entries allows us all to have a baseline - a frame of reference - to assess your entries on. For your entry to be valid, it must work with the template API, although once this is all over and the winners announced, by all means: go nuts! You might even find someone else's submission better than yours, which will give you an even better platform to create a new version from.
QUOTE (yen @ Jun 25 2006, 07:07 AM) *
Both dynamic events and the mouse input VIs were not available in 6.1, so obviously there's no way to make it really portable in 6.1 without writing some external code.

Although using the event structure and mouse input VIs are native to versions above 6.1, there may be methods that you can use to complete the tasks with 6.1 (I'm not saying there are, nor am I saying there aren't wink.gif ). There are still plenty of people out there that are still using 6.1 (it is a pretty stable and functional version), and we didn't want to exclude those folks from entering the challenge.

--------------------




Tags:
None
Go to the top of the page
+Quote Post
Yair
post Jun 24 2006, 11:32 PM
Post #4


Extwemely Active
*****

Grp: Premium Member
Posts: 1429
Joined: 23-January 05
From: Here
Member No.: 1431
Using LabVIEW Since:2003
LV:7.0 ,7.1 ,.
Israel Nothing Selected Nothing Selected


QUOTE (crelf @ Jun 25 2006, 01:06 AM) *
...we felt that placing this limit on entries allows us all to have a baseline - a frame of reference - to assess your entries on. For your entry to be valid, it must work with the template API...
Does that mean that the only way for me to output the results to my application (not to the test VI) is through those 2 strings? Can't I use anything else?

I suppose I could output those strings to a mediator and use that to generate what I want, but that seems rather ridiculous. I would really rather add more options into my interface now (while still keeping the stings, of course) because I haven't managed to find an application where this will really be useful yet and I don't know if I'll use this after the challenge.

--------------------
More than meets the eye...


Tags:
None
Go to the top of the page
+Quote Post
mballa
post Jun 26 2006, 03:35 AM
Post #5


Extremely Active
****

Grp: Premium Member
Posts: 315
Joined: 6-August 04
From: Gurnee Illinois
Member No.: 584
Using LabVIEW Since:1997
LV:8.5 ,8.2.1 ,7.1
United States us_illinois us_michigan


QUOTE (yen @ Jun 24 2006, 04:07 PM) *
Great challenge,

Thank you.

QUOTE (yen @ Jun 24 2006, 04:07 PM) *
1. The challenge states that my application HAS to use the same API as the test VI. This strikes me as very limited. I would much rather extend my API and use more powerful features in my application. Is this not a possiblity?


One of The reasons why we want the same API used in the test vi as in the application is to help show Ease of portability. One of the attributes that we feel makes a good API is how easy it is to insert into another application. Adding additional functionality beyond the requirements is fine but the API as a whole should be transportable to other applications.

QUOTE (yen @ Jun 24 2006, 04:07 PM) *
2. Both dynamic events and the mouse input VIs were not available in 6.1, so obviously there's no way to make it really portable in 6.1 without writing some external code (which is not allowed by the rules nono.gif laugh.gif ). Did you include the 6.1 template on purpose or was that just an oversight?


We wanted to let anyone with version 6.1 or greater be able to participate if they wished. A submission written in any of these Version is acceptable.

QUOTE (yen @ Jun 24 2006, 06:32 PM) *
Does that mean that the only way for me to output the results to my application (not to the test VI) is through those 2 strings? Can't I use anything else?


QUOTE (yen @ Jun 24 2006, 06:32 PM) *
I suppose I could output those strings to a mediator and use that to generate what I want, but that seems rather ridiculous. I would really rather add more options into my interface now (while still keeping the stings, of course)


The strings are to insure a minimum requirement and give the committee a standard interface to use for testing. They do not have to define the Functionality of the API. It is not required that the string outputs be the only way that the API transmits it's information. The string outputs must be a part of the API.

--------------------
There are only 10 kinds of people.
Those who understand binary and
those who don't.


Tags:
None
Go to the top of the page
+Quote Post
Yair
post Jun 26 2006, 07:52 AM
Post #6


Extwemely Active
*****

Grp: Premium Member
Posts: 1429
Joined: 23-January 05
From: Here
Member No.: 1431
Using LabVIEW Since:2003
LV:7.0 ,7.1 ,.
Israel Nothing Selected Nothing Selected


QUOTE (mballa @ Jun 26 2006, 06:35 AM) *
The strings are to insure a minimum requirement and give the committee a standard interface to use for testing. They do not have to define the Functionality of the API. It is not required that the string outputs be the only way that the API transmits it's information. The string outputs must be a part of the API.
That's what I wanted to hear. Thanks.

P.S. I missed some words in my reference to 6.1 - I meant to say that there is no way to make it truly independent from the calling VI and portable without writing external code and compiling it for every target (at least none that I could think of, which isn't to say that there isn't).

This post has been edited by yen: Jun 26 2006, 07:58 AM

--------------------
More than meets the eye...


Tags:
None
Go to the top of the page
+Quote Post
Morrie
post Jul 18 2006, 09:22 AM
Post #7


One hit wonder!


Grp: Member
Posts: 1
Joined: 5-July 06
From: Lecco
Member No.: 5502
LV:7.1.1 ,. ,.
Italy Nothing Selected Nothing Selected


what do you mean by "Timeout when mouse is idle" question.gif
the timeout will stop the mouse tracking by starting the application VI or it will clear it and restart the registration question.gif
(sorry for my poor english tongue.gif )

--------------------
BRING IT ON... ragazzo!


Tags:
None
Go to the top of the page
+Quote Post
Yair
post Jul 18 2006, 06:03 PM
Post #8


Extwemely Active
*****

Grp: Premium Member
Posts: 1429
Joined: 23-January 05
From: Here
Member No.: 1431
Using LabVIEW Since:2003
LV:7.0 ,7.1 ,.
Israel Nothing Selected Nothing Selected


QUOTE (Morrie @ Jul 18 2006, 12:22 PM) *
what do you mean by "Timeout when mouse is idle" question.gif
the timeout will stop the mouse tracking by starting the application VI or it will clear it and restart the registration question.gif
Since this isn't a mandatory requirement, that would be up to you. The way I understand it (or at least what I thought before I read that line) is how long does the cursor have to stay in one place before you stop calculating a movement.

--------------------
More than meets the eye...


Tags:
None
Go to the top of the page
+Quote Post
zen
post Aug 13 2006, 12:05 PM
Post #9


1 more post to go!


Grp: Member
Posts: 9
Joined: 6-July 06
Member No.: 5517
Using LabVIEW Since:2004
LV:8.0.1 ,. ,.
Japan Nothing Selected Nothing Selected


QUOTE (mballa @ Jun 14 2006, 05:28 AM) *
When the mouse button is released (MG Final) will then display "R1R".


I assume that MG Final indicator displays empty string in the very next loop after the mouse button is released. Is that right? Or MG Final should keep displaying the "R1R" in the following loops?

Zen


Tags:
None
Go to the top of the page
+Quote Post
mballa
post Aug 14 2006, 02:38 AM
Post #10


Extremely Active
****

Grp: Premium Member
Posts: 315
Joined: 6-August 04
From: Gurnee Illinois
Member No.: 584
Using LabVIEW Since:1997
LV:8.5 ,8.2.1 ,7.1
United States us_illinois us_michigan


QUOTE (zen @ Aug 13 2006, 07:05 AM) *
I assume that MG Final indicator displays empty string in the very next loop after the mouse button is released. Is that right? Or MG Final should keep displaying the "R1R" in the following loops?

Zen


MG Final should retain the last MG sequence ("R1R") until the mouse button is pressed again.

--------------------
There are only 10 kinds of people.
Those who understand binary and
those who don't.


Tags:
None
Go to the top of the page
+Quote Post
DRivel
post Aug 14 2006, 04:24 AM
Post #11


I've come back for more.


Grp: Member
Posts: 2
Joined: 5-May 06
Member No.: 4934
Using LabVIEW Since:1990
LV:8.2.1 ,7.1.1 ,6.1
Nothing Selected Nothing Selected Nothing Selected


Hi Folks,
Thanks for the challenge! (you've lured me away from the NI LabVIEW Forum)

Any way, it seems obvious (now frusty.gif ) that the VI is supposed to execute immediately, but as it's not explicitly stated anywhere, I thought I'd ask!(?)

I'm about to trash a VI that was designed to return a completed "Final" string - wouldn't terminate until a mouse-up or mouse-leave (or caller "Stop"). But the requirement as to the empty-state of Final, while mouse is down, implies that our VI executes immediately, so it seems our VI shouldn't wait for mouse events...

Thanks!


Tags:
None
Go to the top of the page
+Quote Post
Yair
post Aug 20 2006, 07:54 PM
Post #12


Extwemely Active
*****

Grp: Premium Member
Posts: 1429
Joined: 23-January 05
From: Here
Member No.: 1431
Using LabVIEW Since:2003
LV:7.0 ,7.1 ,.
Israel Nothing Selected Nothing Selected


How about sending confirmation emails or publishing the names and dates of the submitted entries so that we know that our submissions got through alright (or didn't)?

--------------------
More than meets the eye...


Tags:
None
Go to the top of the page
+Quote Post
i2dx
post Aug 21 2006, 06:22 AM
Post #13


(n0ob)²
****

Grp: Member
Posts: 756
Joined: 22-October 04
From: Duesseldorf / Germany
Member No.: 885
Using LabVIEW Since:2001
LV:8.20 ,7.1.1 ,.
ger_bavaria Germany ger_rhineland


QUOTE (yen @ Aug 20 2006, 09:54 PM) *
How about sending confirmation emails or publishing the names and dates of the submitted entries so that we know that our submissions got through alright (or didn't)?


all submissions are collected by mark ("mballa") and posted in a forum, which is not public. I do not assume that mark holds back any submissions wink.gif, so I can state that - if you did not get email yet, that your submission does not meet the minimum requirements - your submission is in the reviewing process and - if it's among the top 5 - put on the list for the public election

--------------------
don't take me to serious
my Website my ADO-Toolkit for LabVIEW™


Tags:
None
Go to the top of the page
+Quote Post
Yair