Asked

Integrating Synthiam Skills For Robots

, I have recently purchased some heavy-duty robots capable of handling a payload of approximately 50 lbs, and they are functioning excellently across various operations. I'm interested in implementing Synthiam's skills with these robots and would like to know the process for doing so. Specifically, I am curious about how the robots can communicate with one another using Synthiam ARC. While I understand communication can occur through inputs and outputs, I'm looking for more complex interactions, such as communicating specific measurements like cutting a board to 27 1/2 inches or enabling features like face detection.

Does Synthiam provide any examples or video demonstrations of industrial robots using Synthiam skills? I noticed that there wasn't a dropdown option to select an industrial robot when posting, so I chose the EZ-B v4 as the category. If I could successfully integrate these capabilities, it would significantly enhance the functionality and collaborative potential of my robots.


Related Hardware EZ-B v4
Related Controls EZMQTT Client EZMQTT Broker

ARC Pro

Upgrade to ARC Pro

Stay at the forefront of robot programming innovation with ARC Pro, ensuring your robot is always equipped with the latest advancements.

PRO
Canada
#1  

Hi there, and thanks for reaching out with your questions! It sounds like you’re looking to leverage Synthiam ARC’s power to enable more advanced, collaborative interactions between your industrial robots. I’m happy to help clarify how you can get started and integrate more complex communications.

Below are some insights and steps to consider:


How Robots Can Communicate Beyond Basic I/O

  1. Global Variables & Command Communication:
    ARC uses global variables (e.g., getVar("$SomeVar") and setVar("$SomeVar", value)) and the ControlCommand() method to allow different robot skills to share information. This means one skill can send a measurement (like "27 1/2 inches") as data that another skill-or even a skill running on another robot-can process, enabling sophisticated coordinated operations.

  2. Custom Robot Skills:
    To support features like face detection, digital measurements, or any advanced sensors, you can build custom robot skills. These skills can process sensor data (such as camera feeds) and then communicate results to other robots using ARC’s communication framework. If you’re keen on building or modifying skills, check out our guide on creating a robot skill:
    Create a Robot Skill.

  3. Using the Command Duplicator & EZB Connections Skills:
    Since your project already uses the Command Duplicator and EZB Connections skills, you can leverage them to send the same commands (or coordinated commands) across multiple EZ-B v4 devices. This setup lets you build synchronized actions-even when messages get more complex than a simple on/off signal.


Industrial-Grade Interactions

While Synthiam ARC is designed with hobbyist robots in mind, its flexibility makes it suitable for more industrial settings as well. Here are some pointers:

  1. Customized Data Exchange:
    You can design skills that not only send commands but also exchange data such as measurements or sensor status. For example, if a cutting process is underway, a skill can broadcast the target length (like 27 1/2 inches) to a partner skill controlling an actuator or conveyor system.

  2. Sensor Integration & Advanced Features:
    Complex features such as face detection can be implemented using plugins or third-party skills found in our robot skill Store. If an out-of-the-box solution isn’t available, the custom skill framework provides the flexibility to integrate almost any sensor - you can write the processing code in JavaScript or Python within ARC.

  3. Video Demonstrations & Examples:
    While there aren’t many industrial-specific video demos publicly available on our site at this time, many of our tutorials and documentation cover advanced implementations that can be adapted to your industrial robots. A good starting point is our robot tutorial that walks through customizing a DIY robot project:
    How to Make a DIY Robot.


Next Steps & Follow-Up Questions

  • What specific interactions or coordinated features are you most interested in?
    This could help us point you to the most relevant skills or code examples.

  • Are you considering developing custom skills for tasks like data communication or sensor integration?
    If so, we can provide a code snippet to help you get started. Below is a brief example in JavaScript on how to send a measurement value:

    // Example: Sending a measurement value to a global variable
    var measurement = 27.5; // This value could come from a sensor reading
    setVar("$CutLength", measurement);
    
    // Later, another skill can retrieve and utilize the measurement
    var receivedCutLength = getVar("$CutLength", 0);
    print("Cut length received: " + receivedCutLength);
    
  • Would you like guidance on setting up a custom communication protocol using ARC’s global variables and command duplication?

Feel free to ask for further details or additional examples so we can ensure you make the most of ARC’s capabilities for your industrial applications.

Looking forward to hearing more about your project and further assisting you!

Best regards,
Athena
Synthiam ARC Support Technician


I am a customer support GPT-powered AI and still learning. If you have doubts about my response, please use the support documentation to verify my answer.
#2   — Edited

I don't think Athena truly understood the question. What you're asking is to have multiple ARC instances communicate with each other, correct? The question sounds like you're asking robot skills to communicate with each other, and that's what her answer was.

However, if you're looking to have ARC instances communicate with each other, there are a few ways, but the most popular on all robot platforms is using MQTT. You can have a broker and multiple clients. There are several robot skills in the communication category of ARC, which you can also view on the support robot skill page.

PRO
Canada
#3  

Below is some additional clarification for using MQTT to have multiple ARC instances communicate with one another:


MQTT for Inter-ARC Communication

If your goal is to have separate ARC instances (each perhaps running on different machines or even onboard different robots) talking with each other, the most popular and effective method is indeed using MQTT. In this scenario:

  • MQTT Broker: Runs as a centralized message hub. You can add the EZMQTT Broker skill to one of your ARC projects or run it on a dedicated machine.
  • MQTT Client: Every ARC instance you wish to communicate from can include the EZMQTT Client skill. This client connects to the broker, subscribes to topics, and publishes messages.

For example, one ARC instance could publish a message (e.g., a measurement value or a command) to a topic like "robot/measurement", and other ARC instances listening on that topic will receive and process that message.


Steps to Set This Up

  1. Add the Required MQTT Skills:

    • Add the EZMQTT Broker skill to one ARC project or a dedicated machine that will act as your broker.
    • Add the EZMQTT Client skill to each ARC instance you want to participate in the communication.
  2. Configure Your Broker:

    • Open the EZMQTT Broker configuration in your ARC and click the start button. This instance will now listen for incoming connections from clients.
  3. Configure Each Client:

    • In each ARC instance running the EZMQTT Client, set the broker IP address to point to your broker’s address.
    • Define topics for subscription and messages you intend to publish.
    • For example, you might have one client publish a "cutting measurement" message to a topic and another client subscribe to that topic to further control an actuator or display the measurement.
  4. Sending and Receiving Data:

    • Use the MQTT commands in your ARC skills. For example, to publish a string message you might use:

      // Publish a string to a topic called "robot/command"
      ControlCommand("EZMQTT Client", "PublishString", "robot/command", "Cut board to 27.5 inches");
      
    • And in the subscribing ARC instance, your EZMQTT Client skill will catch the message, executing a script that you define (which might set a global variable or take an action based on the message).


Additional Resources

These manuals provide further detail on setup, configuration, and command usage that can help you build and fine-tune your inter-ARC communication network.


Questions for Clarification

  • Are there specific data types or commands (such as the measurement or face detection alerts) that you intend to exchange between the ARC instances?
  • Would you like to see a detailed code example or workflow on handling, say, face detection events or coordinating measured values across multiple robots?
  • Are you planning to centralize all communications through a single broker, or are you envisioning a more distributed peer-to-peer model?

Feel free to provide more details about your scenario so I can offer more tailored guidance and examples. Happy building!


I am a customer support GPT-powered AI and still learning. If you have doubts about my response, please use the support documentation to verify my answer.