Asked — Edited
Resolved Resolved by Synthiam Support!

JD On A Chassis With 2 X 360 Servo But Only One Movement Panel@Athena

Hello Athena,

I have a JD Humanoid Robot and a separate chassis that I would like to use as a transport platform for the JD. The chassis is equipped with two continuous rotation servos, which are connected to the JD's EZ-B v4 controller on ports D20 and D21. I want to add the Continuous servo Movement Panel skill to control these servos, but I already have the Auto Position skill in use, as I've set up several frames for different actions. Since only one Movement Panel can be active at a time, how can I resolve this issue to effectively control both the chassis and the JD's actions?

User-inserted image


Related Hardware JD Humanoid

ARC Pro

Upgrade to ARC Pro

ARC Pro is more than a tool; it's a creative playground for robot enthusiasts, where you can turn your wildest ideas into reality.

PRO
Canada
#1  

Hello! It's great to hear about your project with the JD Humanoid and the chassis. You're right that ARC allows only one Movement Panel to be active at a time. However, you can still achieve your goal by using a combination of scripting and the existing skills. Here's how you can manage both the chassis and JD's actions:

Step-by-Step Solution

  1. Use the Auto Position Skill for JD's Actions:

    • Continue using the Auto Position skill for JD's actions. This skill is perfect for managing complex movements and animations for the JD Humanoid.
  2. Control the Chassis with Scripts:

    • Since you can't have two movement panels, you can control the continuous rotation servos on the chassis using scripts. You can manually set the PWM values for the servos connected to ports D20 and D21.
  3. Create a Script for Chassis Movement:

    • You can create a script to control the chassis movement. Here's an example of how you might control the continuous rotation servos:
    // Forward movement
    Servo.setPosition(D20, 180); // Set the left servo to move forward
    Servo.setPosition(D21, 0);   // Set the right servo to move forward
    
    // Stop movement
    Servo.setPosition(D20, 90);  // Stop the left servo
    Servo.setPosition(D21, 90);  // Stop the right servo
    
    // Reverse movement
    Servo.setPosition(D20, 0);   // Set the left servo to move backward
    Servo.setPosition(D21, 180); // Set the right servo to move backward
    
  4. Integrate Scripts with Auto Position:

    • You can integrate these scripts with the Auto Position actions by using the ControlCommand() function. For example, you can trigger the chassis movement script before or after a JD action.
  5. Switch Between Actions:

    • Use the ControlCommand() to switch between JD's actions and chassis movement. For example:
    // Execute a JD action
    ControlCommand("Auto Position", "AutoPositionAction", "Wave");
    
    // Move the chassis forward
    ControlCommand("Script Manager", "Start", "ChassisForwardScript");
    

Additional Tips

  • Testing: Test each script separately to ensure the servos respond correctly before integrating them into a larger sequence.
  • Fine-Tuning: Adjust the servo positions and speeds as needed to achieve smooth movement.
  • Safety: Ensure that the JD is securely mounted on the chassis to prevent any falls or damage during movement.

By using scripts to control the chassis, you can effectively manage both the JD's actions and the chassis movement without needing two movement panels. If you have any more questions or need further assistance, 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.
#2   — Edited

A robot or any animal, etc have more than one method of movement. In this case, you’re having two methods of movement, which is essentially two separate robots. Because you have both the robot and platform connected to the same ezb controller.

There is no easy way to make this work because of you ask the robot to move forward, what exactly are you asking to move forward? The platform or the robot.

so your decision has to be to decide if you’re using the jd robot to walk and move. If not, then import the Auto Position actions into the Auto Position that isn’t a movement panel.

athena would have difficulty understanding the question because it doesn’t really fit within the way robots are programmed and designed. As you essentially have two separate robots in the question. But we’ll figure out how to make it work:)

PRO
Germany
#3  

If i use a second controller for the chassis, will we have the same problem with the limitation of one Movement Panel ?

#4  

No, because you use two copies of arc. Robots have one program. Programs aren’t shared across robots. If you need to have the robots communicate to each other, there’s plenty of methods to do it. Mqtt is the easiest. That way, both ARC instances can communicate to each other for various tasks.

but, Athena’s suggestion would work. You just won’t be able to control both robot movements with global movement commands.

Consider this if you say robot move forward, what of your two robots are you referring to?

I would suggest adding speech commands with scripts to move the cart. So robot move forward will move jd with movement commands. And cart move forward would move the car with script commands.

PRO
Germany
#5  

yes ok. Seems to be the only way to handle this configuration. Let's see what i can do. Thanks

PRO
Synthiam
#6  

Yeah i think they're suggestions are spot on

  1. use two copies of ARC and have them communicate via mqtt. communication is most gonna be pausing and unpausing speech recognition for each ARC instance based on what robot you're talking to

  2. use one copy of ARC and choose what robot will be the movement panel. the other robot will have to use a script for it's movement control, which is totally fine. create scripts for Forward, Reverse, Left, Right, Stop. And you can add joystick buttons and speech commands to trigger the scripts.

For option #2 you just have to choose what robot will be the movement panel. Since jd robot will be cruising around on his skateboard robot, i'd choose the skateboard robot as being the continuous rotation servo movement panel. then, i'd remove the Auto Position Movement Panel from the project and add a non-movement panel auto position. you can use the import feature of the non-movement panel Auto Position to import the actions from the jd project.

@athena could probably explain better

PRO
Canada
#7  

Absolutely! Let's break down the two options for handling your configuration:

Option 1: Use Two Copies of ARC

  • Setup: Run two instances of ARC, one for each robot (JD Humanoid and the chassis).
  • Communication: Use MQTT to allow the two ARC instances to communicate. This can be useful for coordinating actions or pausing/unpausing speech recognition based on which robot you're addressing.
  • Control: Each robot will have its own movement panel, so you can use global movement commands for each independently.

Option 2: Use One Copy of ARC with Scripted Control

  • Setup: Decide which robot will use the movement panel. Since JD will be on the chassis, it might make sense to use the Continuous servo Movement Panel for the chassis.
  • Auto Position: Remove the Auto Position Movement Panel from the project and add a non-movement panel Auto Position skill. You can import the actions from the JD project into this non-movement panel version.
  • Scripted Movement: Create scripts for the JD's movements (Forward, Reverse, Left, Right, Stop) and use these scripts to control JD's actions. You can trigger these scripts using joystick buttons or speech commands.
  • Control: The chassis will use the Movement Panel for its movements, while JD's movements will be controlled via scripts.

Implementation Tips:

  • Speech Commands: You can set up specific speech commands to control each robot. For example, "JD move forward" could trigger JD's movement script, while "Chassis move forward" could use the movement panel.
  • Joystick Control: Assign joystick buttons to trigger the movement scripts for JD, allowing for manual control.

By choosing one of these options, you can effectively manage both the JD Humanoid and the chassis, ensuring they work together seamlessly. If you have any more questions or need further assistance, 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.
PRO
Germany
#8  

ok i have to read carefully all these infos. I just discover that there is an Auto Position skill under servo skills! i hope i can make it , it would be great.