Design and development of a quadruped shuffling mobile robot

Interest in creating legged locomotion has increased compared to wheeled robots since wheels, while easier to design and fabricate, are less effective when traveling across certain surfaces. Legged walking robots are mostly based on a quadrupedal living creature’s biological concepts, whether an insect or mammal. For a walking robot, sequences of motions are understood as ‘gaits’ to determine the robot’s mechanism. The proposed method is the creep gait, which is easy to fabricate and has allowed the algorithm’s proper user control. Meanwhile, the shuffling motion ensures the maintenance of the robot’s stability and vertical movement. Stability and gait-planning are also crucial in selecting the suitable quadruped mechanism, depending on the robot’s application. The result is a quadruped with the lowest risk of toppling and stable carrying capacity by combining the two gaits. The robot has a linear velocity of 1.09 cm/s.


Introduction
This work aims to design and build a quadruped walking robot capable of walking a straight line that mimics a living creature's gait without toppling over. The walking robot able to turn clockwise or counterclockwise while maintaining its stability. The Arduino microcontroller controls the robot, which allows flexibility in terms of hardware and software usage.
There are many examples of mobile robots developed in recent years. These include two-legged robots [1][2][3][4][5], four-legged walking robots [6][7][8][9][10][11][12][13][14][15][16], six-legged mobile robots [17][18], and so forth. Walking robots have benefits over other types of locomotives when looking at real-world applications. They will move through unstructured terrains that are too complex for wheeled robots. They are more robust and can bear more loads than flying robots. Robots with six or more legs have the advantage of being stable. In a six-legged robot's traditional walking pattern, three legs are always on the ground while three legs are traveling. This provides a static balance when walking, given the robot's center mass is inside the triangle of the three legs on the ground.
Robots with fewer legs contribute to a complex control system. For example, Torii et al. [7] developed the Tripedal Robot Walking. In the article, the emphasis is more on the robot control system, where the robot will walk with a shuffle. The robot consists of three electromagnets and three piezoelectric parts. Each electromagnet represents the robot's leg. The robot was examined for each leg's waveform and suggested producing control signals to travel to the destination.
The robot developed by Kashem et al. [9] consists of four legs to design and create an amphibious robot. It incorporates a webbed duck leg pattern to walk on various terrains, swims in the water, and tackle obstructions. The robot uses the Klann linkage system to translate rotational motion to walking and swimming.
Dholakiya et al. [11] have built a robot called Stoch. The robot has four legs, so it's a quadruped robot. The robot is made to be the size of a Pinscher miniature dog. It has four similar legs, and eight actuators fixed on the robot. Each leg has a hip and a knee joint, and the actuators provide flexion and extension to each joint. Since the robot has a hip and a knee joint, it has two degrees of freedom. Several gaits have been realized, such as walking, trotting, galloping, and bound. The robot can also switch gait transitions based on a small radius through the Central Pattern Generator (CPG). The robot achieved a maximum forward speed of 0.6m/s. The creeping gait is a slow-motion gait for quadrupeds meant to carry loads or maintain the center of gravity while walking. This gait is most suitable for cumber-some robots, and its simple control meant the design does not have to be complicated to achieve optimal performance. Creeping gait is most appropriate when moving in narrow, enclosed spaces such as tunnels. "Shuffling" refers to a walking motion by sliding one's leg across the surface, allowing linear displacement without lifting the leg. The legs then depend on the frictional forces while sliding to push the body forward, allowing overall forward linear movement. Table 1 shows the components used for the project. The microcontroller used is the Arduino MEGA 2560, which consists of 54 digital input/output pins and 16 analog input/output pins. Two servo motors are used: HD-1501MG Metal Gear RC servo motor and the HD-3001HB Plastic Gear RC servo motor, though their stall torque only varies slightly and is suitable for the project.

