Menu

PyUltimateRobot / Blog: Recent posts

Image guidance algorithms updated for more robustness

The 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.

Posted by Garrett Herschleb 2017-04-08

Updated object location and visual guidance working well

I 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!

Posted by Garrett Herschleb 2017-02-05

3D Vision!!

I'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.

I'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)... read more
Posted by Garrett Herschleb 2016-12-21

CNC Control

I'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.

Posted by Garrett Herschleb 2016-12-21

Updated, Improved Optimizer engine

Updated the general parameter optimizer. The parameter optimizer is an engine that will generate a series of guesses for the best parameter values based on scoring feedback.

This helps robots by optimizing PID values that control inexpensive DC gear head motors to behave predictably like more expensive (and generally much weaker) servos.

One uses the optimizer by setting up and configuring the class by telling it the nature of the parameters to work on, and then calling the member function OptimizeIteration (last_score). You hand it the score of the last iteration (more positive is better, None if you're just starting), and the function hands back a dictionary of parameter values to try next. Then you run your machine (whatever it is) and evaluate how well it worked with those parameters, assigning a score, and iterate until OptimizeIteration returns None, indicating that it thinks it found the best possible values.... read more

Posted by Garrett Herschleb 2016-05-05

New Feature: MoveToLimit

Added 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 stopped.

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.... read more

Posted by Garrett Herschleb 2016-04-20
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.