My company wants to move over to robotics and they want me to make it happen. Where do I start??

  • Some more questions if I may:


    1. I found a bunch of post processors for fusion 360 for various robot manufacturers (kuka, yaskawa etc.). I played around a little and was able to get a bunch of code by posting using one of these post processors (a simple circular cutting pass). Is this the code for the robot? Could I give this code directly to the robot, thereby bypassing the need for a program such as robodk or sprutcam? I don't actually mean to do this, I'm just trying to understand.


    2. Could I get a general explanation about integrting all the different controllers? What I mean is, the robot itself has a controller, the e.o.a.t will have a controller, the rotating table and automatic tool changer need to be controlled somehow as well. I don't expect to get a full guide here, just like a general explanation about the order of operations so to speak. Am I correct in assuming all controllers will be linked somehow to the robots controller and will be given instructions from there? The code generated by whatever post processor I end up using, I need to make sure it includes instruction for the e.o.a.t and paraphernalia right?

  • 1, who knows... we have not seen the code....


    2. ultimately to control anything - you need a controller.

    to control robot arm you need robot controller.


    standard controller for automation is PLC (programmable logic controller).

    there can be some overlap what different robot controllers can do. for example robot controller can be used a PLC, and PLC can be used as a motion controller for one or more axes. but... that does not mean that each of them is an optimal solution for any control problem. each of them have strengths and weaknesses.


    in small system it is not unusual to see one controller do everything....

    complex systems need multiple controllers to get the best from each world. in such case controllers need to communicate somehow.

    in general signals are exchanged via I/O.... either physical or virtual (using network). of course to connect two (or more) nodes via some network, both nodes must support the same network type and assigned role (client/server, or master/slave etc.). few devices can act as both master and slave at the same time, sometimes on a same port.


    to program controller one can enter code manually or generate something using offline tools (CAD to Path for example). usually this involves some tweaking to get the right format out. in case of robots, this may include setup of tools, bases, loads, workspaces etc.

    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

  • I want to give some input here on robot motion.

    I am 35 started working with robots when i was 18. I have most of my life worked with applications like milling and water jet cutting requiring high accuracy. I moved on to laser cutting with robots. For the last 3 years i have worked in a lab for a large international robot company doing research on robot accuracy. And it is absolutely possible to get robots as accurate as cnc machines. However it requires a lot of knowledge and software that you are going to develop yourself because no company is going to share them with you.


    On that note it seems you are just trying to get the most out of standard robot accuracy. And the most important thing for you is going to be picking the right robot modell. Parallel arms are always a plus for robot accuracy, (example ABB 4400). Double bearing joints also improve path accuracy a lot, see Fanuc m20IA and M20IB for single vs double. Just general rule of thumb.

    So how do you get a quick overview on how well a robot performs? Well all robots are tested according to ISO 9283.

    You can usually find the results for each robot modell according to ISO 9283 by googling or by looking into their respective product manuals.

    The number you want to look at is "AT". That's going to be the general path error you will encounter.


    Also, most robot manufacturers offer optional extras when you purchase a robot. These are extra software's or improved mastering aimed att increasing the robot accuracy. These can offer huge improvements depending on make and modell so always make sure to get those when you buy a robot.

  • 1) The code came is 3 .src files (and 3 .dat files which I was unable to open), the first one looks like this ("another one" is the name I gave to this specific test):

    &ACCESS RVO

    DEF ANOTHER ONE()

    ;FOLD INI

    ;FOLD BASISTECH INI

    GLOBAL INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( )

    INTERRUPT ON 3

    BAS (#INITMOV,0 )

    ;ENDFOLD (BASISTECH INI)

    ;FOLD USER INI

    ;Make your modifications here


    ;ENDFOLD (USER INI)

    ;ENDFOLD (INI)


    ; Generated by AUTODESK Fusion 360 CAM 2.0.8560

    ; Creation date: Wednesday, June 24, 2020 14:56:06


    ; Set PTP velocity and acceleration

    $VEL_AXIS[1] = 25

    $VEL_AXIS[2] = 25

    $VEL_AXIS[3] = 25

    $VEL_AXIS[4] = 25

    $VEL_AXIS[5] = 25

    $VEL_AXIS[6] = 25

    $ACC_AXIS[1] = 20

    $ACC_AXIS[2] = 20

    $ACC_AXIS[3] = 20

    $ACC_AXIS[4] = 20

    $ACC_AXIS[5] = 20

    $ACC_AXIS[6] = 20


    ; To set 'Tool On Robot' Mode

    $IPO_MODE = #BASE


    ; Set smoothing value

    $APO.CDIS = 2


    ; Set $ADVANCE value (number of points read in advance)

    $ADVANCE = 3


    ; Set BASE

    $BASE = BASE_DATA[1]


    ; Load Tool

    ;TOOL_CHANGE(3)


    ; Set Tool

    BAS(#TOOL,3)

    $TOOL = TOOL_DATA[3]


    ; Spindle ON/speed

    ;SPINDLE_ON(11999)


    sTrace1()

    sTrace2()


    ; Spindle OFF

    ;SPINDLE_OFF()


    END


    and here is a shortened version of one of the other two (they are similar):


    &ACCESS RVO

    DEF sTrace1()

    ; Generated by AUTODESK Fusion 360 CAM 2.0.8560

    ; Creation date: Wednesday, June 24, 2020 14:56:06

    ;FOLD sTrace1

    ; Start position (joint) = {A1 5,A2 -80,A2 -80,A3 100,A4 75,A5 -60,A6 -65}

    ; Tool Number = 3

    ; Spindle Speed = 11999 RPM

    ; Program file name = sTrace1.src


    PTP {A1 5,A2 -80,A3 100,A4 75,A5 -60,A6 -65,E1 0,E2 0,E3 0,E4 0,E5 0,E6 0}

    $VEL.CP=0.02

    LIN {X -85.000,Y 0.000,Z 15.000,A -150.000,B 0.000,C 180.000} C_DIS


    ..another 200 lines that look like the one above (I'm assuming these lines are the cutting path broken down into points)...


    ;ENDFOLD



    2) The more I learn about all this the more I realize how far out of my depth I am XD


    What do you mean by network type? Forgive this silly question, but from the products I'm used to (sound and light), different controllers are just connected by an ethernet cable, is this what you mean?

    Either way, assuming they are connected physically and compatible in theory. You're saying there would be some programming to be done in order to turn theory into practice? Is there anyway to avoid writing code myself? like, an online library or something standard that the vendors of the e.o.a.t or robots might provide?


    Lets say I purchase like a package deal from a big used robots vendor that includes the bot, paraphernalia and a spindle tool. Life should be relatively easy for me. I would program a path in fusion 360 (assuming I don't use the feature described above in the "1)", this would give me g-code right?), move it over to robodk/sprutcam/similar that would translate the the g-code using the correct post processor according to the selected robot model and give me the code meant for the robots controller and bobs your uncle right? Or am I wrong? (I'm assuming I'm wrong somehow)


    But after that, I would want to purchase a different e.o.a.t that would have its own controller. Assuming I would want to integrate it into the system myself I would have to know how to make the right electrical + network connections in the i/o (assuming ill have any available and that they are compatible). And then what do I do?



    Thanks for that, that was very helpful of you =]

    Edited once, last by dodkipod ().

  • 1) yes, that looks like ready to use robot code for KRC


    2) well this a bit awkward... "Ethernet cable" is just a media... one of several (fiber-optic cable, air in case of wireless, copper in case of "wired Ethernet" etc.). this is NOT a network type... just media (just like "road" for communication packets). same media can be used for different network types. when it comes to robot systems they are usually just robot arm, controller and teach pendant - without any I/O or network. Sure you can have them but they are optional and must be purchased separately.


    Ethernet is a VERY complex topic. IT goes way beyond simply plugging some Ethernet Cable. There are many things that take place there (many different protocols etc.). What most people call Etherent is data exchange using socket messages and any or all protocols. Kind of "Jack of all trades". you send an email for example or ping some address and the message travels around the world, tries different paths, gets response and come back... somehow. Collisions etc are all part the system and get handled. This is very powerful and very flexible but also very complex and inefficient for specialized use where determinism and performance are needed.

    Therefore raw socked based Ethernet is not really good for automation or real time tasks such as motion control, safety, etc. Many controllers out there such as robot controllers, need several of those real time services at the same time. So it is goodbye to diversity and hello to specialized industrial automation networks.


    Examples of industrial Ethernet based networks are ProfiNet, EtherCat, Ethernet/IP, PowerLink etc. They are completely different and while they may use same kind of media (such as Ethernet cable) - they cannot talk to each other. So if you get robot with Ethernet/IP option but your EOAT is using ProfiNet, this will not work. Well you may be able to still band-aid it together using some additional hardware/software such as gateway but this not the native or optimal solution, To make network function you do need compatible media of course but ... you also nodes on one network segment (using that media) must be able to talk to each other. This means they must use same type of protocol and have correctly assigned roles and configuration.


    Role is type of participation some node can do. Different names exist but they are sort of same thing. I tend to use Master/Slave but this could mean Controller/Device or Scanner/Adapter or whatever ... (kind of "Shepherd/Sheep").


    Master is the type of node on the network that keeps tab on other nodes (Slaves) and controls them. Master initiates all interactions. Slaves just respond when spoken to by master.


    For a network to function there need to be one master and one or more slaves. Master to Master communication does not work. Slave to Salve communication does not work. So it is not enough to just have two products, both supporting same network type (say ProfiNet) and have them talk to each other. They also need to have specific role assigned, one of them MUST be a master and the other MUST be a slave... then they stand a chance and may be able to exchange data - if configured correctly.


    One controller may support one more network types. The more the merrier (more flexible). But just because some controller supports some network (protocol). it may not implement all its features or both roles (there is a reason compatibility lists exist). I hope this very broad overview paints the picture a bit clearer....


    so if EOAT has own controller (say RobotiQ gripper) then you need to see:

    1. what Network types it supports

    2. what roles this product supports. Obviously such controller would be (locally) a master to its own gripper actuator but - in terms of Network, this node would be a slave to some other node (Robot controller). This type of role assignment allows one network master (robot) to manage and control multiple slaves (grippers and whatever else).

    3. etc.



    NOTE about point 2: Although this is the usual setup, that is not always the case. There ARE products that are peripherals to a robot but can only be a network master. This is weird but ... it does exist. Since robot usually only gets ONE interface for some network type, and that interface is able to act as Slave you probably can use this periphery but.... you likely will not be able to have anything else on that that network. An example of such unusual product would be some of Mueller ("Miller") weld controller.


    The point is .... expect anything and ... read the specs

    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

  • I would like to add on topic the topic of the Fusion Post-Processor.


    I do agree that the code looks just fine.
    But there's a lot more to offline programming then just translating a Gcode to the robot code.
    A good OLP (offline programming software) will help you avoid common robotic issues like singularities, joint limits and reach limits.


    My guess would be that the method proposed by Fusion 360 works for simple projects, but you would need a more advanced tool later down the road.


    Jeremy

    RoboDK - Simulation and Offline programming software for industrial and collaborative robots.

    Visit us at RoboDK.com
    Take a look at our tutorial videos on our YouTube channel.

  • Hi there, late reply but may be useful. I’m a Sprutcam user and use it for milling with a Fanuc robot. Sprutcam is basically a CAM software capable of making code for robots. Most CAM softwares cannot do this, 5-axis simultaneous is very difficult, but for a 6 axis robot it’s even harder.

    Robots have issues like singularity that a normal CNC doesn’t have And Sprutcam has functions to check singularities and adapt the orientation of the robot.


    Translating CNC G-code to robot code is asking for crashes. It’s not rare that in the created code one of the axis suddenly flips and the robot will try to achieve this.

    Checking the created code is hard, can be done by the offline program from the manufacturer (like Roboguide for Fanuc), but this will slow you down a lot as you cannot see changes instantly but first have to post g-code, translate, load and play.


    The postprocessor of any CAM is the blueprint of the posted program for the robot. It will translate the set speed, position data, etc to how the robot needs to read it etc.

    These postprocessors aren’t always available for every robot but it’s growing. A post processor editor usually is provided but you need to know what you’re doing, it’s basically coding.

    I’ve hired somebody to help me with it and it took a full 2 days to have it working like a charm.

  • The best way to start building robots . . . is to just start building robots. A pile of loose motors, sensors, and microcontrollers looks daunting at first, but you can find robot kits and instructions to fit your skill level. If you're just starting, a good kit is the Lego Mindstorms NXT

Advertising from our partners