Design concept
A robot with a creeping gait and shuffling motion is designed as the walking algorithm for the robot. For the design, two legs are coupled. The robots' leg positions are like insects and are slightly slanted forward to provide stability for the robot while walking. Figure 1 shows the conceptual design for a pair of legs meant for the mechanism selected for the robot and a rough sketch using SolidWorks. Each set of the mechanism has two legs, joined at the hip where the actuator is attached, circular at approximately 160 degrees apart. The height and length of a single coupled leg, are 118.03 mm and 224.13 mm, respectively. The legs' height will determine the whole robot's height-the gap between a pair of legs is 0.224 m. Figure 1 (right) depicts the dimensions from the top view. The hole in the middle with a diameter of 8.5 mm is where the servo motor is fitted. The leg protruding 80° from the circular hip to the other leg instead of perpendicular. It increases the robot's overall stability, thus reducing the risk of the robot falling while walking. The legs are also slightly thicker near the hip to reduce the 3D-printed legbreaking risk.  Figure 2 illustrates the robot's body's dimensions, consisting of a thin cuboid with two slots where the servo motors are mounted. The body must be made with lightweight but sturdy material to withstand all the components' weight while also not too heavy that the robot cannot move forward during motion. Thus, cardboard is chosen as the main material of the body, and three pieces of cut-out cardboard will be glued together to form a sturdy, unbendable part. The microcontroller and breadboard are mounted on the body of the robot. Figure 2 shows the robot's whole design, with two coupled legs of the mechanism plus a cuboid body where the microcontroller is located. The ultrasonic sensor is fitted at the front of the robot. Each set of legs is attached to the servo motor (actuator). The overall height (118.03mm), length (223.70mm), and width (260 mm) of the robot is shown in the Figure. When one leg is displaced forward, the leg opposite to it will be displaced backward. By changing the angles, the actuator will rotate, linear and rotational displacement can be achieved.   Figure 3 depicts the overall program function for robot behavior. The robot starts with the ultrasonic sensor, sensing for an obstacle. If there is any, the sensor will return the distance in cm. Meanwhile, the serial monitor waits for input from the user. If the gap between the obstacle and the robot is 10 cm or less, it will not move even if the user has entered a command to move. Users will also get data on the distance between the sensor and any obstacle. It will also display the distance's value on the serial monitor if the obstruction is within 30 cm.

Robot Behavior
Each angle rotated by the actuator will displace one foot forward and the other foot backward. There are four steps for each type of movement that is repeated, and each step is followed by 0.5 s, such that the robot can move smoothly.
The robot begins its movements sequence when the user inputs either character 'w', 'a' or 'd' on their phone/computer. The Bluetooth module receives input from the serial monitor; then, the Arduino sends a signal to the servos to begin moving. Input 'w' commands the robot to move forward linearly, 'a' commands it to turn anti-clockwise, and 'd' commands it to turn clockwise on the spot. While the motion sequence is being executed, the user has the option to stop the robot from moving while inputting 'x,' which returns both servos to their 90 degrees position immediately.  Table 2 shows a more detailed flow of the actuators' sequence of motion depending on each user input. Besides awaiting user input to stop, the onboard sensor still runs during movement. If an obstacle is detected while the robot moves, the Arduino will also send a signal to stop the motion, immediately resetting both servo positions to 90 degrees. Otherwise, the quadruped continues executing the designated motion.
Each angle rotated by the actuator will displace one foot forward, and the other foot backward, the sequence of motion will be discussed in the results. There are four steps for each type of movement that is repeated, and each step is followed by a delay of 0.5 s so that the quadruped may move smoothly and in control.  Figure 4 shows the circuit diagram connection of the Arduino pin and the components drawn using Fritzing. The red wires are all connected to the +5V of the Arduino board, whereas the black wires show a connection to the ground (GND) pin of the Arduino. The LiPo battery's positive terminal has to be connected to the Vin pin of the Arduino so that the high input voltage can be stepped down to 5V through the onboard voltage regulator as the rest of the components only have a voltage rating between 4.8V to 6V.  Figure 5 shows the assembled model of the robot. The ultrasonic sensor placement shows which side is the front side of the robot, and the coupled legs are 3D-printed. The rest of the components (battery, Arduino board, Bluetooth module, breadboard) are placed in the robot's center, between where the servo motors are fixed to the body. Figure 6 shows the top view of the robot, and the legs are numbered 1 to 4. Legs 1 and 2 are attached to the front servo, whereas Legs 3 and 4 are attached to the back servo. The ultrasonic sensor is attached to the front of the robot, serving as the "eyes" to look out for obstacles.

