Monday, March 2, 2015

Tracker free video analysis and modeling tool

https://www.cabrillo.edu/~dbrown/tracker/

https://www.youtube.com/watch?v=La3H7JywgX0

Friday, February 13, 2015

Using Freelance

To get an idea about how useful a freelancer might be, do the following:
* The initial stage should be a prototype that can be finished in two weeks. It will be used to update requirements/design and decide on GO/NOGO
* You can specify the job as cloning an existing app. It should be doable in two weeks. Example: The puzzle game in Android. You could use the code produced to learn new things. Or you could ask them to clone Save My Cheese. It might give you fresh ideas about how to solve the problem.

Thursday, February 12, 2015

ISS Globe

http://sciencehackday.org/project/iss-globe/:
"...the ISS Globe continuously shows you where the ISS is overhead. The team of sciencehackers used a translucent globe, two hobby servos, a MakerBot for 3D printing a few gears, a Teensy microcontroller and a laser that was mounted inside of the globe. Firmware controlled interaction between a laptop and the servos and a Python client controlled interaction between the microcontroller and the servos. The end product was a globe with a glowing red dot that would show you where the ISS currently was throughout the day."

Monday, January 26, 2015

Game: Save My Cheese


GitHub repository
Concept document
Class diagram
Sequence diagram

Royalty free mouse clipart

Description: Mice try to reach cheese. User prevents mice from reaching cheese by blocking their path with puzzle pieces. End condition: A mouse reaches the cheese (FAIL) OR all pieces are in place (SUCCESS).

Welcome screen:
* Start game button --> Game screen
** Exit button --> Quits game
** Pause button (after mice are added)
** 3-2-1 counter (after mice are added)
* Help button --> Help screen
** Help text and image
** Back button
* Settings button (after mice are added)
** Back button
** Mouse number
** Mouse speed
** Map size
* About button --> About screen
** About text: Şamil Korkmaz, copyright 2015, link to blog
** Back button
* Advert banner on top
** Third party library
** Bank account --> PayPal account?

* Puzzle:
** Piece = Filled polygon
** Construct pieces
** Breakdown of pieces into cells.
*** The smaller the cells, the closer the mice can get to the piece but the slower the pathfinding.
*** For each cell on grid check if piece contains the center of that cell. If it contains, mark the cell as belonging to that piece.
** Move pieces with mouse:
*** On mouse left click, detect piece that contains mouse cursor location.
*** On mouse drag: Update detected piece location with mouse location.
*** On mouse release, calculate distance between piece and its snap location.
**** If distance is smaller than tolerance AND there is no mice inside that snap area
***** Set piece location = snap location
***** Set cells that belong to this piece as blocking

* Pathfinding:
** Use A* algorithm
** Do we need two separate threads (one for GUI, one for calculations)
** Must be able to find path within one game loop cycle.
** Draw mouse and cheese. Mouse orientation = movement direction. Make orientation changes smooth using linear interpolation.
** Create game loop:
*** Mice are moving at preset time intervals along their path with preset distance intervals (speed).
*** End condition: A mouse reaches the cheese OR all pieces are in place.
** The screen is a two dimensional grid with each cell being a node.
** Mice cannot pass through blocking cells.
** Mice update their path to cheese each time the user adds a new piece.

* Android & Google Play Store
** Download development environment, code puzzle with Nexus 10 screen size in mind. Mapping of mouser press/drag/release to touch controls. End condition: All pieces are in place.
** How do you claim copyright and handle disputes?
** Subscribe (25?)
** Upload puzzle with one level (v1) to Play Store, verify that you can find it and install it on tablet and phone.
** Update (v2-)


Test Cases:
* Puzzle: Three pieces
* Pathfinding:
** One mouse, no blocking cells.
** One mouse, simple wall.
** One mouse, dead end case (path has to U turn after initial trial).
** Two mice start from
*** top/bottom.
*** left/right.
* Is advert banner working? Does it deposit money to my account?

"Save my cheese" version plan:
v0.1: Puzzle level1 with Java on Windows8
v0.2: Mice with pathfinding on win8 attacking cheese + Level2
v0.3: sound effects (Argun'un sesleri - "buudan gidiyoo") music (midi of classical pieces, VogelHochzeit)
v0.4: Flash bomb causes mice to go in random directions for a couple of seconds.
v1: Nexus 10,  Samsung Galaxy S4 screen size
v2: Advertorial integration (small banner on top of welcome screen)
v3: New levels + blog dedicated to game (update link in About screen)
v6: dificulty settings:
* mice number
* mice speed
* mice intelligence: Stupid mice will mimic the path algorithm exactly, smart mice use the final path.
* map size
v7: blinding flash (causes mice to move on last direction) & stun bomb (causes mice to stay in place for dt)
v8: new levels
v9: better graphics/soundFX/music (mice move their tails, squeeking increases as they get closer to cheese)
v10: Mice wander randomly until they detect cheese smell and home in on smell. Pieces prevent smell from escaping
v11: Support other screen sizes/resolutions
v12: Cats that hunt mice. Proportional control.
v13: Mice avoid cat.

UML Diagrams: Initial design must be easily extensible to cover the capabilities outlined in version plan. Discuss how that will be done with examples.

Wednesday, November 26, 2014

Efficient video saving for stationary cameras

Our stationary IP camera's image has most of time no action (I did not activate motion detection trigger). Even when there is movement it covers about 5% of the image:


To conserve space, develop an algorithm that only saves the changing portions of the video frames and plays them back smoothly. Write a web application that at prespecified time periods (e.g. every 0.25 seconds) grabs frames from camera's ip address and saves filtered data to a cloud storage.

Tuesday, November 18, 2014

Active noise cancellation project

Just phase shift original noise or characterize signal and invert it. FFT?

Update 13th Dec 2016:
Use smartphone mic and processing power to send noise cancelling signal to headphone. See reddit on why there are no noise cancelling apps:
...biggest one is that your cell phone microphone is monaural while noise cancelling headphone have to have two independent pickup channels to effectively cancel out the outside noise
App on Google Play: Noise Canceller