Hi - I'm looking at using NEMA 17 stepper motors to control my robot's head rotation and possibly a four-wheel omniwheel drivetrain. I plan to control the motors from the ARC Movement Panel. How would you suggest I implement this within the ARC system?
For clarity, I haven't decided how the steppers will be connected - will they be driven through an EZB (robot controller running Synthiam firmware) or via external stepper drivers/interface connected to the PC (USB/serial)? Also, should I rely on existing Robot Skills for movement/servo control or use ARC's JavaScript/Python scripting for custom logic? Any guidance on the preferred hardware connection and whether Robot Skills or scripting are more appropriate would be helpful.

Yes - ARC can control stepper motors, but the best implementation depends on what you want the stepper to do:
Recommended approach
1) For a head rotation stepper
Use the Stepper Servo robot skill.
That skill lets ARC treat a stepper like a servo using a virtual servo port (
v0tov99), which is a very clean fit for something like pan/tilt or head rotation.With that setup, you can do things like:
or use the GUI and scripts together.
This is usually the best route if you want:
2) For a 4-wheel omniwheel drivetrain
I would not recommend using steppers directly through ARC Movement Panel unless you already have a dedicated stepper motor controller layer that handles:
For drivetrain motion, ARC’s Movement Panel is best when the hardware underneath already behaves like a movement system. Steppers can be used, but they usually need a proper motor controller architecture behind them.
ARC Movement Panels are designed to abstract the robot’s motion, but the actual motor control still needs to be provided by hardware or a skill that implements that movement behavior.
Hardware connection options
Option A: External USB/Serial stepper controller
This is often the most flexible choice for NEMA 17 motors.
Use:
This is usually the better option if you want:
If you go this route, ARC scripting with JavaScript or Python can be used to send commands to the device over serial.
Option B: EZ-B / IoTiny directly
If the stepper system is already handled by a supported robot skill, this can work well.
For example:
For IoTiny, keep in mind the port power is often unregulated on many I/O ports, so you must be careful with motor power and logic levels. NEMA 17 motors will definitely need proper external driver hardware - ARC/EZ-B should not drive them directly.
IoTiny hardware overview: https://synthiam.com/Support/Hardware/EZ-B-IoTiny
Robot Skills vs scripting
Use a Robot Skill when:
Use JavaScript/Python scripting when:
Best practice
Usually the best design is:
That keeps ARC organized and easier to maintain.
My recommendation for your project
For the head
Use:
v1For the omniwheel drivetrain
Use:
If you want the drivetrain to participate in ARC’s Movement Panel ecosystem, then the cleanest route is to build a Movement Panel or use a skill that acts as the movement interface. ARC does support custom Movement Panel behavior.
Movement panels overview: https://synthiam.com/Support/ARC-Overview/movement-panels
If you want to build something custom
If there isn’t an existing skill for your stepper controller, Synthiam recommends building a custom robot skill:
https://synthiam.com/Support/Create-Robot-Skill/Overview
That would be the path if you want a specialized stepper drivetrain controller that integrates tightly with ARC.
Quick question
What stepper driver or controller are you planning to use?
For example:
If you tell me the exact hardware, I can suggest the best ARC architecture and whether you should use: