[Jcparkyn] clearly had an interesting topic for their thesis project, and was conscientious enough to write up a chunk of it and release it to the wild. The project in question is a digital pen that uses some neat sensor fusion to combine the inputs from a pen-mounted gyro/accelerometer with data from an optical tracking system provided by an off-the-shelf webcam.
A six degrees of freedom (6DOF) tracking system is achieved as a result, with the pen-mounted hardware tracking orientation and the webcam tracking the 3D position. The pen itself is quite neat, with an ALPS/Alpine HSFPAR003A load sensor measuring the contact pressure transmitted to it from the stylus tip. A Seeed Xaio nRF52840 sense is on duty for Bluetooth and hosting the needed IMU. This handy little module deals with all the details needed for such a high-integration project and even manages the charging of a single 10440 lithium cell via a USB-C connector.
Positional tracking uses Visual Pose Estimation (VPE) assisted with ArUco markers mounted on the end of the stylus. A consumer-grade (i.e. uncalibrated) webcam is all that is required on the hardware side. The software utilizes the familiar OpenCV stack to unroll the effects of the webcam rolling shutter, followed by Perspective-n-Point (PnP) to estimate the pose from the corrected image stream. Finally, a coordinate space conversion is performed to determine the stylus tip position relative to the drawing surface.
The sensor fusion is taken care of with a Kalman filter, smoothed with the typical Rauch-Tung-Striebel (RTS) algorithm before being passed onto the final application. This process is running in Python using the NumPy module, as you would expect, but accelerated using the Numba JIT compiler.
Stewart platforms are pretty neat, and not seen in the wild all that often, perhaps because there aren’t a vast number of hacker-friendly applications that need quite this many degrees of freedom within such a restricted movement range. Anyway, here’s an interesting implementation from the the curiously named [Circular-Base-Stewart-Platform] YouTube channel (no, we can’t find the designer’s actual name) with a series of videos from a few years ago, showing the construction and operation of such a beast. This is a very neat mechanism comprised of six geared motors on the end of arms, engaging with a large internal gear. The common end of each arm rides on the central shaft, each with its own bearing. With the addition of the usual six linkages, twelve ball joints, and a few brackets, a complete platform is realised.
This circular arrangement is so simple that we can’t believe we haven’t come across it before. One interesting deviation from the usual Stewart platform arrangement is the use of a central slip-ring connector to provide power, allowing the whole assembly to rotate continuously, in addition to the usual six degrees of freedom the mechanism allows. Control is courtesy of an Arduino Pro Mini, which drives the motors using a handful of Pololu TB6612 (PDF) dual H-bridge driver modules. Obviously, the sketch running on the Arduino will give the thing a fixed motion, but add in an additional data link over that central slip-ring setup (or maybe a wireless link), and it will be much more useful.
3D video content has a significant limitation, one that is not trivial to solve. Video captured by a camera — even one with high resolution and a very wide field of view — still records a scene as a flat plane, from a fixed point of view. The limitation this brings will be familiar to anyone who has watched a 3D video (or “360 video”) in VR and moved their head the wrong way. In these videos one is free to look around, but may not change the position of their head in the process. Put another way, pivoting one’s head to look up, down, left, or right is fine. Moving one’s head higher, lower, closer, further, or to the side? None of that works. Natural movements like trying to peek over an object, or moving slightly to the side for a better view simply do not work.
In November 2017, we showed you [Chris Annin]’s open-source 6-DOF robot arm. Since then he’s been improving the arm and making it more accessible for anyone who doesn’t get to play with industrial robots all day at work. The biggest improvement is that AR2 had a closed-loop control system, and AR3 is open-loop. If something bumps the arm or it crashes, the bot will recover its previous position automatically. It also auto-calibrates itself using limit switches.
AR3 is designed to be milled from aluminium or entirely 3D printed. The motors and encoders are controlled with a Teensy 3.5, while an Arduino Mega handles I/O, the grippers, and the servos. In the demo video after the break, [Chris] shows off AR3’s impressive control after a brief robotic ballet in which two AR3s move in hypnotizing unison.
[Chris] set up a site with the code, his control software, and all the STL files. He also has tutorial videos for programming and calibrating, and wrote an extremely detailed assembly manual. Between the site and the community already in place from AR2, anyone with enough time, money and determination could probably build one. Check out [Chris]’ playlist of AR2 builds — people are using them for photography, welding, and serving ice cream. Did you build an AR2? The good news is that AR3 is completely backward-compatible.