SeoulTinkr
I’ve got an OpenCR 1.0 (USB) acting as my EZB in ARC controlling a small hexapod with Dynamixel servos. ARC connection is on COM5 at 921,600 baud (firmware flashed via Arduino IDE), and the servos move smoothly using the basic servo controls. My walking sequence is built with the Auto Position (Movement Panel) skill ("walk_fwd" for forward gait, plus a "sidestep_left" action). When the Auto Position panel runs by itself, the gait is smooth.
I also added the XV11 LIDAR skill with a GetSurreal v1.2 controller on COM9 (Teensy driver installed). $LIDARDistance updates look good in a Variable Watcher. I wrote an EZ-Script loop to watch a 60-degree forward cone (330-359 and 0-30) and, if anything is <300 mm, stop the gait and play "sidestep_left"; otherwise keep "walk_fwd" going. The logic works, but with the LIDAR script running the gait hesitates every ~100 ms even in open space, and sometimes the Stop doesn’t interrupt immediately (it finishes another frame before reacting). Sleep() from 25-150 ms changes the severity but not the root issue. Without the XV11 skill started, the gait is perfectly smooth.
Here’s the simplified control part:
if ($minDist < 300)
ControlCommand("Auto Position", "Stop")
ControlCommand("Auto Position", "AutoPosition Action", "sidestep_left")
else
ControlCommand("Auto Position", "AutoPosition Action", "walk_fwd")
endif
I also tried: using a separate Script Manager to run the monitor loop, reducing frames per action, lowering servo speeds, and moving COM ports, but the micro-stutter persists. What’s the recommended ARC pattern to keep an Auto Position (Movement Panel) gait on OpenCR running smoothly while a XV11 LIDAR obstacle script can preempt it instantly-should I be queuing actions differently, using Movement commands instead of repeatedly issuing actions, or is there a better way to send a high-priority Stop?
Related Hardware (view all EZB hardware)
