Posts Tagged ‘Cory Arcangel’

Whitney Dancing Stand Development, Part 3

Tuesday, April 26th, 2011

What a marathon.
So, in the last week or so we solidified the designs and there is a horde of 20-somethings with cool haircuts in my apartment running power drills.
— Nixed the PID loop in favor of a stepper specific approach. We now calculate error in steps once a turn and adjust for it.
— Added vibration dampening grommets to the motor mounts to keep noise down.
— Added covers for the AC lines (so you can’t climb under the new media art and lick mains current)

Here’s one underway. That vented thing is an enclosed switcher to run the stepper and electronics.

Building it...

And here’s good old Lucky Number 13, all set to go:


Lastly, before kicking these things out the door I made some videos of them correcting for errors. By which I mean “beating them up”. If you get a chance to do this at the Whitney and the guard isn’t looking, you should do it. More videos on the youtube channel.

Beer o’clock,

Whitney Dancing Stand Development, Part 2

Tuesday, April 19th, 2011

Sorry for the short posts. These are long days.
The real dancing stand controller boards are here!

Legit Stand Boards

The real magnetic position sensing encoders, too:

Legit Encoders

The other side of those encoders is a magnet (read the datasheet if you’re curious — these parts are expensive and awesome and totally worth it), and that magnet has to be centered very precisely over the IC. Any eccentricity or slop or variation in Z height will make for bad accuracy. You wouldn’t guess from the datasheet but these parts are actually pretty forgiving. Nonetheless, I had a buddy of mine (Joe, over at BreadBox Studio) turn me some ABS magnet holders which keep the magnet aligned with the shaft of the stand. They also space the magnet off the shaft itself (the shaft is steel and screws with the magnetic field as the encoder wants to see it) and provide some registration holes. The magnets are press fit into the ABS turnings. Like so:

Magnet Holders

Thanks, Joe! Now I gotta crank out 17 and make sure they all do what they should. Wish me luck….

Whitney Dancing Stand Development, Part 1

Sunday, April 10th, 2011

So Cory has a bigass show coming up at the Whitney this summer, and I’ve got SEVENTEEN!! dancing stands to build. They’re different from the last batch in that they have to run synchronously. The idea is to use a PID control loop and sync them via RF. They run on steppers, mostly because it was easy to find steppers that were torquey enough for the application and still fit under the dancing stand easily. The MCU is an Atmel, the RF link is by LINX, and the stepper driver is a TI DRV8xxx part.

Here’s the protos:

Stand Controller Proto

The system has a lot of slop, and I decided to do positional feedback using an absolute position sensing magnetic rotary encoder. This one is by Austria Microsystems. The specs on these are INCREDIBLE, but mounting them takes serious care to get that accuracy. I made a bunch of jigs, you can see this one all strung up under the stand’s driven leg. We’ll see how well they work…

Encoder Jig

Oh, yeah. And we made more bowling controllers. Or mostly my assistant Daniel did. These guys are really getting pretty cookie-cutter:

Moar Bowling

I feel pretty good about the protos of those stands, but my crystal ball predicts something will be screwy. We’ll see.

PS2 Fiddling Part 2

Thursday, December 16th, 2010

Looking for trouble on the PS2 Controller

Getting the PS2 data to playback correctly took some doing. The first problem was getting the controller synced to the PS2, which was necessary to handle the configuration streams. “Modern” Ps2 controllers can be set up in lots of different ways — as a standard digital controller or all flavors of analog. You can tell them (if you’re a PS2 or l33t haXX0r) to send stick data, analog button pressure, to configure the vibration motor in different ways, etc etc. So, when the PS2 does this, our doppleganger controller has to respond correctly. The big PITA there is that the PS2 will send any number of “don’t care” digital reads before this happens. In the terminal above I’m counting polls before we switch over to analog and begin a pre-determined configuration routine which is similar from game to game.

The next problem was buffer overflow. I used to use these fancy Atmel Dataflash AT45DB642D parts to record data, and they ruled. They had onboard RAM buffers and generally took care of erasing and writing flash memory at the same time. Then every distributor ran out of them. [2011-07-06T12:42:33+00:00 — they’ve been back for awhile now, thankfully] So I made a daughterboard and used a “peoples’ flash memory” IC by SST. It was a lot more like “normal” [read: annoying] flash in that you had to handle buffering and sector erasing yourself and it was painfully slow. This coupled with the fact that when this one bowling game used the analog button pressure (O GOD WHY?) the controller was spitting like 20 bytes a read led to trouble. Specifically, I needed to buffer all the data coming off the controller while the erase happened and that could take seconds. I ended up with a 3-way ping-ponged buffer AND compressing the data so that it would only log CHANGES in controller readings. This did the trick. I felt smug.

Here’s the pretty pretty result:

Throw some dees on it

PS2 Fiddling Part I

Tuesday, December 14th, 2010

Mucking with the serial stream on the PS2 Controller

So I’ve been building a bunch of video game controller controllers (game TiVos we call them) for Cory Arcangel for a big Barbican show. It’s pretty much everything from the Odyssey / Atari 2600 to the PS2. Basically, their job is to play back (repeat) a played video game in an artsy way, and to talk to a host computer for file transfer, etc etc. Most of them work by snooping the active-low buttons during the recording, then pulling those buttons low during playback at the right time. There is NO WAY this stays in sync with the system, but that kinda wasn’t the point.

However, it turns out for the PS2, that some of the bowling (yes, bowling) games Cory wanted used the ANALOG BUTTON PRESSURE coming off the controller. I was already an advocate of reading and replaying the serial stream from the controller rather than messing with the switches, but it turns out to do these games you pretty much have to do that. So, here I am, learning PS2 serial protocol. There are tons of notes online on this, but I especially liked and used Andrew McCubbins’ “PSXCONT” notes (though I couldn’t find his source code). The UPCB project, as usual during this video game project, was very helpful. Micah Dowty’s notes were really helpful. Lastly, the curious inventor PS2 site rules.

There had to be a lot of bus turnaround kind of thing to both read and playback the PS2 stream, so I needed an external MUX which I made from a 74HC157.

Armed with all that, I hooked up the TiVo, wrote some test code, let her rip, and watched the serial stream for boo-boos using the Saleae Logic analyzer.

What the analyzer had to say

There were lots, and they had to do with non-deterministic boot times and the initialization sequence it takes to convince the PS2 that the controller is legit. More later.