Archive for May, 2007

Lynxmotion Robotic Arm

I’ve recently built a Lynxmotion 6 Robotic Arm for Seminole Community College — to be used for attracting new students to science-related fields. (I teach C# and Game Programming (using XNA) classes as SCC.)

I’m really pleased with how it turned out. Here are a few screenshots:


The parts list looked something like:

I’m very impressed with the quality of the Lynxmotion kit. The manuals (available online) were well written and easy to follow, the Lexan parts were well cut, and everything came together pretty easily. The SSC-32 Servo Controller, included with the kit, seems very good, but I haven’t written any software for it yet. If I do, it’ll be something akin to the BrainStem.NET library, and I’ll make it available to anyone interested. The software included with the kit is called RIOS (Robotic arm Interactive Operating System). Someone spent a great deal of time on this — and it really shows. It worked out of the box with the XBox 360 controller, it was simple to use and had a ton of features. Seriously cool.

I mounted the camera by scavenging the hardware inside the flexible laptop-mount. Just a couple of screws and you can retask the piece that connects to the camera itself. This way you can pop the camera off and the mount stays put. A bit of velcro attached the new make-shift mount to the robotic arm.

The base of the arm is somewhat stabilized by the servo controller that you attach to the side, but even then it’s still pretty wobbly. So you need to mount the arm to some sort of platform. I had a spare piece of OSB hanging around so I cut it to a reasonable size and mounted the battery and the arm to it. The base of the arm has a screw-hole for just such a purpose, and I put a piece of velcro under the servo controller base. With these simple enhancements, the arm is rock-solid (but still removable). Same for the battery — a little velcro goes a long way (I have a thing for velcro — it’s a problem :))

Anyhow, I really want this to be a strong endorsement for Lynxmotion. I couldn’t be happier with their product. I also corresponded with Jim Frye a couple of times (Lynxmotion’s founder) and I speak just as highly for him. All around a great company to work with for your robotics projects.

If anyone is building this kit and needs some pointers, just shout.


Ray Tracing – Materials

This iteration of the C#/XNA ray tracing project includes more realistic modeling of materials. Specifically, I’ve implemented Fresnel Reflections, and diffuse and specular lighting with microfacet models Oren-Nayar and Cook-Torrance respectively.

These settings are included in the Xml scene definition as in the following example:


<sphere name=”Sun”
center=”0, 0, 0″

The cookTorranceSteepness and orenNayarRoughness values describe the same concept — the degree to which the microfacet normals differ from the surface normal. I’ve separated them so that these values can be modified independently. The microfacetDistribution value indicates the model used for distributing the microfacets around the half-angle (the angle between the incident light and the viewer — this applies to the Cook-Torrance model — and the value returned, from the specified distribution, is the fraction of microfacets with normal pointing along the direction of the half-angle). I’ve implemented Beckmann’s and Blinn’s distribution models.

The diffuse value is still valid (and the specular is derived from this value 1-diffuse) and acts as a coefficient to the corresponding reflectance model.

Here are a few screenshots:



The first image is of a purely diffuse surface without fresnel reflection or microfacets. The second is the same object with fresnel reflection and using Oren-Nayar’s diffuse reflection model with a microfacet roughness of 1.0. Note, that it’s this roughness that causes the flat shape (a commonly used example is the full moon). The third image is a semi-diffuse surface with a specular component, and the last are comparisons of a scene with and without microfacet modeling.

Here’s the updated source code . I believe the implementation is accurate, but if anyone spots a problem please let me know.


Adventures in Windows (Vista)

Short post today… just had to share something amazingly ironic. Today I received all the parts for a beast of a machine (Asus Striker Extreme Motherboard, Core 2 Duo E6600, 4GB RAM, nVidia GeForce 880GTX, Power and Cooling Silencer 750W PSU, 2x500GB Disks in RAID 0). Gotta love — felt like Christmas in the summer time.

Anyhow, I have intentions of adding another 4GB or RAM in the not too distant future, and I’m kinda interested in keeping up with Bill, so I attempted to install Windows Vista Business Edition 64-bit. Here’s the fun part — it turns out that you can’t install any of Vista’s 64-bit editions if you have more than 3GB of RAM. You can add the additional RAM after the installation… but you just can’t have all that RAM when you install.

So you see the irony here. A compelling factor in choosing a 64-bit operating system is to access more than 4GB of memory — and you can’t install Microsoft’s newest 64-bit operating system if you have more than 3GB of memory.

Simply amazing.