Rocco – Code and Slow/Fast Movement

Rocco is built on an Arduino, which is a development board and environment that can read data from sensors and run code written in C.  The code for this project is located on GitHub here:
https://github.com/levans88/Rocco

The main focus of the code right now is to read input over a serial connection and execute appropriate functions (mostly movements) based on the characters received. The core function handling movement is “motion”.

There are no inverse or forward kinematics involved yet, only motion presets which are defined in the motionPreset function. Destination angles are set in that function as well and passed to the motion function to be executed.

The motion function uses the servo_interval variable to determine how many degrees each servo should move at a time on the way to completing a motion. It also uses the servo_speed variable to determine how frequently each servo should move.

For an interval of “01” (one degree, the most granular), a speed of “010” (10 milliseconds) works best.  Here is an example of Rocco moving slowly (with an interval close to 01):

For the fastest movements, the maximum interval value of “32” (32 degrees) can be used along with a speed of “001” (1 millisecond).  There is very little observable difference in anything lower than 25 milliseconds for fast motions.

Rocco – A Hexapod Robot

For a few years now I have been seeing hexapod robots show up on sites like Hack-A-Day and in my search results.  Some are custom, built from scratch robots made with wood, or professionally cut aluminum, and others are kits that can be bought and assembled from RC/Hobby shops and robotics web sites.

Here are some custom examples:
http://makezine.com/projects/chopsticks-the-spider-robot/
http://orangenarwhals.blogspot.com/2011/07/strange-and-beautiful-hexapods-spider.html

Here is a kit example from Lynxmotion:
http://www.lynxmotion.com/c-117-phoenix.aspx
https://www.youtube.com/watch?v=ryO03bQk3m4

I was successfully avoiding building my own hexapod until I saw one with a Leap Motion controller.  I haven’t had a lot of interest in touch and gesture technologies lately, but this is the perfect use for a gesture detecting controller like the leap motion:  http://hackaday.com/2013/08/06/leap-motion-controls-hexapod-with-hand-signals/

So, armed with more ideas and questions than anything else, I set out to build my own hexapod robot named Rocco, and I will document the project here.  I am catching up on documentation, and a lot of work has already been done.  I will make separate blog posts for different project components.

You can find the code, current issues, and other project documentation on GitHub here:
https://github.com/levans88/Rocco

I designed the robot in Tinkercad with the idea of cutting out all the pieces from plexiglass by hand.  The model is available here:  https://tinkercad.com/things/i91TkKbNDc9

The initial concept model is also on Tinkercad:  https://tinkercad.com/things/gs7jj3mGE9D

Final Touch Screen Video

The project is complete!  This may be the last post regarding the touch screen, though it is possible that someday it will get its own mini ITX board.

Also, there was an article about a partnership between AMD and BlueStacks that is making Android apps available on the PC (if you have an AMD chip).  I downloaded one and in its menu there was an option to enable multitouch.

Link to Article
Link to Android Apps Through AMD

Video Sections:

Hardware (off), Hardware (on), CCV Tracking, CCV Calibration, World of Goo,
Piano Flash App, Solitaire, Plants vs Zombies, Fire Flash App, Paint, Paint Flash App, Microsoft Surface Globe, Spore Creature Creator, Cooliris, Photo Flash App, Lemmings (Lemmix), Bejewled, BumpTop, Microsoft Surface Collage, Microsoft Surface Lagoon

Functional Cosmetics

I successfully added the black poster board to the screen face over the past couple of nights.  It will block a lot of the LED light from shining in the user’s eyes.  There will be a border on the back as well, to block the visible light from going to the camera.  I used poster board instead of spray paint because it is much more removable should I change my mind.  Here is the difference between border and no border:

Touch Screen v2 Update 5-6-2012

Updates:

  • Shell (enclosure) built
  • PS3 eye camera modified with a 2.1mm m12 lens from PeauProductions
  • Laser control assembly mounted
  • Camera mounted
  • Laser safety perimeter built (but not safe yet, needs to be blacked out)
  • Tested and working! (torn down again though so I can black out some parts)

This is a video of the “Fire” flash demo app, I believe it came from the mtmini package.  In the first part of the video it is running in windowed mode, so the touch points are offset.

Photos of the screen after this weekend’s upgrades:

Touch Table v2 Update

