-
Automatic PID optimization and Composite motor control
02/12/2018 at 22:06 • 0 commentsI've been busy improving the software.
Now I've gotten a module which performs automatic PID optimization. PID controllers are a feedback control mechanism to make motors do exactly what you want by varying the power fed into them. It does so by moving a motor forward and reverse within the limits you specify. It intelligently tries different PID controller values to find the best possible settings. What are the best settings? You decide by telling the algorithm what's "good" with different dimensions like commanded speed compliance, staying within acceleration limits, minimizing jerk, and crossing goal speed.
I've also added capability to have multiple motors work in tandem as a single motor, and keep their positions tightly synchronized, even if there's uneven load.
-
Enhanced Visual Guidance Routines
04/08/2017 at 22:38 • 0 commentsThe keyline algorithms have been enhanced to:
1. Compare a number of points together to make sure the algorithm didn't just "see" a glitch in the image.
2. Add qualifiers to test points in additional ways to the primary specification.
Now the visual guidance routines can provide more robustness than ever.
-
Updated object location and visual guidance working well
02/05/2017 at 18:30 • 0 commentsI have added and enhanced new shape-finding/fitting algorithms. This includes one Cython module for the
inner search loops. Also added is a tool to create the shape-fitting templates.
With this new capability, I'm able to reliably locate the tip of a drill bit and verify its position on a work piece down to about 1/4th of a millimeter.
So now one can use a $1000 robot to acheive $100,000 precision! -
CNC Control
12/21/2016 at 11:54 • 0 commentsI've added CNC machine control, with vision guided feedback in case the stepper motors do not respond as programmed. Tested on my CNC machine.
I've also added a Python module where movement can be programmed in Python to generate a robot program, complete with automated visual validation and remedial action as necessary. High level functions allow things like drill(), rectangle(), circle(), fillrectangle(), line(), etc.
-
3D Stereo image capture for the aforementioned 3D Vision
11/02/2016 at 13:44 • 0 commentsI've updated the software with 3 different mechanisms through which one may capture 2 stereoscopic images for 3D evaluation:
1. Single camera taking 2 side-by-side images by moving in between captures. (See "snap_alt_image" in ProcessStep.py and in the procedure generator)
2. Two independent cameras that have been temporarily moved side by side. (See "alt_image_camera" in ProcessStep.py and in the procedure generator)
3. Two cameras permanently affixed side by side, and behave as a single camera, but return 2 images instead of one when asked for a snapshot.
So now it's easy to use 3D vision in evaluating movement positioning, validating pre-conditions, and verifying the results of a step!
-
3D Vision!!
10/29/2016 at 14:41 • 0 commentsI've added the capability to analyze stereo images and identify different objects according to their depth of field, and also find key points on an object face, filtering out false hits that are in the background or outside of the expected field depth.
The work so far is only within the visual acquisition and FaceProcessing modules. There are not yet provisions to obtain stereo images automatically.
That will be my next project -- using dual cameras side-by-side or taking multiple snapshots from the same camera from different perspectives.
-
New Feature: MoveToLimit
04/20/2016 at 19:35 • 0 commentsAdded a binary option for movement: MoveToLimit
This feature will tell the controller to stop the motion and proceed to the next step as soon as arm movement becomes physically stopped / blocked.
This combined with the ability to specify a maximum force in all degrees of freedom enables the robot to do things "by feel," like tightening a screw or pushing something "in."
This feature is a companion to the binary option "TimeLimited" which is similar when combined with max force specifications. The difference is that the robot that TimeLimited can "press" something for a time, whereas MoveToLimit will immediately stop the movement after reaching a stopping point.
-
Updated Wiki
04/16/2016 at 16:29 • 0 commentsThe Wiki on SourceForge has been updated, expanded and upgraded. The documentation is starting to look real now!
-
Enhanced object recognition
09/06/2015 at 11:20 • 0 commentsI've updated and upgraded the color bar recognition algorithm to be more robust, and read codes in a much greater gamut of lighting and viewing angle conditions.
-
Added a tool kit program to make the robot relocate
08/26/2015 at 15:45 • 0 commentsAdded the Move.py program which will cause the robot to follow a route to a new location. This includes an algorithm with which the robot can look around for objects that can act as landmarks to determine location, also known as "pilotage".
That way there doesn't have to be a sophisticated location infrastructure. The robots can be guided the same way we move ourselves, relative to known environmental objects.