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

smoothing focus of camera mounted robot

  • AiSard
  • November 7, 2016 at 6:34 PM
  • Thread is Resolved
  • AiSard
    Reactions Received
    1
    Trophies
    3
    Posts
    44
    • November 7, 2016 at 6:34 PM
    • #1

    Robot: Kuka Agilus KR 10 R1100 sixx
    KSS 8.3.8

    I've got a video camera mounted on to my robot but can't figure out how to program the movement to get a smooth video feed.

    Did some preliminary tests earlier in the year and found that, in between LIN or PTP commands the focus of the camera wouldn't keep still. We assumed this was because the robot was not aware of the focus point and so it doesn't take care of that.

    Is there a way, using other commands like SPL etc., or changing the mode, to make the camera always focused on a fixed (or moving) point?

    Thanks,

  • Online
    SkyeFire
    Reactions Received
    1,040
    Trophies
    12
    Posts
    9,380
    • November 7, 2016 at 10:47 PM
    • #2

    ...well, how is the robot supposed to know where that moving point is?

    It sounds like you are trying to implement a real-time tracking solution, which would probably require RSI to carry out effectively, although the Function Generator might be sufficient. How are you processing the video data into positional data corrections for the robot to use, and how are you getting them to the robot?

  • panic mode
    Reactions Received
    1,267
    Trophies
    11
    Posts
    13,033
    • November 7, 2016 at 11:16 PM
    • #3

    trying to compete with Bot Dolly? :zwink:

    1) read pinned topic: READ FIRST...

    2) if you have an issue with robot, post question in the correct forum section... do NOT contact me directly

    3) read 1 and 2

  • AiSard
    Reactions Received
    1
    Trophies
    3
    Posts
    44
    • November 8, 2016 at 10:24 AM
    • #4

    While we do have RSI, we don't really need a real-time solution I think. Just a way to transform a set of planes in to a smooth movement for the mounted camera. Will only have a short time to actually test coming up before I need to implement it, so was wondering if other people had already found a solution. small jerking movements in between movement commands would be preeetty bad for the camera >_>

    panic mode I wish! :icon_smile:

  • Online
    SkyeFire
    Reactions Received
    1,040
    Trophies
    12
    Posts
    9,380
    • November 8, 2016 at 4:55 PM
    • #5

    Okay, I'm still lost. What exactly are you trying to do here? Is the robot controlling the camera, or vice versa? Is the camera's focus changing, or fixed? What is your feedback mechanism for closing the control loop?

  • AiSard
    Reactions Received
    1
    Trophies
    3
    Posts
    44
    • November 8, 2016 at 5:03 PM
    • #6

    No feedback loop. Set of positions/planes pointed towards a fixed point (or moving if possible)
    Problem is that in between the positions/planes that I program, the robot seems to slightly point in other directions before centering back on the object (this was from tests done last year, won't have access to robot til about Thursday to do more tests)

    Ah, when I said 'focus', I really meant 'centered'. The camera is not synced up to the robot or computer in any way at this point. More concerned about how the camera won't stay centered on the target in-between positions/commands.

    I think I had figured out an ad-hoc solution eventually, but it didn't fit all my needs and regardless I've gone and forgotten it :angry_face: (been over a year and that project got scrapped early)

  • Online
    SkyeFire
    Reactions Received
    1,040
    Trophies
    12
    Posts
    9,380
    • November 8, 2016 at 5:14 PM
    • #7

    Okay. What kind of motions are you using? PTP or LIN?

  • AiSard
    Reactions Received
    1
    Trophies
    3
    Posts
    44
    • November 8, 2016 at 6:12 PM
    • #8

    As a very basic example, I'm trying to move the camera in a curved path, with the camera always pointed towards an arbitrarily selected point.

    LIN doesn't work as it breaks up the curve and, in between the LIN commands the point is no longer centered
    PTP in between commands points in random directions due to PTP

    My question is if there are ways to, in between the commands, keep the camera targetted at the selected point (or as close as possible?..) using SPL or other commands or enabling some modes that I may not be aware of? to atleast have a smooth transition between commands (from the perspective of the camera)
    For a fixed focus point, if I set the TCP to the focus point it might work, but if its dynamic I'm kinda lost..

  • kr16_2
    Reactions Received
    3
    Trophies
    4
    Posts
    378
    • November 8, 2016 at 7:28 PM
    • #9

    Curves are usually broken into set on LIN CONT motions (the shorter the more accurate)
    Spline will not do anything better here.

    If you set TCP at a focal point of a camera than it should be no problem.
    If focal point change you will have to track it somehow and dynamically modify current TCP data (my best guess)

  • wes_mcgee
    Reactions Received
    1
    Trophies
    4
    Posts
    271
    • November 9, 2016 at 3:22 PM
    • #10

    if the focus is dynamic, then it needs to be a controlled axis. Then you can solve the path/tcp problem via offline programming(or online via RSI I suppose). Also a possibility would be if you could compute the dynamic TCP externally, and then read it via submit interpreter. We have implemented this for modifying the BASE. But changing the TOOL this way will stop the advance run pointer. Also you mentioned smoothness, of course the approximation parameters and TCP accelerations need to be adjusted.

  • Online
    SkyeFire
    Reactions Received
    1,040
    Trophies
    12
    Posts
    9,380
    • November 9, 2016 at 4:50 PM
    • #11

    Hm... I wonder if a "fixed TCP" configuration might help?

    Regardless, a calculated set of relatively short LIN motions using C_DIS or C_VEL should be sufficient to keep the camera centered and relatively well-focused on the target. I have a "GeneralEllipse" module at http://kuka.skyefire.org/ that sketches out the general idea of doing this mathematically. Although in this case, you need a rather different type of motion.

    Here's a very bare-bones example of what I'm talking about. Let's assume that you create a Base whose origin point is centered on (or beneath) the object you want to keep the camera pointed at. Program your starting position in that base, then compute your arc programatically. This is a simple single-axis arc, rotating around the Z axis of the Base:

    Code
    DECL E6POS ArcArray[1000]
    DECL FRAME RotFrame
    FOR Index = 1 TO TotalSegments
      RotFrame = $NULLFRAME
      RotFrame.A = Index * DegreesPerSegment
      ArcArray[Index] = RotFrame : StartPosition
    ENDFOR
    PTP StartPosition
    ; start camera
    FOR Index = 1 TO TotalSegments
      LIN ArcArray[Index] C_VEL
    ENDFOR
    Display More

    What this should do is create an arc of motion that keeps the camera pointed at whatever your (hand-programmed) StartPosition was pointing at, following an arc around the target at a fixed distance.
    The trick I used to make this simple was to put the Base origin at the location of the target, and then virtually rotate the Base frame while generating the array of motion points. The robot's built-in tools make it simple to rotate Base or Tool frames. By setting the Base origin at the point I want to rotate around, it becomes easy to do this.
    The key is the calculation RotFrame : StartPosition. You can look up the "Geometric Operator" in the manuals and in the Forum archives, but briefly, it's a 6DOF vector cross-multiplication. You can think of it as treating the FRAME/POS/E6POS variable on the left side of the colon as the "frame of reference", and the variable on the right side of the colon as a transform to apply starting from that frame of reference. So by arranging the operator this way, the code virtually rotates the Base and calculates the StartPosition equivalent to counteract the rotation. To put it another way, the robot thinks that the object at the Base origin is rotating, and is trying to keep the TCP at the same position/orientation relative to that object.

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