OculusJuggling

= Oculus Juggling = Take an Oculus, take a kinect, take two phone (portable networked accelerometers).


 * Using ogreoculus.
 * Created a package to wrap libovr in fedora.
 * Fixes of ogreoculus:
 * original https://bitbucket.org/rajetic/ogreoculus
 * fork: git@gitorious.org:ogreoculus/ogreoculus.git (http://gitorious.org/ogreoculus)


 * Kinect
 * using the original Microsoft Kinect
 * couldn't get the 1d27:0601 to work on Fedora, seems to be a kernel issue - not recognized as a video device. Probably stupidly simple, but just quit wasting time and switched to the older and less nice (huge compared to the Asus) device.

= Status, how to get it = PC software:
 * https://git.gitorious.org/ocolus-juggling/kiss3d.git
 * you will need rust 0.8 (being rebased to 0.9-pre, changes like float removed, need feature toggling for globs, struct invariants and macro rules, and NumCast returning an Option).

Kinect not used yet.

For android software see the beast below.

= Oculus notes = Note: libovr is not needed, there is OpenHMD - although I haven't packaged it yet, but it is boost licensed. And there is no need for the demos.

Possible development systems: Recommended by SDK Nvidia 650M +
 * Dell Inspiron 17R SE 7720-36308G14GSW8 (ksp)


 * BGE - Blender Game Engine.
 * blender fix required (is this going upstream?): http://www.pasteall.org/43512/diff
 * hidapi to be fedora packaged
 * python-rift wrapping OpenHMD, both to be fedora packaged.
 * tried them both, they work fine. (which means I also had to build hidapi)
 * libvr BSD licensed, didn't try it yet.


 * panda3d is getting support - http://www.panda3d.org/forums/viewtopic.php?f=1&t=16203

= Random Oculus stuff =
 * FireBox - snow crash inspired internet browser. Works for demo pages, but still really cool.

= Kinect notes = Hand tracking: ros, or pcl. pcl is packaged for fedora, is lowerlevel. do either have a python wrapper? skeltrack also looks good, it's glib. I could use glib+python for everything. Or maybe vala. Rust won't work right now with glib. It does have glfw wrapped.

Skeltrack

 * http://www.joaquimrocha.com/category/skeltrack/
 * https://github.com/joaquimrocha/Skeltrack

ROS
http://wiki.ros.org/diamondback/Installation/Fedora

Hand Tracking:
 * http://wiki.ros.org/mit-ros-pkg/KinectDemos/HandDetection?highlight=%28hand%29|%28detection%29
 * http://wiki.ros.org/mit-ros-pkg/KinectDemos/FingerDetection

PCL
http://www.pointclouds.org/documentation/tutorials/

Hand detection papers

 * http://www.stanford.edu/class/ee368/Project_11/Reports/Tang_Hand_Gesture_Recognition.pdf
 * detect skin via RGB (P(S|RGB) via collected works)
 * normalize light (their own ad-hoc approach) for this P(S|RGB)
 * use depth information to cut further, P(H|D) where P(H)=P(S), H being hand, S skin.

Rust OpenGL

 * http://www.reddit.com/r/rust/comments/1lof5b/bjzglfwrs_github_glfw_bindings_for_rust/
 * https://github.com/bjz/glfw-rs
 * https://github.com/sebcrozet/kiss3d/issues/7

Panda 3D

 * http://code.google.com/p/stableorbit/source/browse/#svn%2Ftrunk
 * Includes OR support (Oculus Rift)


 * http://www.panda3d.org/download.php?platform=fedora&version=1.8.1&sdk
 * Fedora packages available. But not upstream (license?)

= sending android accelerometer data =

BY SALACIOUS CRUMB, BOSS PROGRAMMER



eclipse project is at git@gitorious.org:juggler-android-code/accelerometer.git

We sent the accelerometer info over UDP. This is a universe of socket ports, parallel to the 'TCP' universe of sockets which are guaranteed to arrive and to arrive in order. UDP is apparently better for this project because its faster, we don't care about dropped data, and out-of-order is ok.

To get an android phone's IP for testing purposes (and to get the host to allow the phone's IP to open a socket) you can dial "*#*#4636#*#*" to open the Testing menu. Then click WiFi information, then WiFi Status.

To check if the socket business was working ok we used 'ncat' the 'networking swiss army knife' on the windows pc where i was compiling the android code in eclipse. It would've been more useful to run it on the android: this is apparently possible. On the way I discovered the use of 'monkeyrunner' to run remote commands on your android, iiuc.

The info is sent as 'RIGHT' or 'LEFT' since the idea is to have two accelerometers, one in each hand, followed by

Ax, Ay, Az, time

in m/s^2 and milliseconds

Interestingly, as soon as a ball is released from one's hand, an accelerometer upon it 'sees' zero acceleration while an external observes sees it undergoing one g acceleration. And alternatively, when the ball is still it 'sees' one gee while the external observer sees zero!

SALACIOUS CRUMB, BOSS PROGRAMMER, OVER AND OUT

Testing on PC
Use socat:
 * socat UDP-RECV:5000 -

fedora android howto

 * https://fedoraproject.org/wiki/HOWTO_Setup_Android_Development

= Appendix =

libovr.spec
Name:		LibOVR Version:	0.2.4b Release:	1%{?dist} Summary:   Oculus Rift VR SDK Group:		User Interface/Desktops License:	Proprietary URL:		http://developer.oculusvr.com/ Source0:	http://static.oculusvr.com/sdk-downloads/ovr_sdk_linux_0.2.4.b.tar.gz BuildRequires: libudev-devel libXext-devel mesa-libGL-devel freeglut-devel libXinerama-devel Requires: libudev-devel libXext-devel mesa-libGL-devel freeglut-devel libXinerama-devel %description Oculus Rift VR SDK %prep %setup -q -n OculusSDK %build make -C LibOVR %{?_smp_mflags} %install mkdir -p %{buildroot}%{_libdir} cp LibOVR/Lib/Linux/Release/%{_arch}/libovr.a %{buildroot}%{_libdir} mkdir -p %{buildroot}%{_includedir}/LibOVR cp -R LibOVR/Include/* %{buildroot}%{_includedir}/LibOVR/ %files %{_libdir}/libovr.a %{_includedir}/LibOVR %doc %changelog * Sun Sep 8 2013 Alon Levy  - 0.2.4b-1 - Initial release
 * 1) Note: source requires a license key, real URL is of the form: ...?AWSAccessKeyId= Signature=