Moving A Servo

The first and most important action of any robot is moving a limb with a servo. Even if your robot is not complete, it's a good idea to practice moving a servo with ARC to become familiar with how easy it is. Because it is easy to move servos with ARC, you can now focus on the creative aspect of the robot. This tutorial will add a servo robot skill, configure the servo robot skill, and move a servo.


Requirements

  • Connected to an EZB
  • Servo connected to the EZB


Robot Skills Used

The following robot skills are used in this tutorial. Click any of these to further read the manuals for the robot skills.



Quick Tutorial

Press the Project button from the top menu, and select Add Robot Skill.



The Robot Skills window will display. Navigate to the Servo tab and select Horizontal Servo.



Now the Horizontal Servo robot skill is visible in your project. Press the Config button on the Horizontal robot skill.



Select the Servo Port that your servo is connected to on the EZB. The servo port will vary based on the type of EZB used. 




Either drag the Min and Max values to specify the range, or right-click and enter the range with the keyboard. By default, the global range in ARC is between 1-180 to accommodate PWM hobby servos. You can alter this global value for high precision servos in the ARC settings menu.



Press SAVE on the config window to save the settings.



Click the mouse on the horizontal robot skill servo position display, and drag LEFT and RIGHT. Watch as the servo moves.



This is only the beginning...

Moving a servo with this robot skill is exciting, but the following steps are even more exciting. When several servos are connected to a robot for arms or grippers, you can configure the Auto Position robot skill to re-create animations. This is a popular robot skill for humanoid robots, such as the InMoov. Also, the Getting Started guide has a movement page that lists the different wants you can make a robot move.

Check out any of these related links...

Create servo frames and actions to animate gaits and gestures with automatic motion planning, software ramping, movement panel, import/export


Auto-release servos after inactivity: set EZB board/ports, choose 1-60s delay, add/remove ports, pause and view status.


Control a 3-wire continuous 360-degree servo in ARC: adjustable forward/reverse speeds, start/stop buttons, board/port selection and test controls


Control up to 99 servos via Vx virtual ports over serial (Arduino/custom firmware), integrating with ARC for scalable servo management.


Control Robotis Dynamixel XL-320/AX-12/XL430 via ARC virtual servos; supports position, speed, velocity, acceleration, bidirectional UART.


Control Feetech serial-bus servos via EZB UART or PC COM; map ARC virtual ports to IDs; supports position, speed, acceleration, release.


Control Feetech SC series serial-bus servos via EZB UART or PC COM port; map virtual Vx IDs, set position, speed, acceleration, and release in ARC.


Mouse-drag horizontal servo control with configurable min/max limits, center/release functions, multi-servo mirroring and direction invert.


Customizable inverse/forward kinematics editor for robot arms: add joints/bones, map XYZ in cm, auto-calc joint angles for precise 3D positioning.


Control Kondo KRS ICS2/3.5 servos via EZ-B UART; experimental, untested. Supports chaining, virtual servo ports, Release() and Servo() commands.


Control LewanSoul LX-16A servos via ARC: assign virtual ports, read positions, switch servo/continuous modes, and set motion speed/baud.


Compact Lynxmotion Smart Servos with position feedback, safety features and UART TX/RX for Arduino/EZ-B v4; scriptable temp, load, load-dir and ping.


USB control for Pololu Maestro (6/12/18/24) via ARC Vx ports. Maps Vx to Maestro channels; supports position, speed, acceleration, release.


Add ADC positional feedback to hobby PWM servos via minor mod to EZ-B/Arduino; enables real-time position readout, calibration and puppet mirroring


Real-time servo position input via Arduino ADC over I2C; supports Nano (6 channels) or Mega (16), configurable I2C address and scalable chaining.


Synchronize servos by designating a master; slave servos mirror scaled (decimal/negative) positions with min/max limits and pause control


Inverse kinematics for Robotis OpenManipulatorX: compute joint angles and MoveTo 3D (cm) positions, supports camera-to-CM mapping for pick-and-place.


Control a servo with an on-screen mouth widget for interactive positioning and testing.


Drag mouse or finger as a virtual joystick to control pan/tilt x- and y-axis servos with configurable ports, limits, inversion, and backgrounds.


Record, save and replay named servo motion sequences with adjustable speed/direction (-5 to +5), scriptable via ControlCommand() and status variable.


Adjust servo/PWM speed (0-20) between two positions to quickly experiment and tune motion; select board/port; settings aren't saved.


All-in-one servo view showing and editing servo positions and speeds; add servos and resize the control to fit.


ARC integration for SSC-32 servo controllers via PC COM or EZ-B/Arduino UART; maps V0-V31, configurable baud, enables servos in ARC skills.


Control up to 127 stepper motors via Arduinos mapped to ARC servos; supports any stepper driver, serial network, home calibration, speed/accel.


Control UBTECH Alpha UBT-12HC smart servos via ARC using EZ-B v4/IoTiny UART, assign virtual ports, set baud, custom bits and position mapping.


Drag vertically to control a servo within set min/max limits; center, release, invert, and mirror to other servos. For 3-wire GVS servos.


Control Waveshare servos (TTL/RS485): set position & speed, release torque, read position. RTS option for converters; reverse-engineered protocol.