I have completed quite a few changes to the touch table lately.  There was a height problem with the lasers – I’m not sure it is completely fixed but it does seem a lot better.  I had to add a layer of thin plexiglass below the screen layer, but not the lasers, in order to effectively lower them.

Other current progress:

  • LCD ribbon board has been mounted
  • LCD PCB has been mounted
  • Laser control assembly created
  • LCD control assembly planned
  • LED ribbon broken (ripped contacts loose…)
  • LED ribbon fixed (reattached contacts…)

Each laser can be turned off or unplugged individually, or all can be turned off or unplugged together.  Also, the laser power supply now has an actual plug.

My next step is to make an assembly to control the LCD and contain all the ports, including the camera.  Here’s a rough view of what it will contain (it may or may not be attached to the laser control assembly).

Touch Table v2

My inverter board died and I had to find another method to edge light the acrylic, so now, the main surface of the table is a back light itself.  There is an LED ribbon around the edge and the edge has been sanded and torched with a MAPP gas torch so it is smooth and transparent.  I’m still working out how to put a barrier around the edge for the lasers and the whole thing is scotch taped together at the moment.

Half-QWERTY (Mirrored) Keyboard

Finally getting around to posting this… a while ago I started work on a “half QWERTY” keyboard or “mirrored” keyboard script.  The script makes the left half of the keyboard equal the right half of the keyboard when the space bar is held down (instead of just pressed).  The idea eventually evolved and I added a few more functions for convenience such as WASD arrow keys, WASD mouse control (basic), and script on/off control.  It’s necessary to be able to turn the script on and off because as a consequence of using the space bar as the modifier for all the keys, there is small delay on some characters that causes problems when typing two-handed.  It is surprisingly easier than expected to learn how to type this way, and in fact it is almost normal.  A few runs through a typing tutor like Mavis Beacon helps a lot though.

Side note, one of the keys in the script calls an application named “Everything”.  Everything is a replacement for windows search.  In Everything, you just start typing the name of what you are looking for and it narrows down the search as you type.  There is no search time, and no index time.  I think it is a brilliant application and it can be downloaded here if you’re interested:  http://www.voidtools.com/

The script was made using AutoHotkey (specifically AutoHotkey_L) and the SciTE4AutoHotkey editor.

*Updates 3/1/15*

-I have relocated the hqwerty6.zip file to my personal site.  It can be downloaded here:
http://www.lennyevans.net/files/hqwerty6.zip

-AutoHotKey_L appears to be the main branch of AutoHotKey now according to its page on GitHub:
https://github.com/Lexikos/AutoHotkey_L

-I have created a GitHub repository for the Half-QWERTY project here:
https://github.com/levans88/Half-QWERTY

-The AutoHotkey website has moved to:
http://ahkscript.org/

-The SciTE4AutoHotkey website has moved to:
http://fincs.ahk4.net/scite4ahk/

List of keys and corresponding functions:

LCD Back Light Revival

I finally got tired of my main PC monitor flickering and turning off on me. I decided to open it up and see what the problem was. I suspected bad capacitors, because that is a cause for the symptoms it was experiencing. The screen would “flicker” when first turned on, until it would reach a point that the back light would shut off, but the power would remain on (I could tell because the power light would remain on). Turning the screen off, and back on AGAIN would make it show for a few seconds and shut off once again.  This would go on for about five minutes, after which the screen and back light would both become available and turn on correctly.  So, I pulled the inverter board to take a look.

This is the inverter board from my poor broken Samsung 216BW.

When inspected a little more closely, the problem is as expected and pretty obvious (if you know what to look for).  Puffy, leaky capacitors.  Seriously leaky.

So, it was time to order some parts and bust out the soldering iron.  These kind of capacitors are “Low ESR Electrolytic”.  They can be ordered from places like Parts Express or MCM Electronics, but I got mine from eBay.

Other points of interest:

  • ***BE CAREFUL HANDLING POWER/INVERTER BOARDS***, don’t touch the leads on the giant cap or any other parts that you aren’t sure about.
  • These kinds of capacitors ARE directional, take note of which way they were facing before you remove them (unless the board is marked).  The negative side of the caps are labeled as such.
  • When removing the bad caps, don’t rip them off the board, use the soldering iron on the back side while pulling on the front, one leg at a time if necessary.

Inverter board after repair, with good flat-topped capacitors:

Success!  This did in fact fix my monitor, good as new! Here is a video of the repair process: