Asked — Edited

Looking For Guidance On Using Synthiam Software To Customize Robot Behaviours

Hello Everyone,

Since I'm not too experienced with Synthiam, I'm seeking tips on how to modify robot behaviors for a project I'm working on. My objective is to build an autonomous robot capable of carrying out a wide range of tasks, including interacting with objects, traversing obstacles, and obeying voice commands.

I've been experimenting with Synthiam's various scripting options and controls, but I'm having trouble figuring out how to effectively combine different behaviors and sensors. Specifically, I want to know:

The Best Ways to Blend Several Behaviors: How can different behaviors (such as avoiding obstacles and manipulating objects) be easily integrated into one control scheme? Are there any tutorials or examples that clearly illustrate this?

Maximizing the Use of Sensors: My robot has several sensors, including a camera, an infrared sensor, and an ultrasonic sensor. To ensure that the robot makes precise decisions in real time, how can I organize or prioritize the data coming from these sensors? Any advice on using Synthiam for sensor fusion?

Integration of Voice Command: The idea of using voice commands to operate specific actions appeals to me. Has anyone successfully used Synthiam for voice recognition? If so, could you describe any problems encountered and explain how to overcome them?

Managing Errors and Troubleshooting: Lastly, I would appreciate any advice on debugging or troubleshooting when something doesn't function as expected. Are there any specific Synthiam tools or methods that can help expedite the process?

I look forward to your recommendations and experiences. I would be very grateful for any assistance or materials you could provide.

Thank you in advance.


ARC Pro

Upgrade to ARC Pro

ARC Pro will give you immediate updates and new features needed to unleash your robot's potential!

#1  

About your previous post, you do not appear to have installed or used Synthiam ARC yet. It can be downloaded and installed from here: https://synthiam.com/Products/ARC

Your goals are ambitious, but possible by combining several robot skills. First, I recommend accurately documenting your goals with detailed outcomes rather than generically listing actions. For example, "interacting with objects" is generic and does not specify a desired result. The question would be, what kind of objects or objects, and what will I do with them? Are they being sorted or moved? Identifying and knowing what you want the robot to do is essential for pre-planning, not just for the programming but also for the robot design.

On that note, knowing the robot's physical design would be useful. Do you have an existing robot? Have you sketched one that you have envisioned? Knowing what hardware it will be using and its physical configuration would also be useful.

To help you plan the robot, we have a great guide here: https://synthiam.com/Support/Get-Started/how-to-make-a-robot/make-a-diy-robot

That guide will explain how to split your goals into smaller micro-goals and identify the robot's physical hardware appearance and design.

If you follow the additional steps in that guide, it will explain how to choose robot skills to accomplish a variety of tasks.

PRO
Canada
#2  

Great to hear about your project! Let's break down your questions and provide some guidance on how to achieve your goals using Synthiam ARC.

1. Blending Several Behaviors

To integrate different behaviors such as obstacle avoidance and object manipulation, you can use a combination of scripting and control commands. Here are some steps to get you started:

  • Use ControlCommand(): This function allows different robot skills to communicate with each other. For example, you can use the ControlCommand() function to trigger behaviors based on sensor inputs.

  • Script Skill: Use the Script skill to write custom scripts that can handle complex logic. You can use JavaScript or Python for this. Here's an example of how you might use JavaScript to combine behaviors:

// Example script to combine obstacle avoidance and object manipulation
function avoidObstacles() {
    // Logic for obstacle avoidance
    if (Ping.get('D0', 'D1') < 20) {
        Movement.stop();
        Movement.left(100, 500); // Turn left for 500ms
    } else {
        Movement.forward(100);
    }
}

function manipulateObject() {
    // Logic for object manipulation
    if (Camera.isObjectDetected('objectName')) {
        Movement.stop();
        // Add code to manipulate the object
    }
}

// Main loop
while (true) {
    avoidObstacles();
    manipulateObject();
    sleep(100); // Sleep for 100ms to prevent CPU overload
}
  • Auto Position Skill: For complex movements like picking up objects, you can use the Auto Position skill to create servo animations.

2. Maximizing the Use of Sensors

To organize and prioritize sensor data, you can use a sensor fusion approach. Here are some tips:

  • Sensor Fusion: Combine data from multiple sensors to make more accurate decisions. For example, you can use both the infrared sensor and the ultrasonic sensor to detect obstacles.

  • Prioritize Sensors: Decide which sensor data is more critical for specific tasks. For example, use the camera for object detection and the ultrasonic sensor for obstacle avoidance.

  • Use Variables: Store sensor data in global variables and use them in your scripts. Here's an example:

var distance = Ping.get('D0', 'D1');
var objectDetected = Camera.isObjectDetected('objectName');

if (distance < 20) {
    // Obstacle detected
    Movement.stop();
} else if (objectDetected) {
    // Object detected
    Movement.stop();
    // Add code to manipulate the object
} else {
    Movement.forward(100);
}

3. Integration of Voice Command

Synthiam ARC supports voice recognition through various skills. Here’s how you can integrate voice commands:

  • Speech Recognition Skill: Use the Speech Recognition skill to convert voice commands into text. You can then use the ControlCommand() function to trigger actions based on the recognized text.

  • Example: Here’s how you can use the Speech Recognition skill to control your robot:

// Add this script to the Speech Recognition skill
if ($BingSpeech == "move forward") {
    ControlCommand("Movement Panel", "Forward");
} else if ($BingSpeech == "stop") {
    ControlCommand("Movement Panel", "Stop");
}

4. Managing Errors and Troubleshooting

Debugging and troubleshooting are crucial for any robotics project. Here are some tips:

  • Variable Watcher: Use the Variable Watcher skill to monitor the values of your variables in real-time. This can help you understand what’s happening in your scripts.

  • Logs and Print Statements: Use print() statements in your scripts to log information. This can help you identify where things are going wrong.

  • Error Handling: Implement error handling in your scripts to manage unexpected situations. For example:

try {
    // Your code here
} catch (error) {
    print("An error occurred: " + error.message);
}
  • Documentation and Tutorials: Refer to Synthiam’s documentation and tutorials for specific skills. Here are some useful links:

By following these guidelines, you should be able to effectively combine different behaviors, maximize the use of sensors, integrate voice commands, and manage errors in your project. If you have any specific questions or run into issues, feel free to ask!


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.