This is the learning and engineering based implementation of a manipulation framework built with A1 Quadruped robot. This repository includes teleoperation of a quadruped dog and different training and deployment frameworks to make this dog push objects to desired positions. Experimented frameworks for prediction of the next observations are as follows:
- Image based prediciton framework: Here an encoder trained with self-supervised learning algorithms where contrastive loss is used for training. Here positive pairs are the predicted representation of the next observation and actual next observation.
- State based prediction framework: Here, aruco markers are places on both the dog and the manipulation object and the next states of each object is predicted. We used classical supervised learning algorithms and diffusion models to predict the next state.
- Inverse models: To predict the action applied between the current and next state we applied supervised inverse models.
After installing unitree_ros
package by following the instructions here. You can install the ROS package of DAWGE
by running the following command from the base of the repository:
catkin_make
source devel/setup.bash
With this the package dawge_planner
will be installed.
You can create the necessary conda environment dawge
by running the command:
conda env create -f dawge_env.yml
In order to move the A1 robot with keyboard arrows, after starting the ROS master with roscore
, one should run:
rosrun dawge_planner teleop
Then
rosrun dawge_planner save_all
will save state based and image based information of the framework.
All the configurations of the training can be modified here. Agents to use while training are the frameworks tried and implemented here. Agents refer to the main experimented frameworks mentioned above. After having the desired modifications one can train the frameworks by simply running:
conda activate dawge
python train.py
Different scripts to run models on the robot can be found on the ROS package, here. One can run these by running:
conda activate dawge
python <desired_model_deployment>.py