User:Eb4890

From London Hackspace Wiki
Revision as of 20:37, 18 December 2011 by Eb4890 (talk | contribs) (Things to do)
Jump to: navigation, search

Contact

My mobile phone number can be found in my babbage share


Interests

  • Reverse engineering the laser cutter software
  • nodejs based social thingmy
  • Augmented Reality
  • Human-computer interface/wearable computers
  • Random silly projects
  • Cutting Stuff with lasers
  • Odd low-level security software
  • Machine Learning
  • Weird Governance schemes
  • Shiny things
  • Viruses/synthetic biology
  • Chemistry

Android Robotics

See cellbots for current work.

Why

Android phones/tablets will get stupidly cheap in the future. They also have a bunch of sensors/wireless comms and the ability to connect to random micro-controller based usb devices. They also have GPUs to give a bunch of parallel processing power for a low price, althought that can't be accessed nicely at the moment.

They do compete somewhat with raspberry pis (raspberry pis being stripped down phones without the sensors/displays etc). I expect two ecosystems will emerge, with android phones and the OS being used for robots that need comms and lots of phone functionality, with micro controllers being used as for autonomic procedures and low latency apps. Raspberry PI and rooted phones with non-android roms will be used for situations where you need lots of processing power close to the metal.

Things to do

  • Decide on a method taking advantage of multi-core and GPUs on android. This either means OpenCL, Render Script or hackily with openGL. OpenCL is more cross platform but Render Script is working on android today (at least for multicore);
  • Mod OpenCV for android using the above PP framework.
  • Port of PCL for android with above considerations.
  • Check the possibility of flashing the arduino/microcontroller attached to the android phone over the ADK link (would allow the phone to upload different low latency programs dependent upon task).
  • If opencl can we implement opencl for android ourselves? In Render Script, NDK?
  • Speech recognition using the PP framework
  • SLAM/Fast slam using above technologies
  • Machine Learning library


Why are we re-implementing lots of technologies? Because they are often based upon intel technologies such as SSE, which the ARM doesn't have. Lots of these things will be of dual purpose, not only for robotics, they will enable better augmented reality apps and google goggles type apps without having to use the server giving better latency and off network use.

On the plus side we can re-use parts of C code if we re-implement it in renderscript. More realistically:

  • Intent to Ros message translation is some fashion.
  • Learn renderscript- find simple CV projects to do
  • Integral images for haar like feature detection?
  • GPUcv has GLSL programs for CV? Will work on android? Maybe do pure java port? Integrateable with ROS? Should be.
  • Too many questions marks?

Things to investigate

  • Rosjava - http://code.google.com/p/rosjava/
  • RenderScript - http://developer.android.com/guide/topics/renderscript/index.html OpenCL alternative available now? Ziilabs has opencl running. Renderscript seems to be nicer in that it allocates jobs to cores at run time (rather than fixing them) so can use multi-core as well as GPU but it can't currently use GPU even in ICS. It depends how long it takes Google to implement renderscript vs opencl. Ziilabs only does opencl for their chips I think....
  • Integration with Kinnect? Probably need a rooted tablet

Work in progress tutorial on inkscape

It is a bit of a pain in the ass to get inkscape to output something useful to laser cut if you are doing anything marginally complex.

Trace Bitmap is your friend

  1. Use A4 size. Some people swear by this to get the dimensions right.
  2. Objects such as Text are not exported. Convert them to paths Paths->Object to paths.
  3. Different bits of the svg are not aligned correctly. Select all then Path-> Combine to make it all one object. Then use a dxf editing program to put the different bits of the object in different layers. As the laser cutting software is not the best for doing this.