I would like to add from experience with industrial robots, what could 
be implemented in LinuxCNC and useful for more machines / cases.
The robots I met had electromechanical brakes  and either resolvers or 
single-turn-absolute-encoders on every joint.
The original control systems, as I understood, work by an algorithm:
----------
Power on
read non-volatile memory
For each joint:
        If joint was marked as calibrated then:
                Read resolver angle
                If difference between last_angle and new_angle is less than 
tolerance 
(a degree or less, I suppose), then mark joint as calibrated / 
referenced, calculate pos., etc.
        Otherwise mark joint as not referenced / not calibrated.
If any of joints is not calibrated, inform user and ask for 
re-calibration (either each or all joints)
...
Release brakes
...

After brake engage
wait for relays and mechanical brake to work
For each joint:
        wait for joints velocity to reduce to ~0
        store is-calibrated flag
        If joint or robot is calibrated / referenced, then store last_angle
----------

This method relies on a very large probability that if a joint was moved 
while offline, it was not moved exactly one resolver / 
single-turn-encoder rotation (+/- small tolerance for backlash and 
readout accuracy). Furthermore, algorithm may add that if at least 1 
joint was moved, don't trust other joints, as this is logical for some 
machines, like industrial robot..


01/05/2017 01:16 AM, Rene Hopf rašė:
>
>> On 4 Jan 2017, at 19:07, Nicklas Karlsson <nicklas.karlsso...@gmail.com> 
>> wrote:
>>
>> As I understand it position is already known from absolute encoder so there 
>> is no need to run machine to a switch is hit?
>
> there are generally 2 types of abs encoders: multiturn and non multiturn.
> non multiturn encoders only give the absolute position to 0-360 deg, so one 
> shaft revolution.
> if you turn it 5 times, the encoder cant tell without power.
> multiturn encoders usually have a battery backup, and can count multiple 
> turns when powered off.
> with multiturn encoders its really easy, you just have a fixed offset to your 
> home position, and it just works.
> the idea is to use non multiturn encoders in a multitun way, so you just have 
> to remember on which rotation the servo is, but not where on that rotation.
> so when you assume your motors dont turn more than a full revolution while 
> the machine is powered off, you can just use the abs position, and full 
> revolutions to work out the exact position.
> of course this also works with resolvers.


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most 
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
Emc-developers mailing list
Emc-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-developers

Reply via email to