Kinect Xbox 360 Depth Mapping icon Kinect Xbox 360 Depth Mapping Converts Xbox 360 Kinect depth frames into NMS obstacle scans for ARC path planning, SLAM, and obstacle avoidance. Try it →
South Africa
Asked

Sound Servo To XL-320 On Darwin Mini

I’m trying to get my ROBOTIS DARWIN MINI (OpenCM9.04, 16x XL-320) to "talk" using the Sound servo (PC Speaker) skill, but the selected servo never moves even though the skill is clearly reading audio. I flashed the ARC-compatible firmware to the OpenCM9.04 per /Hardware/17530 and I’m connected over USB (Board Index 0). I can control servos with scripts and Auto Position just fine, so the connection and power are good.

What I did:

  • Picked the head tilt XL-320 as the "mouth" (its ID is 2 on my robot). From what I understand, the firmware maps Dynamixel IDs to ARC servo ports (D0..D15?). I set Sound servo (PC Speaker) to drive D1 (assuming ID 2 maps to D1), and also tried a few others (D0..D5) in case my mapping guess is wrong.
  • The Sound servo skill shows the Level value jumping with music, and the servo Position readout updates between my Min/Max as expected.
  • If I run a quick ARC JavaScript test, the servo moves instantly:
// test jaw on D1
Servo.setPosition("D1", 120);
Sleep(500);
Servo.setPosition("D1", 80);
  • I paused/closed my Auto Position control so nothing else is holding the servo. I also tried toggling Release and different Scalar/Min/Max values. Same result over Bluetooth (more latency, but still no movement from the Sound servo output).

Is Sound servo (PC Speaker) supposed to directly drive the XL-320s on the OpenCM9.04 firmware, and if so what is the correct ARC port mapping for Darwin Mini (D0..D15 vs V0..V15) to make the audio-driven movement actually reach the selected servo?



Related Hardware (view all EZB hardware)
Darwin Mini by Robotis
ROBOTIS MINI for Synthiam ARC: 16 XL-320 servos, OpenCM9.04 controller, 3D-printable frame and Bluetooth/firmware setup tips.
USB / Bluetooth
Servos 16
Camera
Audio
UART
I2C
ADC
Digital

Related Robot Skills (view all robot skills)
Dynamixel by Robotis
Open-source ARC plugin to control Robotis Dynamixel servos (XL-320, AX-12, XL430) via EZ-B, Arduino or Robotis. Supports position, speed, accel.
Maps PC audio volume to servos in real time with scalar, min/max, invert & multi-servo options-ideal for syncing robot mouth to sound

ARC Pro

Upgrade to ARC Pro

Experience early access to the latest features and updates. You'll have everything that is needed to unleash your robot's potential.

Author Avatar
PRO
Canada
Twitter YouTube GitHub
#1  

Yes - Sound servo (PC Speaker) should be able to drive the XL-320s on Darwin Mini as long as the Dynamixel skill is translating the selected virtual servo into the correct XL-320 ID.

Key point: use Virtual servo ports, not D0/D1

For the Dynamixel Robot skill, ARC maps Dynamixel IDs to virtual servo ports:

  • V0 = Dynamixel ID 0
  • V1 = Dynamixel ID 1
  • V2 = Dynamixel ID 2
  • etc.

So if your XL-320 is ID 2, the servo should be assigned and controlled as V2, not D1.

Why your JavaScript test worked on D1

That suggests D1 is being used for a normal servo port or another control path, but the Sound Servo skill is meant to move the servo that’s configured in its own port selection. For Dynamixel robots, that selection should typically be the virtual port exposed by the Dynamixel robot skill.


What to do

1) Confirm the Dynamixel skill is configured for the servo

Open the Dynamixel robot skill:

  • Click the kebab/menu icon on the top-right of the skill
  • Choose Configure
  • Make sure:
    • Board Index = 0
    • Port = the OpenCM UART that matches your setup
      • For OpenCM9.04 without expansion board: UART #0
    • ID 2 is enabled
    • Protocol matches the XL-320
    • Save the settings

The relevant docs are here:


2) In Sound Servo, select the virtual port

When configuring Sound servo (PC Speaker):

  • Open the skill’s kebab/menu
  • Choose Configure
  • For the servo port, select V2 if your mouth servo is Dynamixel ID 2

If you select D1, Sound servo will not be addressing the Dynamixel mapping you expect.


3) Test the exact same port with a script

If the Dynamixel skill is set up right, this should move the same servo:

Servo.setPosition(V2, 120);
sleep(500);
Servo.setPosition(V2, 80);

If that works, then Sound servo should be able to drive it too once it’s pointed at V2.


Important note about port mapping on Darwin Mini

For a Darwin Mini using the Dynamixel Robot skill:

  • Do not think in D0..D15 for XL-320 ID mapping
  • Think in V0..V15

The virtual servo port number equals the Dynamixel ID.

So in your case:

  • XL-320 ID 2 V2

If Sound servo still doesn’t move it

If Sound servo is reading audio but the servo still doesn’t move after switching to V2, the next things I’d check are:

  1. Is the Dynamixel skill actually enabled and connected to the same board index?
  2. Is another skill overriding the servo output?
    • Auto Position, Pose, or a script could be holding the port
  3. Does the mouth servo move when driven directly with V2?
  4. Does Sound servo show the same exact port as the Dynamixel skill expects?

Best next check

Could you confirm these two things?

  1. In the Dynamixel skill, is ID 2 enabled and assigned to V2?
  2. In Sound Servo, is the selected port set to V2 or still D1?

If you want, I can also help you verify the OpenCM UART #0 / baud / protocol settings for the Darwin Mini so everything matches cleanly.


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.