First test of newest toy, a Garmin Virb Ultra 30 action-camera.
This mode records one 4k frame every second, together with the in-camera GPS position and data from ANT+ heart-rate, cadence, and speed sensors. No idea on how long the battery lasts in this mode yet.
Here's a video from the paper. We are holding on to two micron sized plastic spheres with laser-beams (shown in the video as green/cyan cross-hairs). The lower beam/trap is stationary while the upper one is steerable. A ca 16um long DNA-molecule (invisible) is tethered between the beads.The experiment is performed in the presence of lambda exonuclease, an enzyme that "eats up" one strand of the DNA leaving just a single-stranded DNA-tether between the beads.
In the first part of the video a force-extension curve (bottom panel) is obtained using manual control. We stretch out the molecule by moving the upper trap upwards and check that the force-signal looks like it should when we have a single DNA-molecule of the right length between the beads.
In the second part, after t = 20 s, the tether is held force clamped at 3.4 pN (force shown in top panel). We're keeping the force constant with a PI-controller implemented on an FPGA that reads the force-signal from the lower bead and updates the position of the upper trap at around 200 kHz. As the molecule shortens the controller needs to move the upper trap/bead lower in order to maintain a 3.4 pN tension in the molecule. The video is at normal speed (1X) while the force extension curve is measured. During 13 min of force-clamp control the video is sped up 25-fold. During this time the exonuclease digests one strand of the double-stranded DNA molecule. When held at 3.4 pN of tension, single-stranded DNA is significantly shorter than double-stranded DNA. So the gradual conversion from a double-stranded tether to a single-stranded tether is seen as a decrease in the extension, i.e. a shortening of the distance between the plastic beads (middle panel). The tether broke at t = 880 s. Scale-bar 5 ?m.
I've continued to translate into C++ the old cam-experiments I wrote in C#. The kd-tree search for which triangles lie under the cutter seems to work, and the best way to visualize what is going on is through a video. Trying Vimeo for a change, to see if it's any better than youtube for these CAD/CAM-visualizations, since they advertise HD.
There are 360 original frames captured from VTK, and the original was created with
mogrify -format jpg -quality 97 *.png
followed by (copy/pasted from some site google found for me...)
OK, so the video doesn't really show what is going on with the kd-tree search at all 🙂 . It only shows two toolpaths, one coloured in many colours which is calculated without the kd-tree, and another one (offset upwards for clarity) that is calculated, much faster, using the kd-tree.
About 9 hours compressed into 38 seconds. 566 frames shot at 1 minute intervals from around 10:00 in the morning to 19:36 in the evening. Played back at 15 frames per second, which makes for a ~900x speedup.
I first re-sized the jpegs to 1024 pixels wide and then used this matlab script to assemble the AVI-file. The original 20 Mb AVI may have better resolution than the youtube version.
Canon 20D with 17-40/4L lens on Manfrotto 486RC2 ballhead and Velbon Sherpa pro CF 635 tripod. Timing with a 'Yongnuo' TC-80N3a remote from dealextreme.com.
When I find time to work on this next, there are many ideas for improvements: How to specify only climb/conventional milling (allowing only the right or left side of the cutter to be used). Using a variable step length for the simulation. Simulating dynamics of the macing (controlling the tool with a trajectory generator with acceleration/speed limits etc). How to implement rapid feed between cutting moves? how to choose among many allowed starting points for the cut? Should this use an adaptive resolution model, like a quad-tree? How should G-code be output, a filter which outputs G-code within a specified tolerance of the simulated path would probably be best?
Here a DNA-molecule is being stretched between two optically trapped polystyrene micron-sized beads. We're using an FPGA-based real-time controller for steering the upper trap. It's programmed with a PI-loop which aims to keep the force acting on the lower bead constant. Around 10s into the video we switch on the feedback-loop and we see the actual force on the bead rise to the set-point.
A ~48 000 base-pair long (ca 16 um) piece of DNA is stretched between two optically trapped ca 2 um diameter polystyrene beads. Bright-field real-time view through a 100x microscope. Scale-bar in microns on the right.