top of page

Self-Modeling Robot

The PyBullet program is used to simulate a robot with four legs. Simple walking movements are created and then evolved to increase speed. Finally, a closed-loop gait is developed to enable the robot to adjust automatically.

My Role

Robot Design

I was responsible for designing a four-leg robot with various leg configurations. 

​

Simulation

To create the simulation, my colleague and I worked closely together. We utilized PyBullet to simulate the robot while I tried out various techniques to make it walk.

​

Gait Optimization

I have successfully improved the robot's walking pattern to account for the range and bearing offsets and allow it to move toward the target.

Team Members
Yuhang Hu, Ruibo Liu


Timeframe
One Summer

 

Robot Design & Simulation Description

We have created a script that can produce thousands of four-legged icosahedron robots without collisions and simulated them in a PyBullet environment. This was done to gather data from various robots for self-modeling in the future. Additionally, we have written a script to generate URDF files for the robots, which are necessary to import them into the PyBullet environment. 

Simple Gaits

I developed some basic walking patterns and tested them out on PyBullet. Before programming any specific movements, it is necessary to make sure the robot is capable of standing and walking. Initially, I attempted to use the pre-built inverse kinematics function to simulate a square-shaped gait, but it failed. I then tried simulating a circle gait and a triangle gait, but they also failed. The problem was that the PyBullet inverse kinematics function only works if the joint configuration is close to the solution. To optimize the gait, I used the hill-climbing algorithm. The result was successful, and the robot was able to walk quickly and stably.

Close-Loop Gaits

I improved the movements of the robot to enable it to walk correctly and track its targets. After achieving a functional gait, it was necessary to eliminate any inaccuracies caused by differences in range and bearing. This step aimed to minimize the differences between simulations and real-life scenarios and to ensure the robot could move within acceptable parameters. To achieve this, I transformed the sine motion function into a closed-loop function and utilized evolutionary algorithms to optimize the gait. Ultimately, the robot adjusts its movements based on the range and bearing information and overcomes environmental influences.

​

Other

During the entire process, I spent a lot of time building the Icosahedron robot in the physical world and controlling it remotely using Raspberry Pi. Furthermore, we collected status data from the Intel Realsense Tracking Camera T265 and transmitted it through Socket.

bottom of page