|
|||||||||
______________________________________________________________________________ Prototype 2: Narrativity, Structure and Sensing This time around I'm getting more in depth with the table imps. A story will play itself out, the outcome dependent on the users' actions. The narrative development updates are coming along. I've also talked to Kate about the project and wanting to allow users to move the objects on the table without disrupting the animation, and she recommended using video sensing. Christian is helping with this, and recommended infrared for the camera to detect, so the imp shadows won't confuse the video - we just need to detect people-shadows and the objects. There's also progress on the structure of the table, which in the prototype version was looking a bit bulky and obtrusive. A good clean kiosk-like design needs to be used, so nothing distracts the user from the table top. ______________________________________________________________________________ Prototype 1 Presentation I took video of the table in action. One issue with this sort of presentation is that people aren't sure what they're seeing - which speaks to the fact that this project really confuses 2D and 3D perception. In any case, the video is at least a taste of what the table project is about. I'm not sure if I have the videos loaded correctly online - I need to get more technical help on that. ______________________________________________________________________________ Almost to full prototype I worked on my motors and PIC code. For some reason, SEROUT was causing my chip to stop working all together. So finally, I went with just having the motors react when the sensors are touched, instead of when data comes in. The pulseout widths are better now, giving the movement I want. I cleaned up my processing code and got my qprox sensors recalibrated. I also got the motors fully mounted, with extra extensions so they can push up the plate. And the table a bit more readied. And a test with the projection. I found out that my calculations were off with different projectors - I had no idea they varied so much with the projection size and brightness. Anyway, all these things took from 10am till 9pm. Another thing I've learned through this process is that everything takes 3 times longer, at least, than you think. So, on to processing. In ActionScript, needed to combine movies with loadMovie (not attachMovie, which didn't export). Exported to Quicktime, but found out that Processing needs a Quicktime Video export from flash. This finally worked, but Processing won't allow a display at full screen size, which I need to get the animation to lay out correctly on the table. Argh. 1am. When I talked to Dan Shiffman today, he said that I could try loading a series of images too. So I did that - I loaded 50 images, which makes for a short animation. But they needed to be renamed because of Processing wanting a straight image sequence numbering system, and Flash exports as 4-digit. Anyway, I have my Processing code at the ready, and my PIC code is set too. Now to get back to the presentation part of all this... In order to show all the animations, I'll need to do it with SWF, but now they're all in separate movies. So I'll save and attach them with ActionScript. ______________________________________________________________________________ Serial to Flash 10am: I think I have it all figured out. With the code I researched and wrote about in the last entry, it seems like the Serial to Flash thing will actually be easy. Wow, a long day of futility with the serial-flash issue. But hey, I learned a bunch of stuff: Oh, I also did some user testing and found that people 1) don't know it's an interactive table, 2) when they do, they pick up the objects, don't just touch them), 3) if they do just touch them, it's on places on the objects I wouldn't have guessed. ______________________________________________________________________________ Serial to Flash Communication Okay, so the 18F452 PIC microcontroller settings need to be 19200 Bauds, N, 8, 1. Some good info on what the code should look like is on DanO's site. The code will send out the qprox values as text (DEC qproxVar1, etc). But, as Dano mentions, Flash won't like the 0 value, so I'll need to have qproxVar1 = portb.7 + 65 or something to make it readable. And then 0 at the end to signify that all the bytes have arrived. So, something like:
The microcontroller will be connected to the serial connector then the USB Keyspan serial adaptor to my Mac. Tom has some notes on this on his site. Then, the server script I got from Hernando Barragan should get that incoming data from the USB port. Then, ActionScript code should detect the incoming data and put it in a string. (See Tom's notes about this serial data). I need to take that data and use it to trigger .swf files from within my main movie. So, incoming data that looks like 165 (showing that qprox 1 has been touched) should trigger movie1.swf. The data should come in looking something like "66, 055, 45 ". So in my Action Script, I'll need split the data. Something like (purely pseudocode): And then there's getting the data back out to the microcontroller to pulse the motors at certain times in the movies. ______________________________________________________________________________ Sensor-ality
It's also time to realize the whole microchip-to-cobox-to laptop-to flash extravanganza. While researching this tonight, I came across this Hernado Barragan's serial to flash solution. Oh wow - it's possible I don't need to do the whole Cobox setup? I'm working on this now - figuring out what code I need to send what data out from the chip, what data flash can receive, and then how to code ActionScript to play the right movies depending on what sensors are touched. Barragan also has an interactive table project that is good research material for this. Oh wait, he also wrote Wiring, which Arduino is based on... suddenly I'm seeing the bigger connection - and how my little project fits somehow into this wider movement to combine moving graphics and physical computing. It's like being at the Sex Pistols' first show! Well no, maybe Bowie's 20th show. Anyway, if I learn more about this whole networking and data transfer piece, maybe this piece of the puzzle will be much easier a year from now.
______________________________________________________________________________ Table Mundo! I built the table with rack and matched the plate and cup placement to the animation. I drilled some holes for the parts the motors will use and experimented with various ways to mount the motors under the plywood. The optimal way would be something that would allow me to easily detach or adjust the motor. I got the right amount of pulse width for the motors too, so they can push a little part up through the table to tip the cup a bit. I'll have to see if I'm able to use the magnets - with the metal of the rack, it might be problematic. ______________________________________________________________________________ Imp-a-Limba Land So, so much animation. The processing of images takes a while, and then moving them around the stage so they look natural. Gotta say, though, I'm loving the dance sequence. I really should be on a faster computer to do this work, though. Around 900 frames each movie. Through a lot of experimentation, I've gotten the video-to-flash system working well... it's modified from what I thought would work (listed down there on Nov. 27). The new system - for each clip: 1. In Final Cut, cut short clips from video and apply brightness, contrast and levels filters to get pure black on white image. Also, on the PComp side, I got the QProx's all soldered with coaxial cable and copper mesh, and started building the table. ______________________________________________________________________________ Progress Got wood for the tabletop, copper mesh and biscuits to potentially use on the movement. I wired my board up with the basic parts and did some coding (starting code here). I got the servos turning and pot responding.... next steps on the PComp front: _____________________________________________________________________________ Slow Goin' Found a hardware store that cuts lumber to size - Home Front on 29th and 3rd - open 24 hours! Also talked to Michael about servos and cable and the wire rack - which he said shouldn't cause me a problem. Briefly talked to Tom about the Serial Server solution, which he said is very easy, but that's coming from an expert who can do all of this in his sleep! Fine for someone familiar with Java and comfortable with coding in general. Makes me realize that more programming or networking classes would be good for me. So against his and Michael's advice, I ordered the CoBox Micro. Maybe I'll have time to figure out the Serial Server solution, but at this point I just need to get my breadboard set up and functioning, and some actual animation together. That stuff is taking longer than I'd like. I had to make modifications to my process of converting video to flash - the steps listed below - because Adobe Bridge isn't quite to the point where it can do the kind of batch processing of vectorizing files that I need. So I'm using bitmaps in Flash - one for every frame. Which is just huge for a 5 minute animation and keeps crashing my machine. But it's what I've got right now until I find a better solution. I'll vectorize the frames I need to adjust and keep the others as bitmaps for now. In the meantime, I've got to refine my system of processing and placement before I can really get to animating. It's times like these that I wish I were doing claymation with a couple LEDs thrown in! A little instant gratification would be nice right now. _____________________________________________________________________________
After many days of trial and error and software research and asking of questions, I have a system for converting the video of me being the imp to vectorized frames in Flash. 1. In Final Cut, cut video into short clips corresponding to specific actions (running, dragging, laughing, etc). For step 6, I was actually deleting thousands of files manually until Nathan wrote me a script to run in Terminal which does it automatically. Thank you Nathan! Here's the code: #!/bin/bash n=1 ______________________________________________________________________________
I talked to Todd about gears because I haven't been finding what I need - at Radio Shack there only seem to be circular gears whereas I need linear movement and I haven't found interesting gear parts elsewhere yet. Todd said that all I really need to use for much of the movement I want - since I only need things to move less than an inch - is a servo motor with some of those little plastic parts that come with it. Also, for that cam rotation for the cup, he said I could get a wood oval biscuit. Michael also sent me this good list of parts suppliers. The phidget site has lots of servo motors and parts. I'm wondering if I can get the servos cheaper elsewhere. Their list of hinges and parts is a good reminder that I have to think about the hardware to connect all this together, but I think that cheaper hinges from a hardware store will work just fine. ______________________________________________________________________________ The Physical Setup I realized that, in order to do the animation and really understand how to deal with the physical aspect of all of this, I need to think about the thing as a whole for a bit. I need a table with holes through the top in various places, plus, the projector overhead, specifically located. I found a metal kitchen rack counter top which will be perfect for the basic table. I'll get a fairly thin piece of plywood at about 20"x16" for the top. With the metal rack setup, I can extend the 4 columns upwards to another rack which I can modify to hold the projector, which will mean that every time I show it, I don't need to carefully suspend the projector from the ceiling. I don't think it's great aesthetically, but it's good for this first pass. I also need to be careful about the metal, I think, since I'm using these very sensitive sensors and magnets. But parts of the rack can be cut out and it will still be stable enough to hold everything. I created a new layout diagram for the pcomp page.
I got a projector and my 4 objects - plate, cup, large spoon, and tested out how high above the projector would need to be (35"), and worked on translating the size of the objects into the pixel dimensions I'll work with in flash. I'll do a 550x400 animation, so the 10.18" plate will be 279.9 pixels. I have to be really exact about this in order for the animation to look good with the shadows.
______________________________________________________________________________ Writing About It I've written a short proposal based on Michael's documentation guide: Goal, Context, Problems, Proposal, Target Users, Design Criterial, User Scenerio, Hardware Design. ______________________________________________________________________________
I've seen the light and realized that Tom Igoe and Dan O'Sullivan's Serial Server solution is just not going to work for me on this project - too finicky and complicated, using java classes and all sorts of stuff I have no experience with. I'm already full up with trying to accomplish things I've never tried on this project. So, in the interest of getting this done, I'm gonna order the Cobox Micro - I think CO-E2-22AA with two TTL channels. Vincent was nice enough to send me to a Parson's student music project using the Micro, which further links to this ITP Networked Objects project. Great stuff. And, Tom has a very helpful page on his site about setup and code for the Micro, which also lists the parts I'll need for setup. And another resource for hooking up. Anyway, things being what they are, it's not as easy as going to a website and ordering, it seems. I have to wait to hear back from a Lantronix sales rep. For the qprox sensor, I'm got the QT150 since the QT160 is out of stock till the end of December. I worked on my breadboard some today, and got some more parts from Jameco and Radio Shack. More drawings, too. I'm a bit unclear about how to deal with the motors and gears I need. I keep doing lots of research, expecting to find resources to buy cheap gears - like the rack and pinion and cam rotation stuff I need, but I'm just not finding it. ______________________________________________________________________________ Specifics and Parts I met with Michael about the project and got lots of good advice. He said that since I want 6 sensors, I should use the 6 key QT160 instead of 6 separate QT113s. I'll need a 10mHz oscillator for this. And for the toggle, I'll want to set it to 60 seconds so it can recallibrate. Also, he said that the wires between the microprocessor and QT160 will be sensitive to proximity, so those should be shielded. He recommends cable TV cable, and solder wire from silver shield in there to ground and don't let it touch inner connecting wire. Update - the 6 key QT113 is out of stock and not available until the end of December, according to the distributer's website. So, I may need to use the QT113's after all... For the movements of the various objects, Michael showed me this great site, flying pig. Lots of fun mechanism types. Details about some options, with motors and gears and magnets, plus an animation I did for my cup are all updated on my pcomp page. The process of making the cup animation was great in helping me understand what I need to make and test. Taking time to sketch out the layout with every component I can think of helped me make a parts list too. Serial Connection to Flash Update: Got an email back from alumni Jack Chang, who said he has used CoBox and that it's good because it's stable and once it's set up, it's set up. He hasn't tried Dano's solution. I found this Cobox code from Tom Igoe... Animation I shot more video this weekend, using the Japanese Room for more horizontal space to move in. However, I didn't get as much of an angle as those first videos. I'll play with all the video I have and see if I can use the more angled stuff for animations in the foreground (plate in particular), and these recent ones for animations further back on the table - which makes sense anyway. To Do in the coming days: - Serial to Flash - figure out which solution - Dano's java solution or buy CoBox and figure that out ______________________________________________________________________________ To Do Now To do this weekend: Dan from class tipped me off to this interactive bar in the Ars Electronica space - luminescent worms on projected on a table. And right now, while I'm finalizing the storyboard in order to launch more fully into production, I'm remembering that simple can be beautiful, and for this version of the project, I should not get bogged down by too much narrative. (See my pea storyboard). Instead, I should get everything working in an elegant way. First I'll get my video into flash, and see what the movements of the imps tell me. ______________________________________________________________________________ Feedback and Answers PComp and Animation classes today. In animation, Marianne said that Sorenson Squeeze should help solve some of my Video to Flash issues - I should be able to save as a .swf out of there and bring into flash as a sequence that will populate the frames. Also, she recommended that I get the Japanese room to refilm, so I have enough space to move. It's also a good opportunity to really get my script and movements figured out so I can tape exactly what I need. ______________________________________________________________________________ Flash - Video to Vector Questions I got helpful feedback from the flash email list about getting video into flash frame by frame and vectorizing it. It seems like Flash 8 will be a big help. ______________________________________________________________________________ Video - Luma Keying I worked on the video in Flash. I found some info online about chroma keying, but that's mainly for blue or green screens. But I found that I could apply the same principles for the white screen using Luma Key and the Matte Shape Mask. By reducing the tolerance to 0 on the Luma Key, I was able to get a pretty good shape. The Luma Keyed clips take a long time to render. I wasn't sure about the best way to export from Final Cut to bring into flash, especially since I don't want to use the video as is but instead just use the shapes and vectorize them. I decided to try a basic QT mov file. It imports just fine, but I find that I can really reduce the frame rate on the original file - probably 5 frames per second will work fine. Also, I need to figure out how to change the video to vectorize it - it doesn't treat video like bitmaps, but maybe I can convert it so it does. Later.... my desperate email to the flash email list:
Next steps on the animation: cut up the video into clips for each animation sequence according to storyboard, luma key better, and get into flash. Then I'll move on to mapping all this to the table layout. ______________________________________________________________________________ Narrative and Physical Elements I also thought more about the sort of narrative to pursue and talked to a friend about it. I want this to be educational, about food issues, but not too didactic or fact-driven. I want to speak to the fact that the everyday choices we make have a broader impact. When you pick up a strawberry, it has this reverberation, a long shadow cast that spreads further than you might imagine. The roads it traveled, the person who picked it, what it was sprayed with, where it grew.There's a whole story behind that strawberry, and I'd like to tell those stories in interesting, entertaining ways that also get people thinking about some of the problems with our modern food system. I want to talk to some more people about this idea to get a sense of what they might find interesting in that story. I also did research on the sensors and moving parts for the table and updated the pcomp page on this site. I'm getting a better full picture of the thing as a whole and how I want it to work. I think I should start with a plate, bowl, cup and globe for the people and imps to interact with. There will be sensors on each object. I'll need to test to see if touching the top of the cup will set off a sensor underneath the cup. Also, whether 2 sensors under either side of a plate will get data independently or if touching anywhere on the plate will give the same output. ______________________________________________________________________________ Serial Data to Flash, Sensors, Video Taping I've been wondering about getting data from the sensors into Action Script. DanO'Sullivan's web site is super super helpful - all the steps I need, hopefully. Also, someone on the list said, "I've used the Telo board from making things: http://www.makingthings.com/ They have an XML server you can use to pass info into Flash. It's probably the most widely accepted solution for sensor input into Flash. I haven't tried Dano's solution yet. They're similar in concept."The thing is that these Telo modules are $189. I have heard that the more manual solution is tricky and even programmers with experience have a hard time with it. But the best bet is to find the people with experience and see what they have to say. I was given contact info for some alumni who have done serial to flash work and would be willing to help, and also told that people who have taken Networked Expressions should be able to help with the code for the server. It's good to know there are resources out there! Also, I took a look at my QT113HD sensors, and was surprised. I thought they would be little pads that get input about the pressure. But... they look like chips. So, obviously I have some reading to do. I videotaped today with good lighting and white background and next will prep that in Final Cut and get ready to bring into Flash. I found this article about chroma-keying out the background. ______________________________________________________________________________ Diving In The QProx sensors I ordered last week have come in. I'll pick them up tomorrow and try them out. Michael mentioned that they take time to calibrate, since they're very sensitive. I've also done some work on my process and schedule for the next 5 weeks: Week 1: November 7-13
______________________________________________________________________________ First Feedback Today I presented my preliminary ideas and research to my animation and physical computing classes and got good feedback on a number of things. First, on the animations. People liked the shadow exercise I did with transparencies, saying that it was great that the little imps have exactly the same quality as the shadows of the plates. They also liked the character development video, and recommended that I use that as a basis for my animations. In other words, retape the video and import into flash to refine it and add more. This means cutting down on animation time and I think it will go a long way in creating really natural movement. For the physical environment, people liked the idea of being able to interact more fully than just touching an object. I had mentioned spinning a globe, and they thought spinning a plate too. They liked that in the Kobito project, you could push an object against the animations and they push back. I could consider doing that. It would involve magnets. Or, if I had the plate or something move just a couple inches, it could be on a track sliding under the plate. I would want to come up with something in the narrative where you're invited by the sprites, or challenged, to push the plate. So people have an idea of what objects are able to move in what ways. Otherwise people will try to push or rotate everything, and may get frustrated with few options. ______________________________________________________________________________ Beginning I created the project outline and overview, with some preliminary research.
|
|||||||||
| go to physical computing page > | |||||||||
|