MOVE
MOVE
Team Members: Krishay Iyer, Lazarus McCarthy, Rohan Indukuri, Ryan Lo, and Shruthika Swaminathan
Faculty/Graduate Students: Zahiruddin Mahammad and Amisha Bhaskar
I4C Teaching Assistant: Anjali Paliyam
Project Question
How can we enable robots to learn and adapt complex tasks with human-like precision and minimal training?
For our project, we wanted to find the best way to quickly train robots to learn and adapt to complete various tasks as efficiently as possible with minimal training. Some types of training can take up to days or weeks. However, imitation learning, which is a type of supervised learning, can take only a couple minutes to train. It involves going through multiple tests which include collecting data, preprocessing data, finding the optimal hyperparameters for the model, testing and simulating the model, and accomplishing the task in the real world with a robotic arm.
For this project, we used Python and Anaconda for scripting and environment management. We used Jupyter Notebook to create and manage our scripts. We used PyTorch and their neural network library to build our machine learning model. For our simulation environment, we used MuJoCo, along with a miniaturized version of our arm for collecting data and verifying prediction outputs.
Collecting & Preprocessing Data
Collecting Data
For collecting the data, we connected the simulation to the small robotic arm hardware. After this, whenever we moved the small robotic arm, the one in the simulation would copy or imitate the small arm's movement. This is called: "Tele-Operations". The joint angle and end effector position data are saved in a .csv file to be preprocessed later.
Preprocessing Data
For preprocessing the data, we filter the data based on the final position, the shape of the path, and the time taken from the start position to the final position. For example, if the path takes too long to reach the final position or never reaches the correct final position, this path would be filtered out. In the end, we should have clean and usable data to train our model.
In the images seen below, if the arm is positioned in a starting position ahead on the trajectory, we want the model to still reach the final position. The ability to handle more starting position makes the model more generalizable
(Comparing Losses)
When building a machine learning model, there are a few configuration variables - called hyperparameters - which adjust how our neural network algorithm learns and uses the given training data. The hyperparameters critical to ensuring accuracy are number of epochs, batch sizes, and learning rates.
Epoch: Represents 1 execution of the training dataset and the prediction that is made as a result of it
Batch Size: Represents how much data should be passed into the model in each iteration through the training data
Learning Rate: Represents how much the algorithm should "explore" vs. "exploit" the training data
An accurate model means the calculated loss is as low and "smooth" as possible. The graphs you see below represent loss vs epochs. Ideally, we want a model that reaches low loss values quickly, and stays constant.
Epochs: 100, Learning Rate: 0.01, Batch Size: 8, 16, 32
Here, we found a batch size of 32 is most ideal
(line is smoother)
Epochs: 100, Batch Size: 8, Learning Rate: 0.001, 0.005, 0.01
Here, we found a learning rate of 0.001 is most ideal
(line is smoother)
The "smoothness" of each plot is shown more clearly in these graphs below:
Robotic Arm in Simulation
The next step after finding the hyperparameters for the model is simulating it. We used the MuJoCo simulation software in order to visualize our robotic arm model and its path. We first simulated the robotic arm attempting to scoop up a green particle (shown on the gif to the left). After this, we added a bowl with small, red balls and tried to get the robotic arm to scoop up any of these balls (shown on the gif to the right). Finally, in the gif down below, we were able to use a real world simulation to pick up the object.
Model Prediction Simulation
Scooper Simulation
Machine learning enhances the capabilities of robotic arms in various fields. In industry, it improves precision and efficiency in assembly lines, leading to faster production and fewer errors. In the medical field, robotic arms assist in surgeries with greater accuracy and stability, reducing human error and improving patient outcomes. Additionally, machine learning helps robotic arms safely handle toxic or corrosive substances, minimizing human exposure and ensuring safer handling and disposal.
Some improvements we can make to the model include: feeding more training data to enhance the model's accuracy and performance, experimenting with more hyperparameters to optimize the model's efficiency, integrating more skills to expand the model's capabilities, and stacking those skills to complete "long horizon" tasks.