1. Home
    1. Dashboard
    2. Search
  2. Forum
    1. Unresolved Threads
    2. Members
      1. Recent Activities
      2. Users Online
      3. Team Members
      4. Search Members
      5. Trophys
  3. Articles
  4. Blog
  5. Videos
  6. Jobs
  7. Shop
    1. Orders
  • Login or register
  • Search
This Thread
  • Everywhere
  • This Thread
  • This Forum
  • Articles
  • Pages
  • Forum
  • Blog Articles
  • Products
  • More Options
  1. Robotforum - Support and discussion community for industrial robots and cobots
  2. Forum
  3. Industrial Robot Support and Discussion Center
  4. KUKA Robot Forum
Your browser does not support videos RoboDK Software for simulation and programming
Visit our Mainsponsor
IRBCAM
Robotics Channel
Robotics Training
Advertise in robotics
Sponsored Ads

Singularity - how to set $singul_pos[3]

  • chocobo_ff
  • May 20, 2013 at 4:18 AM
  • Thread is Resolved
  • chocobo_ff
    Trophies
    3
    Posts
    32
    • May 20, 2013 at 4:18 AM
    • #1

    I'm having issues with singularity (axes 4 and 6 rotating really fast), and I've been reading this thread, (new link) where SkyeFire suggested avoid letting A5 approach 0°. This is however impractical for our application due to our mechanical setup/path profile. Someone's looking into changing the mechanical setup, but no easy way to do this for what we are doing.

    In the mean time, I'm trying to set $SINGUL_POS[3] to 1 which will "The angle for axis 4 remains the same from the start point to the end point", and should avoid the problem I'm having with axes 4 and 6. I tried changing the value in R1\Mada\$machine.dat according to the Systems Variables manual, but that did nothing (after restarting the system). Am I changing the wrong value/file or is there a reason why the change didn't do what it should do?

    I can provide a video of what the robot is doing now if that helps.

  • eusty
    Reactions Received
    6
    Trophies
    4
    Posts
    721
    • May 20, 2013 at 8:53 AM
    • #2

    I can't say I've looked at that variable before, but generally a [3] would refer to axis 3 not 4?

    Sent using Tapatalk 2.

  • Online
    Fubini
    Reactions Received
    278
    Trophies
    9
    Posts
    1,889
    • May 20, 2013 at 11:51 AM
    • #3

    Hi,

    $SINGUL_POS[3] is for the third singularity a standard 6 axis robot can have (Index 1: axis one singularity, Index 2: a2-a3 singularity, Index 3 axis 5 singularity). Basically for the axis 5 singularity distance corresponds to a scaled axis 5 angle. Therefore the robot is "inside" the singularity whenever the value of $singul_dist[3] < 1.0 (about +-0.0181° a5 angle) . Did you check the value of $singul_dist[]? Otherwise the robot might still think "no singularity" and does nothing. The controller has different singularity strategies (as SkyeFire already posted), which one is chosen depends on a few system variables:

    [list type=decimal]

    • $CP_VEL_TYPE: reduce the axes velocities if axes get to fast: Hence check if $CP_VEL_TYPE=#VAR_ALL or #VAR_ALL_MODEL (in default case this feature is only in T1 active: $CP_VEL_TYPE=#VAR_T1)

    • $ORI_TYPE = #JOINT: This is the preferred solution if orientation control is not important, because your hand axes a4-a6 are planned ptp. Hence the axis 5 singularity does not exist any more. So by cheating orientation a5- singularity is avoided

    • $SINGUL_STRATEGY = 1. Try avoiding the singularity by changing orientation during interpolation (different approach than $ORI_TYPE=#joint, which already is used during planning!!!): This method is not recommended by KUKA, because the orientation change depends on the velocity (hence in T1 the orientation error might be small and in AUT/EXT much bigger)
    • $SINGUL_POS[]: If $singul_dist[] < 1.0 the first not unique defined axis angle is set to zero.

    [/list]

    So basically $SINGUL_POS[3] leeds inside the singularity area to a unique defined axis 4 = 0° and a axis 6 set corrspondingly. But this solves only the first problem that arises inside singularities (mathematically spoken there is a infinite number of valid axis position leading to the same cartesian position). The second problem inside singularities is the velocity problem which can be "solved" using $ORI_TYPE = #JOINT, $CP_VEL_TYPE or $SINGUL_STRATEGY .

    Fubini

    Edited once, last by Fubini (May 20, 2013 at 12:00 PM).

  • chocobo_ff
    Trophies
    3
    Posts
    32
    • May 20, 2013 at 9:01 PM
    • #4

    Hi Fubini,

    At the moment I have:


      • $CP_VEL_TYPE=#VAR_ALL so the robot doesnt' exceed the speed limit on A4/A6 and stop.

      • $SINGUL_POS[3]=1 to try and prevent A4 from rotating ~180°

    I will check out $SINGUL_STRATEGY soon.

    How do I check the value of $SINGUL_DIST[]?

  • Online
    Fubini
    Reactions Received
    278
    Trophies
    9
    Posts
    1,889
    • May 21, 2013 at 6:17 AM
    • #5

    Hi,

    Quote

    How do I check the value of $SINGUL_DIST[]?

    In the menu use Display -> Variable -> Single and type $SINGUL_DIST[].

    Quote

    $SINGUL_POS[3]=1 to try and prevent A4 from rotating ~180°

    The axis 4 turning 180° is not only caused by the singularity but often also the wrist axis status requires turning a4 and a6 about 180°. This can be prevented (even though ist is not recommended by KUKA) by setting $POS_SWB[3] = 1 allowing a status change when driving through the axis 5 singularity.

    The reason it is not recommended is that if you drive close to the singularity the status changes takes places velocity based. Hence in T1 the change might not occur but in AUT. This basically can lead to unpredictable programm behavoiur.

    Fubini

  • TygerDawg
    Reactions Received
    6
    Trophies
    3
    Posts
    187
    • May 21, 2013 at 12:48 PM
    • #6

    Re-iterating my advice on another post somewhere in the forums:

    Another strategy to avoid singularities is slight modifications of how the tool and workpiece is mounted. Most tool designers are not RobotGuys. So the designers typically design EOAT mounts and workpiece fixtures that are all square and orthogonal designs and aligned with the Robot World axes.............terrible. Add small offsets (5- 15 degrees) to your tooling to offset the axis alignments slightly. As stated before, this won't eliminate singularities, but will certainly reduce the likelihood of them occurring. And it is an inexpensive solution. I've done this many, many times over the years with great success.

    TygerDawg

    Blue Technik

    http://www.bluetechnik.com

  • chocobo_ff
    Trophies
    3
    Posts
    32
    • May 21, 2013 at 11:25 PM
    • #7

    Hi TygerDawg,

    Yes I read your post somewhere, and had thought about offsetting the tool, in fact the tool already has an offset of 60°, and I've added a small (100mm) offset horizontally in the setting (without changing the actual mount to see what this does). This did reduce the issue, didn't eliminate the problem but what we've decided to do is to shift the part with respective to the robot, and this helped a lot. Unfortunately I was hoping there would be a way to eliminate singularity, but I realise it's an inherent issue with this kind of robots...

    Thanks!
    Danny

Advertising from our partners

IRBCAM
Robotics Channel
Robotics Training
Advertise in robotics
Advertise in Robotics
Advertise in Robotics

Job Postings

  • Anyware Robotics is hiring!

    yzhou377 February 23, 2025 at 4:54 AM
  • How to see your Job Posting (search or recruit) here in Robot-Forum.com

    Werner Hampel November 18, 2021 at 3:44 PM
Your browser does not support videos RoboDK Software for simulation and programming

Tag Cloud

  • abb
  • Backup
  • calibration
  • Communication
  • CRX
  • DCS
  • dx100
  • dx200
  • error
  • Ethernet
  • Ethernet IP
  • external axis
  • Fanuc
  • help
  • hmi
  • I/O
  • irc5
  • IRVIsion
  • karel
  • kawasaki
  • KRC2
  • KRC4
  • KRC 4
  • KRL
  • KUKA
  • motoman
  • Offset
  • PLC
  • PROFINET
  • Program
  • Programming
  • RAPID
  • robodk
  • roboguide
  • robot
  • robotstudio
  • RSI
  • safety
  • Siemens
  • simulation
  • SPEED
  • staubli
  • tcp
  • TCP/IP
  • teach pendant
  • vision
  • Welding
  • workvisual
  • yaskawa
  • YRC1000

Thread Tag Cloud

  • abb
  • Backup
  • calibration
  • Communication
  • CRX
  • DCS
  • dx100
  • dx200
  • error
  • Ethernet
  • Ethernet IP
  • external axis
  • Fanuc
  • help
  • hmi
  • I/O
  • irc5
  • IRVIsion
  • karel
  • kawasaki
  • KRC2
  • KRC4
  • KRC 4
  • KRL
  • KUKA
  • motoman
  • Offset
  • PLC
  • PROFINET
  • Program
  • Programming
  • RAPID
  • robodk
  • roboguide
  • robot
  • robotstudio
  • RSI
  • safety
  • Siemens
  • simulation
  • SPEED
  • staubli
  • tcp
  • TCP/IP
  • teach pendant
  • vision
  • Welding
  • workvisual
  • yaskawa
  • YRC1000

Users Viewing This Thread

  • 1 Guest
  1. Privacy Policy
  2. Legal Notice
Powered by WoltLab Suite™
As a registered Member:
* You will see no Google advertising
* You can translate posts into your local language
* You can ask questions or help the community with your knowledge
* You can thank the authors for their help
* You can receive notifications of replies or new topics on request
* We do not sell your data - we promise

JOIN OUR GREAT ROBOTICS COMMUNITY.
Don’t have an account yet? Register yourself now and be a part of our community!
Register Yourself Lost Password
Robotforum - Support and discussion community for industrial robots and cobots in the WSC-Connect App on Google Play
Robotforum - Support and discussion community for industrial robots and cobots in the WSC-Connect App on the App Store
Download