RobotStudio event

Limitations using addin and/or socket communication

Hello


We are two software engineering students studying at University West in Sweden. This year we are doing our thesis and we have a few questions that are related to robotstudio.  

The objecvtive of the thesis work is to automate the process of modeling, programming and simulating by just having the user input a few parameters.

After searching around the forums and looking at the API we have bumped into some problems. As we are far from experts at RobotStudios we were hoping some of you could help us out.


These are the things that we want to have clearified:

  • Limits on functionallity when communicating with the virtual controller through socket


From what we’ve understood using communication with the virtual controller to control the program will limit us to the RAPID-coding and we wont be able to acess the 3D-modeling - is that true?


  • Limits on functionallity when coding an addin


We did code a small addin to try it out and found one thing which bothered us a bit, when starting robotstudio our Addin didn’t load on startup and this might pose a problem for us.  


Comments

  • Heres a little followup on the questions.

    What we are trying to achieve is completely simulation based.
    We want to be able to build a cell and program the robot using the API and/or the VC.

    Can you build a model using the VC?
    Can you interact with the 3d model and simulate when using connection via the VC?

  • Have you check the help file for the SDK ? you can see all functions present for your Addin
    I've developp an addin too and they are to many function


    Regards,

    Armand
  • Maybe a strange question in an ABB forum, but are you limited to using ABB software (and hardware)? I know that a lot of academic institutions use the ROS platform, of which an industrial version is available (link). My experience with the platform is extremely limited, but it could be useful in your case as it includes an open-source development platform, programming tools and simulation tools. Apparently you can use it to control industrial robots (including ABB ones) through some kind of messaging between the software platform and the robot controller, but you'll have to look in the ROS documentation to get the details on that.
  • I think that, they must to use ABB software and Hardware, it's better to create specific component for this project.

    But, they can ask the school if it's possible to work with ROS platform, it's a good idea

    Regards,
  • Oscar_Berntsson
    edited March 2015
    Yes, we are indeed limited to using ABB Robotstudio.
    Like I said what we are trying to achieve is strictly simulation-based, we want to control Robotstudio - not a robot.

    We've started doing this with an addin but we don't want to lock ourselves up if there are different approaches.
    Post edited by Oscar_Berntsson on
  • Hi Oscar,

    As i said before, they exist a SDK ( Start Developement Kit ) for ABB RobotStudio 
  • Hi Oscar!

    When I see you are studying at University West lots of good memories pops up. I studied there when it was called Högskolan Trollhättan Uddevalla ;)


    Making it easier and faster to model and create programs is essential for bringing more automation to small and medium sized companies that can not afford having dedicated simulation and programming experts. I'm looking forward to learn more about your findings.


    Let me try to help you sort out a few things. Lets start with the big paintbrush and dig into the details later.


    Almost everything that you can do with the RobotStudio User Interface you can also do programmatically using the APIs we make available in the RobotStudio SDK.

    You can certainly import and place CAD models, as well as creating simple solid primitives using the API.

    RobotStudio has a feature called SmartComponents which makes it possible author and use components with or without CAD data that also has a built in behaviour. They can have properties such as length and height or whatever you want, and signals that can be connected with other components. The can also be animated.

    There is a large library of base components that you can use to assemble higher order components. This can be done in the UI as well as using the API. We also have an XML format which makes it possible to specify the components in a declarative fashion that can be imported into RobotStudio.

    So can you do modelling using the API? Yes!

    The RobotStudio object model also have a representation of robtargets, workobjects and move instructions of the RAPID language. Thus you can programmatically create such objects and using them create (or add modules to) a RAPID program.

    We call that RAPID Sync, when you synchronize the 3d representation in the "modelling world" with a the RAPID program in the Virtual Controller.

    Of course there are APIs for starting and stopping a simulation including the robot motion based on the created RAPID program.

    Can you create and simulate robot programs based on the models? Yes!

    Regarding communication with the controller, you can use sockets if you want. There is also a .NET SDK called PC SDK which is possible to use from a RobotStudio Add-In.

    In order to help you more I would like to ask you if you have thought more about what the purpose of the communication is?

    Would you like to interact with something in the 3d view at the same time as the simulation is running? Its not 100% clear to me ;)


    About loading of Add-Ins:

    You can right click on the Add-In in the Add-Ins browser and select "Auto-Load". Have you tried that?





    Best Regards, Niklas Skoglund
    ABB Robotics

    Developer Center
    RobotStudio Blog
  • Hi Oscar!

    When I see you are studying at University West lots of good memories pops up. I studied there when it was called Högskolan Trollhättan Uddevalla ;)


    Making it easier and faster to model and create programs is essential for bringing more automation to small and medium sized companies that can not afford having dedicated simulation and programming experts. I'm looking forward to learn more about your findings.


    Let me try to help you sort out a few things. Lets start with the big paintbrush and dig into the details later.


    Almost everything that you can do with the RobotStudio User Interface you can also do programmatically using the APIs we make available in the RobotStudio SDK.

    You can certainly import and place CAD models, as well as creating simple solid primitives using the API.

    RobotStudio has a feature called SmartComponents which makes it possible author and use components with or without CAD data that also has a built in behaviour. They can have properties such as length and height or whatever you want, and signals that can be connected with other components. The can also be animated.

    There is a large library of base components that you can use to assemble higher order components. This can be done in the UI as well as using the API. We also have an XML format which makes it possible to specify the components in a declarative fashion that can be imported into RobotStudio.

    So can you do modelling using the API? Yes!

    The RobotStudio object model also have a representation of robtargets, workobjects and move instructions of the RAPID language. Thus you can programmatically create such objects and using them create (or add modules to) a RAPID program.

    We call that RAPID Sync, when you synchronize the 3d representation in the "modelling world" with a the RAPID program in the Virtual Controller.

    Of course there are APIs for starting and stopping a simulation including the robot motion based on the created RAPID program.

    Can you create and simulate robot programs based on the models? Yes!

    Regarding communication with the controller, you can use sockets if you want. There is also a .NET SDK called PC SDK which is possible to use from a RobotStudio Add-In.

    In order to help you more I would like to ask you if you have thought more about what the purpose of the communication is?

    Would you like to interact with something in the 3d view at the same time as the simulation is running? Its not 100% clear to me ;)


    About loading of Add-Ins:

    You can right click on the Add-In in the Add-Ins browser and select "Auto-Load". Have you tried that?





    Best Regards, Niklas Skoglund
    ABB Robotics

    Developer Center
    RobotStudio Blog
  • Thanks for your answers! 

    Here is a late followup.

    We're working with a construction company who is integrating robots in their production of constructing customizable houses.
    Since the houses are customizable the walls being constructed varies a lot and creating models/simulations and testing all robot configurations takes a lot of time.
    The station the work is to be conducted at will look the same for each simulation but operations and the wall itself will differ.  

    What we are trying to achieve is a system where the user can load a station, specify a CAD-model, targets, paths, IO; then auto generate RAPID-code and run a simulation.
    We're thinking of a solution using XML to send the data.

    We have now ran into the problem where we cannot find a way to add/create a virtual controller to the system after loading a station. We've looked around on the forum and found a post about this where it was stated this could not be done, although this was back in 2006. 

    Niklas, to you questions:

    One of the requirements our client had was to create a Client/Server solution so that they could have a central server which the simulations could be run at and that's the purpose of the communication. We solved this by implementing a socket server into an add-in in RobotStudio.

    Interaction with the 3D-model during simulation is not required at this point, but might be more interesting later on.