Skip to content

Latest commit

 

History

92 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

PR Open Source Love png2 License

Venom

Venom: Sprawling-Type Quadruped Robot

Venom is a 12-DOF unmanned quadruped (four-legged robot) equipped with 12 servo actuators and an ARM processor for onboard computation.

The quadruped uses sprawling-type motion, with creep and trot gaits implemented and tested.

Venom2

Built as part of a research project in Legged Mobility at the Society of Robotics and Automation, VJTI.

  • Most robots in industry rely on wheels for navigation. Venom's goal is legged mobility with multi-terrain capability beyond what wheeled or tracked vehicles can achieve.
  • The aim is a system that can travel anywhere a person or animal could go on foot, carrying its own power and payload, and negotiating terrain with minimal human guidance.

Demo Video: VENOM — All-terrain Quadruped


Table of Contents


How It Works

The robot control code lives under src/Quadruped/:

Module Responsibility
Quadruped.py Top-level Quadruped and Leg classes — configures servo IDs and leg geometry, and implements the gait state machines (Creep, Creep_w_bump, Trot, stanceBackward) driven through walk() / walkOnce()
constants.py Per-gait tuning parameters (Creep, Trot classes: step height, stance limits, timing), gait-mode IDs (CREEP, TROT, TROT_BACK, CREEP_DYN), and link lengths used for kinematics
Core/kinematics.py Inverse kinematics (getInverse) that converts a target foot position (x, y, z) into joint angles for each leg
Core/pwmServo.py PWM servo driver interface (via the adafruit_servokit/PCA9685 stack)
Core/IMU.py, Core/GPS.py Sensor interfaces for orientation and position — used by the CREEP_DYN gait to actively stabilize the base against terrain unevenness (feedback loop in Leg.StepInY_feedback)
Core/kalman_filter.py Kalman filtering for sensor fusion
Core/trajectory_fourier.py Fourier-based trajectory generation experiments
Core/imu/ IMU calibration scripts and reference material (RTIMULib config, ellipsoid-fit MATLAB scripts for magnetometer calibration)
Components/Gamepad.py Linux joystick (/dev/input/js*) input handling for manual teleoperation
JGpio.py GPIO helper for bump-switch / digital I/O pins used in dynamic leg placement
unit_Tests/ Standalone scripts for exercising individual servo angles (writeAngles.py, writeAllAngles0.py)

Gait Modes

Four gait modes are defined in constants.py and dispatched via Quadruped.walk(Mode):

  • CREEP — static creep gait, one leg moves at a time
  • TROT — diagonal-pair trot gait
  • TROT_BACK — reverse trot
  • CREEP_DYN — creep gait with dynamic, IMU-feedback-driven leg placement for stability on uneven terrain (this is the mode used in Quadruped.py's own __main__)

Example

from Quadruped import Quadruped
from constants import CREEP, TROT, CREEP_DYN

venom = Quadruped(servoId)              # Servo ID array
venom.setParams(dirVector, FixedPoints) # Servo direction and fixed set points
venom.go2CreepStartPosition()
input("Press Enter")                    # Wait for user input

venom.walk(CREEP)      # Static creep gait
venom.walk(TROT)       # Trot gait
venom.walk(CREEP_DYN)  # IMU-stabilized dynamic creep gait

Software Installation

  • Python 3.4+ on a Raspberry Pi (or similar single-board computer / ARM dev board).

Clone

git clone https://github.com/chinmaynehate/Venom.git

Setup

Install dependencies:

python3 -m pip install numpy adafruit_servokit busio sympy

Hardware Stack

Team

Chinmay Nehate Suyash More Shashank Deshmukh
Chinmay Nehate Suyash More Shashank Deshmukh
github.com/chinmaynehate github.com/SuyashMore github.com/shanks-d

FAQ

  • How do I do specifically so and so?
    • Create an issue on this repo — we'll respond to the query.

License