Real-time Robotic Arm Control With Blender

robotic_arm

Last year, [Justin Dailey] was coming down the home stretch of his senior year as a Computer Engineering student and needed to build a final design project. He always wanted to construct a robotic arm, and figured that there was no better way to legitimize such a project, than to claim that it was “homework”.

While he originally wanted to control the arm with a joystick, he had been messing with Blender quite a bit leading up to his final project, and thought it would be pretty cool to let Blender do the work. He started out by testing his ability to control a single servo with Blender, then slowly increased the complexity of the project. He prototyped the arm using cardboard, and satisfied with his progress thus far, began constructing the arm out of aluminum.

Once he had all six of his servos attached to the arm’s joints and wired to his Roboduino, he got busy constructing a 3D model in Blender. Using a few Python scripts, the movements inside Blender are translated to serial data in real-time, which is relayed to the Roboduino in order to control the arm.

Check out his site if you get a chance – there’s plenty of code to be had, as well as several videos of the arm in various stages of construction and testing.

SMS Gateway Lets You Twitter By Text Message

[GuySoft] threw together a cellphone-based SMS gateway that allows him to push text messages to Twitter. Once up and running, it can be used by multiple people, either with shared or individual Twitter accounts. At its core, this setup uses the cellphone as a tethered modem on a Linux box. The open source software package, Gammu SMSD, provides hardware hooks for phones running in modem mode. The package is already in the Ubuntu repositories but it runs cross-platform and can be downloaded from the project site. This gave [GuySoft] the ability to script a framework that checks for received SMS messages, compares the incoming phone number for a match on a saved list, then pushes the message from a confirmed number to Twitter via their API.

A web interface is used to register new numbers and associate them with Twitter accounts. On the back-end, [GuySoft’s] own Python script handles the translation of the message. You can download all of the code, and get more insight on setup from the readme file, over at the GitHub repository.

Smartphone Operated Garage Door Is Beginning Of Arduino Home Automation System

[Tim] is showing off the first step in his home automation projected with this smart-phone garage door interface. In the video after the break you can see him open and close the garage door with the touch of a button. There’s also an open or closed indicator that he can check when away from home.

An Arduino takes care of a portion of the control for this project. Like the post we saw yesterday, he’s using PHP code on a webpage to manipulate the Arduino via its USB connection in order to open and close the door using a relay. The door status is also monitored by the Arduino and sent to the PC over the serial connection. The computer uses a Python script to monitor the incoming data and update a text file which is merged into the web interface using a PHP include. Future plans for the system include adding control for heating and air conditioning systems.

If you’re looking to do something like this but wirelessly here’s some advice on ditching the Arduino and using an XBee module instead.

Continue reading “Smartphone Operated Garage Door Is Beginning Of Arduino Home Automation System”

Writing Python Drivers For Input Devices

[Stealth] put together a post explaining how he writes drivers for input peripherals. He’s using Python which makes the process fairly painless (we’ll get to that in a minute) but the value of his post is in the explanation surrounding how to interpret the data. Once you know how the communications are coming in from a device you can write the driver using any language you want. [Stealth] wrote in to let us know about this post after reading the PlayStation 3 Sixaxis controller sniffing hack. He’s pretty much doing the same thing but the background information is much more bountiful.

There are a couple of prerequisites to the process. First, [Stealth] is working in a Linux environment. That’s not to say you couldn’t do this on another OS, but you’re going to need to do some research to find out how to tap into the data stream from the device. Secondly, the input you are working with must already be set up and working on the machine. That means if there isn’t any support at all for the peripheral (in this case a USB joystick) you’re not going to be able to sniff the commands. That being said, a short Python snippet is all you need to dump the raw data coming in from the device. With data in hand it’s time to do some pattern hunting. As you start to figure out the size and scope of the incoming packets you can try out your own code to make sure you’ve got it right. Check out the demo video after the break which features a joystick button mapper written in Python.

Continue reading “Writing Python Drivers For Input Devices”

All About PS3 SixAxis Controller USB Communications

[Austyn] is currently working on reverse engineering a PlayStation 3 SixAxis controller’s USB communications. You may be thinking that this has already been done but [Austyn] was unable to find useful source code so he’s started his own project called libopenaxis.

The process he used to sniff out USB communications makes for an interesting read. He utilized GlovePIE to get the USB request block for the controller. With that in hand he grabbed the Python script used in a DIY Kinect hacking tutorial to start dumping controller data. With each keypress the script reads out the full data packet, which is used to figure out how the data structures are organized.

The project has come as far as knowing all of the data types, but right now the purpose for the majority of those variables is unknown. Hopefully the blanks will be filled in over time. Two things are for sure; if you’re interested in writing Python code that can communicate with PS3 controllers this is a great source of info, and the Kinect hacking that was so fun to watch over the last few months is still bearing fruit.

Walking Motion Analysis Using Wii Remotes

WiiGait is not a political scandal, it’s a project that records motion data while walking. [Bilal Chishti] and [Zassa Kavuma] are strapping a Wii remote onto each leg and recording the sensor data while making video of the walker at the same time. The two are using an Ubuntu box to pull the sensor data from the Bluetooth-enabled devices and utilizing its built-in webcam for the video. They graph the data for each axis and we’re sure that syncing up data anomalies with the video is just a matter of matching timestamps.

So what good is this? The creators are keeping us in the dark about an end-goal for collected data; this may just be for the experience of using the hardware. But we could see it having uses in making distance runners more efficient, or teaching that bipedal robot how to balance.

Continue reading “Walking Motion Analysis Using Wii Remotes”

Modern Freaking: Pull Phone Numbers From YouTube Audio

[Charlie X-Ray] is having some modern fun with the phone system by pulling dialed numbers from the audio track of YouTube videos (translated). The first step was to find a video where a telephone is being dialed and the sounds of the keypresses are audible. You can’t tell those tones apart, but a computer can. That’s because each number pressed generates a combination of two out of seven closely related frequencies. [Charlie] isolated the audio using Audacity, then wrote a python script to generate a spectrogram like the one above. By matching up the two dark nodes you can establish which two frequencies were played and decode the phone number being dialed. So how does this work again… find audio of a phone being dialed, decode the number.. profit?