Introduction

A ROS-enabled quadruped robot built with low-cost 9G servo motors. The challenge is to get the speed and position of 12 PWM servo motors under control with position feedback, and put ROS on an extremely small SBC.

  • Without onboard computer:
    drawing

  • With onboard computer:
    drawing

    drawing

    drawing

Processor

  • Low-level control: Arduino Nano
  • Onboard computer: OrangePi Zero Plus 2:
    A53 Quad-core processor
    I actually managed get the Debian ROS Kinetic Desktop-full working on it. And the OpenCV3 that comes with ROS also works.

ROS driver

  • Servo motor control
    Repository: https://github.com/zlingkang/hd_servo
    When we want to control multiple-joint robots, we always need speed control, position feedback, and group servo control. High-end servos such as Dynamixel has such functionalities and it comes with ROS package. However, for simple hobby servos driven by PWM, it is hard to do that. I found a firmware which allows the functionalities mentioned above by using only Arduino and PWM servos. I made a ROS action node wrapper for this firmware. And it enables high-level sequence control for servos.

  • URDF and Inverse Kinematics
    Repository: https://github.com/zlingkang/quadruped_9g

    drawing

Simulation

  • Inverse Kinematics
  • Walk

Real-world test

Mechanical design

drawing

drawing