There was a theory that texture matching could be a better path detector, but it would require much higher resolution. Recorded 7 miles of 4k. Then the battery died. Did it at higher speed than the range test, with extra cargo. That's the only explanation. The battery only took 4444mAh, so it's lost a lot of capacity.
After walking the final 1.25 miles, finally viewed the footage.
The nearest part of the image had well defined differences between path & dirt.
Edge detecting makes it resistant to shadows, still leaving a well defined boundary. It would merely need to compare the amount of noise to find the path.
It was a really brutal RC truck drive in the 95F heat, set to 10 min/mile. Got cramps, nauseous, & dehydrated. The 1st charge with the accucell revealed it could probably go 12 miles on 5Ah. Consuming constant power instead of constant current would give slightly less range for the last 2 Ah.
The accucell uses the main power leads to measure voltage, so it measures slightly above the voltage from the balancing leads. The resistance in the balancing leads doesn't seem to impair it, though it could use a test to see how much current is going through the balancing leads.
The passive matrix display brings back memories of the very 1st laptops, 30 years ago. That was as good as it got.
So after 2 years, it was finally time to break out the Accucell 8150. It had the coveted capacity guage, very important for measuring the total range of a battery. It was always assumed it couldn't charge less than 3S because it only had balancing pins for 3S & the crummy Passport charger wouldn't charge unless the battery was plugged into the balancing pins.
It turned out the internet said it would charge all the way down to 1S & it didn't require the balancing pins to be plugged in. Balancing was optional. It would balance 2S by plugging the 1st 2 pins into any of the balancing headers. The ideal use was in balancing mode, so the next problem was moving the balancing header closer to the charge header & providing a pin strip which could plug into any battery.
Opening it the way the internet recommended broke 1 of the tact buttons. Half the circuit was dedicated to just balancing.
After 10 months, the tachometer broke & the truck flew down the mountain. The leading theory is motor heating made the hot glue soft. A hard crash pushed the tire into the hall effect sensor. The glue was soft enough for the hall effect sensor to slip into the path of the magnet. The magnet broke off.
The original magnet used hobby grade epoxy. The new bond used the last of the J-B Weld from 8 years ago which failed miserably at repairing landing gear. The duck's guts is now considered Loctite epoxy for metal.
It was an awful alignment, but this motor also shed a lot of brush dust. It's on its way out. The tire will impact this alignment a lot sooner.
So Disney finally announced the fabled Star Wars themed quad copter to coincide with the movie. The quad copter is just a licensed Air Hogs toy, fully manual, no boundary sensors, sonar or camera.
The blog was told of plans for such a thing 2 years ago, but if we could make it autonomous, the license wouldn't have gone to Air Hogs but the one & only Jack Crossfire Inc. Of course, the level of autonomy was quite unattainable even by today's standards. They wanted the speed & accuracy of a vicon tracking system for the cost of a toy. It was still intriguing that the vision actually came to fruition & what Air Hogs shipped had the exact same size & propellers as the proof of concept we made.
This size was not big enough to lift the amount of electronics required for any kind of autonomy. As for the foam styling, there's probably a good market for flying prop replicas. No matter how long the fact that something looks like a historic artifact can keep their attention, they only have to buy it once.
This angle came out almost professional looking. It might still be an unseen angle in any movie, since no-one has ever run 3 miles with an RC car cam.
Running form is a lot more discernable from this angle, but it's much harder to avoid bikes going 15mph. The combined speed of an impact would be 25mph. Ran off the road once, so driving from this angle is still harder than driving from behind. A purely side view still requires an autopilot.
Unfortunately, the work done on path following would not allow a side view. The car would weave from side to side, manely staying in the center of the path. There is no algorithm which could hug the side of the path. It's another area where lookup tables or convnets differentiating materials could be the best option. It still needs a previous copy of the drive where the materials have been manually labeled.
The problem with convnets is they only work as classifiers, not position detectors. There are examples of another algorithm being used to find feature positions, then the convnet being used to identify the features. Even then, there was an example of road sign detection which was a lot worse than least squared differences.
The driving algorithm does pretty well finding the car's position in time, but falls over when looking for the path offset in the frame. Even 2 drives at the same time of day can't be aligned because the shadows changed slightly.
There was an idea of using a convnet as an expensive replacement for the least squared difference calculator. Use it to classify an image offset at multiple points. Pick the position which gives the best match. Convnets are supposed to be position independent, so they wouldn't work in this test.
Another idea is using a convnet to classify a material as path or not path. This might be more feasible. For every frame on a drive, a new set of weights for the kernel is calculated. The kernel could be passed over an unknown image, creating an output mask based on the material. The resolution might be too poor. The camera resolution isn't high enough to give much difference between materials.
Materials classification leads to the idea of horizon detection. The horizon is more invariant than the nearby path, so using just that or masking everything below it might give better optical flow. A variance calculation of each line might yield the horizon or it might be discernable for a convnet.
Good coverage of current topics in robotics. Most interesting was the lack of any work being done on flying machines. 5 years ago, Vicon guided quad copters were the only topic. Now, they're all gone.
The speed & strength of modern actuators compared to years ago. The gas driven hydrolic actuators driving Boston Dynamics creations are a lot faster than construction equipment. The electrically driven hydrolic actuators were amazingly strong for their speed. Much has been done to get powerful hydrolic pumps & valves from brushless motors. We're not far from lifelike human motion, but the problem of safety is going to keep any robot as strong & fast as a human from going near any human.
A way to make a robot aware of when it could break something must be found before it can interact with a human. There was some promise in robotic ability to sense resistance, but it has to know which way a joint can bend.
The mane find was a blurb about convolutional neural networks. They became prominent only after 2012. In 2008, I became disillusioned with neural networks because to truly become learning machines rather than expensive lookup tables, they needed to be recurrent. There was no easy way to train a recurrent network or model a pilot in a neural network. Lookup tables would do a better job.
Convolutional neural networks seem to be purely used in image recognition. The fundamental unit of the convnet is the convolutional kernel, a fixed matrix which is multiplied by every region of an image to produce blurring, edge detection, & sharpening.
Now, they apply several kernels with different parameters on the entire area of the same image. The different parameters of each kernel are trained using backpropagation. The output of an image which has been processed with these kernels can be fed into another set of kernels to process higher level features. Fortunately, there are already libraries which implement all this.
The quest for machine vision moved to optimization, because it most likely will have to run on the 900Mhz Raspberry in a 1st test.
A quick test at 160x120 showed complete loss of synchronization at the lower resolution, with different lighting. There was definitely an advantage to 640x480 & above, with the bare minimum at 320x240. Using color for matching was hopeless, whether the color was 160x120 or 320x240. Color was required for decent motion searching. The optimum source image was 640x480, with downsampling to 320x240 for all processing, & further downsampling to 160x120 for the 1st pass of motion searching.
Synchronization of any kind between 2 videos during the shady time of day was impossible. The shadows changed position too much. Synchronization between a shady video & a full daylight video was still quite good, though optical flow was hopeless. Since the full daylight video had some compatibility with all the other videos, all the reference videos should be in full daylight. FLANN pair matching was identical but much slower than brute force matching.
Another drive slightly after full daylight but not sunset was pretty awful at optical flow, though it nailed keypoint matching. Reduced the reference frame window to 10 & reduced the reference frame rate to 1 frame every second. This didn't affect the keypoint matching.
Made a logarithmic motion search use a 2x downsampled image, which gave better results than either...Continue Reading
The rumors that computer vision takes enormous amounts of clockcyles have proven true. Last week's theory that matching homography of keypoints would yield the most similar frames was absolutely wrong. The best match was revealed by the frames with simply the highest number of matched keypoints.
Next came detecting the optical flow of the matched frames. There was computing the average position change of the matched keypoints. This was terribly rough. The keypoints were terribly mismatched.
Better results came by old fashioned macroblock searches. It might be faster to apply the Lucas Kanade method to the keypoints, but the brute force method proved the feasibility.
Not sure Lucas Kanade would handle the large differences in position between the 2 frames. The objects don't move incrementally, but occupy totally different parts of the image & don't match well enough for feature matching to produce any points to track.
The optical flow got better when the search for best macroblock was exhaustive instead of logarithmic. Narrow objects like poles got missed in a logarithmic search. It got even better when the motion search used full color instead of greyscale. But using full color instead of greyscale for the keypoint matching actually made it worse.
A nifty video of the current & reference videos being synchronized by feature point matching but not optical flow emerged.
Drove another 6 miles, recording several drives of the same section of test track in smokey conditions. The battery can't go any farther. An SD card glitch caused the recording to stop. The web server was still running, but showed a 404 error, a sign the filesystem was gone. The lighting change did make a few more frames glitch, but it was still pretty good for no color correction. Color correction will add still more clockcycles.
The video had to be downscaled to 320x240 to get any reasonable processing speed. This didn't seem to degrade the results.
The day job had no useful resistors for measuring current, so tried to add a 10mV/mA range by doing this.
Trimmed it to nearly 0.1R, but the result was a very noisy waveform which spilled noise into the other ranges. The wire was an antenna. The day job had a 1R 5%, so whacked that in. It was still noisy. Left the 10k tacked on the end of it & it acted like another antenna. Removed the 10k completely, which gave a useful but still noisy signal. The 0805 10R wasn't a perfect fit for the 10k position. Fortunately, the day job has many 0402 10R's.
The result was 1mV/1uA, 90mV/1mA, or 0.99mV/1mA, very useful ranges for measuring the coveted 2ma-10mA range. The full range was 0mA-20mA. The oscilloscope seemed to have been doing better with 90mV than 9mV & it skewed the other ranges less. Could finally see how much an interrupt handler was using.
Also, the switches started interrupting the circuit with more usage, so had to go into SHORT mode to change ranges. There was now little point in dual contact switches with all the problems of requiring parallel resistors & not being able to have more ranges. It's something Dave probably couldn't foresee. Fortunately the OFF mode still passes current while not powering the LED, so you needn't drain the battery to keep the DUT going.
After much testing, the mane advantages are changing ranges without interrupting the circuit & plotting transients. The mane limitations are lack of ranges...Continue Reading
Reviewing the schematic for the uCurrent, the key to its ability to change settings without interrupting the circuit is switches with 2 contact points. The resistor network is always in the circuit path. Only the SHORT option gives the current a shorter path, so avoiding accidentally switching to nA requires being in SHORT mode.
The sacrifice in using dual contact switches is 2 resistors always have to be in parallel. Working around that requires the ranges to be powers of 1000. The resistances have to be in ascending order & all 3 resistors have to be populated. The output of each resistor is always amplified by 100x using the same amplifier chain.
It really is a bit of slight of hand that lets the uCurrent work the way it does. It was one of those unique inventions born from a once in a lifetime observation developed over a lifetime of experience.
The easiest way to get the coveted 2mA-10mA range is replacing the 10R with 0.1R & replacing the 10k with the 10R. This would create a new 10mA range with 9.9mV per mA. The mA range would then give 0.9mV per mA & the uA range would still give 1mV per uA. It might be good enough, but hard to read in the 10mA range.
Unfortunately, the 0.01R resistor can't be trimmed to get 1mV per mA again. It's a special resistor with sense terminals on the substrate.
A nice bit of kit arrived at the day job. Modern gadgets live & die by their power management firmware. It's not like the old days when a power switch was the final word in whether the batteries drained or lived. Now, the typical gadget has a full power mode, low power mode, off mode, charging mode, all controlled by software with no direct user control. If the software doesn't work, the gadget bricks with no way out for the user.
Many a gadget has been instantly wiped off the face of the Earth because it didn't turn off properly, killing its batteries, or didn't turn on. History is littered with Gopro's draining their batteries in standby mode, iPad's going dark & never turning on again, Lipo's drained past their self destruct point or overcharged.
Keeping the day job gadget from becoming a statistic consumed a lot of testing. The mane problem was measuring current through the gadget's full range of hundreds of mA to tens of uA. The traditional "mowti"meter couldn't do it without shutting down to change ranges & faking the battery voltage with a bench supply set 2V higher than the battery voltage. Burden voltage was a big issue. There was no way to test transitions into charging mode with the bench supply.
As simple as it is, the uCurrent was the easiest way to do the job. It was a lot more reasonable than picking out the right resistors, op-amps, & switches, building up a circuit to test current ourselves. The...Continue Reading
Swapped all the steering buttons after 1 had been seriously degraded for a while & they were all quite corroded. Looks like swapping buttons is going to be a standard routine in a sweaty environment. Moved the low speed steering closer together to aid in tactile movement. The corroded ones were 25 years old. Surprisingly little progress in tact buttons was made in the last 25 years, compared to the progress made after 1960.
A test of SURF image matching with different focal lengths & lighting was a complete failure.
So did 4 x 8 minute miles on the same section of track, gathering 2 runs in both directions, in equivalent lighting & focal length, high quality JPEG. Wanted to do more repeats, but sunburning became an issue for the human.
The old raspberry pi was still putting out 10fps. Gave up trying to configure it over wifi. The USB port has enough power for a webcam & wifi.
The picture quality was still awful. Stepping up the saturation revealed it was probably using an analog NTSC signal in 1 stage. The proprietary Logitec chip still takes in a digital signal.