Logo
  • Projects
  • Short Stories
  • Contact
Home
Hybrid Quadruped Robot

Hybrid Quadruped Robot

Introduction

Currently in Standby mode
Currently in Standby mode

Today mobile robots continue to pique the curiosity of many researchers and industrialists. Wheeled robots, legged robots, and other movement mediums are examples of mobile robots. These robots have advantages and disadvantages depending on the sort of locomotion they use, for example, wheel-based robots are efficient on most surfaces but fail to handle last-mile hurdles. In the realm of robotics, there is a lot of work being done to create and implement a unique style of locomotion that is best suited for any environment. This gave rise to the concept of hybrid locomotion, which combines two or more separate locomotion mechanisms to provide greater efficiency and mobility in any terrain.

Methodology

                                                      Methodology Flow chart
Methodology Flow chart
‣
Design Strategy:
‣
Fabrication and Assembly:
‣
Information processing using statistics data:
‣
Analyzed performance:
‣
Analysis of result and optimization:

3D Modelling

Hybrid Quadruped Robot
Hybrid Quadruped Robot

Detail Design:

image
image
image

The cad file was converted to 2D Drafting once the robot was designed and completed to comprehend the robot's dimensions

Fabrication

Material Selection

To hold the robot structure we have utilized acrylic sheet due to properties. These acrylic sheets are lightweight, durable, colorless, and have excellent clarity. These sheets are also resistant to the environment. Acrylic sheets are more lightweight and shatter-resistant than glass

3D Printing

Laser cutting
Laser cutting
Cura profile
Cura profile

The technique of producing 3D objects from digital data, such as CAD models, is known as 3D printing. We utilized FDM (fused deposition modelling) for 3D printing in this approach. and we have selected material such as PLA, ABS and PETG for different linkage, joint and parts of the robot.

List of Material

Electronic and Actuator

Parts name
Qty
Dynamixel XL430
12
Dynamixel 2XL430
4
RDS3115 MG Servo
4
Raspberry Pi4 2Gb
1
U2D2 Interface
1
MPU9250 IMU 9-dof
1
OLED screen 1 inch
1
RPLidar A1
1
Current Sensor
1
PWM Servo Driver
1
Matek PDB v3
1
Toggle Switch
2
M3 nut and bolt
50
M3 Insert nut
50
22, 20 and 18 AGW 2 meter wires
5
Lipo 2200 mAh 25CC
1

Assembly

RPLidar A1
RPLidar A1

Due to a torque calculation error, the design went through two iterations before being corrected in the next design. It took roughly 80+ hours of 3d printing, electronic integration, and lidar integration before the hardware part was finished.

Control System

Circuit connection
Circuit connection
Control Architecture
Control Architecture

Software Integration

Gait Algorithm:

Gait refers to a series of distinct foot placements carried out in a precise order. The quadruped robots walk in two different ways. Static gaits for instance crawl, wave, occur when the upward translation of the Centre of Mass kept static inside the polygonal produced by the order to provide a framework

‣
Trot gait

The reasons are as shown below:

1) The trot is a dynamic gait that is beneficial for speed and agility.

2) Whether or not the two diagonal support legs have flipped. The opposing two transfer diagonal legs can also avoid this by immediately hitting the bottom.

3) The trotting gait evolved from the immobile creeping motion, and moving from trot to crawl is simple and in the opposite direction. The trotting gait is ideal for challenging conditions.

4) These diagonal legs have the same motion phase. They should, in theory, both hit the bottom at the matching time. They both emerge from the bottom at the matching time and swing forward at the same time. Therefore, the parity trotting gait may carry out the robot's parallelism motion while preserving self-stability & reducing attitude management complexity.

image

Forward Kinematic and Inverse Kinematic

In order to move in certain Translation we have used a simple math like trigonometry to solve the problem which were facing. First we have utilized forward kinematic and later we moved to IK in order to solve stability on unequal surface.

To overcome the challenge we were encountering, we used simple arithmetic such as trigonometry to travel in a specific direction. To solve stability on unequal surfaces, we first used forward kinematics and then switched to Inverse Kinematic.

In layman's terms, we know the length and height of the robot leg, while the unknown variable is theta of each joint. Below is an example of a simple leg configuration.

image

Now the code are written in python3

Because the Dynamixel Xl430 reports shaft position in encoder count, we'll need to do some conversions to make feeding the angle easier.

def motor(ID, val):
    encoder = round(val/ 0.08789)
    pos = encoder
    dxl = packetHandler.write4ByteTxRx(portHandler, ID, add_goal_pos, pos)
    return dxl
here the conversion code for encoder to degree

Let's have a look at the robot in action.

Using inverse kinematics, it can walk sideways and forward in the clip above. Further walking is currently being undertaken. Right now, I'm concentrating on getting IMU and Leg to work together to overcome the barrier.

Lidar Mapping

image

I have created a sample Mapping of room using RP Lidar A1 it work quite well. Right now it configured at the rate 5 hz and 100 rpm of motor and the code are written in python using numpy and matplot to stream the plot.

End of experiment

Result: On Holds

Projects

Instagram

Showcase

My EDC

Tags
Dynamixelraspberrypi4Quadrupped
Logo

@itsrohit.xo

LinkedInGitHubInstagram
#inverse kinematic  đŸ‘‰------------------->
#given data
a = 9.5        #knee        
b = 9.4        #shoulder    
c = 8          #height 6
    
shoulderAngle = (pow(b, 2) + pow(c, 2) - pow(a, 2)) / (2 * b * c)
shoulderAngle1 = math.acos(shoulderAngle)

kneeAngle = pi - (shoulderAngle1 * 2)

#convert rad to deg
shoulderAngleDeg = round(math.degrees(shoulderAngle1))
kneeAngleDeg     = round(math.degrees(kneeAngle))

#leg offset
shoulderPOS = (shoulderAngleDeg + 149.5)
kneePOS     = (kneeAngleDeg + 131)

#inverse Kinematic  đŸ‘†
#given data
z =14.4 #cm
x = 5

shoulderAngle2    = math.tan(x / z)
shoulderAngle2Deg = math.degrees(shoulderAngle2)

kneeAngle2Deg = z/cos(shoulderAngle2Deg)

#offset angle
shoulderPOS2 = (shoulderAngle2Deg+ 149.5)
kneePOS2 = (kneeAngle2Deg + 131)
#print(shoulderAngle2Deg)
#print(kneeAngle2Deg)