The Prototype
The robot is tested on a cemented surface and tiled floor surface to obtain data regarding its velocity and linear displacement of the legs to compare with the plotted results. The robot's motion mimics a crawling insect's actual movements, i.e., cockroach or a beetle, which move very quickly by sliding the pads of their legs across the ground, hence the "shuffling" movement. The insects do this by alternatingly swinging their legs back and forth, which when one leg is forward, the other leg is backward.
The robot is tested five times, and the time-taken for it to crawl a specific distance is recorded, which can be used in calculating velocity. The average speed is then calculated based on the data collected. The power supplied to the robot and power consumed/developed are also later calculated. The power dissipated as wasted energy can also be obtained.  Note that legs 1 and 2 are coupled together, and so are legs 3 and 4. The program uploaded to the Arduino MEGA will send signals to the servo motors to move according to the user's input, which will be received by serial communication through the Bluetooth module. When an input is received, the servo motors will execute a motion sequence, which will move the coupled legs accordingly.
The legs are programmed to move forward one by one, and each step with a delay of 0.5 seconds through the Arduino. The legs are made to move one by one to achieve maximum stability and ensure the robot can walk in a straight path. This reduces speed but will increase the overall stability and allows easier control by the user. The delay is needed to ensure the servo motors have rotated to the required angle be-fore it executes the next movement.
The robot can walk in a straight line without straying too much from its path, turn on its spot anticlockwise or clockwise, and stop when obstacles are detected. The robot is stable as for all the tests, and the robot has never slipped or toppled over when walking on smooth floors. The center of gravity is successfully maintained, and the robot can hold its weight, which meant the design capable of carrying the load if necessary Figure 7 shows the four steps sequence motion of the robot moving forward. In (a) the front servo rotates to 60 degrees, and Leg 1 goes forward, followed by step (b), where the back servo rotates to an angle of 120 degrees, moving Leg 4 forward. In step (c), the front servo moves again to 120 degrees, followed by step (d), in which the back servo rotates to 60 degrees, thus moving Leg 2 and 3 forward, respectively. The red arrow in the images shows which leg is moving forward.

Displacement
When one leg moves forward, the other leg coupled to it is moving backward. The foot sliding across the floor pushes against the frictional force when the leg swings back and forwards. This movement is known as "shuffling." For each swing, a thrust force is generated, allowing the quadruped to "creep" forward.
The four-step sequence repeats unless stopped by the user or the robot meets an obstacle. The robot can move forward in a straight line without straying much from its intended path. The shuffling robot is also able to turn right or left. This can be achieved by following the sequence introduced in Table 2.  Figure 8 shows the robot's top view's simple sketch, with the triangles representing the robot's coupled legs.  Table 3 shows the time taken for the robot to move a 10 cm straight path, turn 90° clockwise and anti-clockwise. The motion can be achieved by the movement of anti-clockwise and clockwise rotation of legs of 90°. The experiment was repeated five times. The average time taken is calculated by obtaining the total sum and divided by 5. From the experiment, the average time taken for the shuffling robot to move in 10 cm straight ahead is 9.18 s; to turn 90° anti-clockwise is 40.4 s; and to turn 90° clockwise is 53.9 s respectively. The shuffling robot's velocity is 0.01087 m/s for the linear motion; the angular velocity for clockwise and anti-clockwise are deemed at 0.03888 rad/s and 0.02914 rad/s, respectively.

Conclusion
In conclusion, a quadruped shuffling robot is successfully fabricated and has yielded results. While the robot's average velocity (1.09 cm/s) may not be fast compared to other robot mechanisms, the robot's stability and center of gravity are maintained low throughout the experiment.
The robot can walk in a straight line on the floor without falling, slipping, or straying away from the path. The robot can also detect obstacles and tell the user the distance between the obstacle and the robot through the serial monitor. The power consumption is low, merely at 16.31W, meaning the power supply does not need a very high rating to power the whole robot.
However, to increase its performance and efficiency, improvement can be made. The robot cannot steer past relatively small obstacles at the current stage, so 'knee' joints can be added to the leg to lift its leg and walk over small obstacles. It will make the robot suitable for walking across rocky surfaces.
Another problem is the instability of the signal from the Arduino to the actuator. Improvement can be made by adding limit switches to detect whether the servos had rotated to their predetermined angle before continuing the next movement sequence. With this method, the robot might simultaneously move both front and back servo motors, which will increase the robot's overall speed.
When one leg moves forward, the other leg coupled to it is moving backward. The foot sliding across the floor pushes against the frictional force when the leg swings backward and forwards. This movement is known as "shuffling." For each swing, a thrust force is generated, allowing the quadruped to "creep" forward.
The four-step sequence repeats unless stopped by the user or the robot meets an obstacle. The robot can move forward in a straight line without straying much from its intended path.