serl
serl copied to clipboard
Implementation of Voxel-based vision for SERL
Hi all
This is a pull request as mentioned here. The goal was to implement voxel-based vision for a box picking task with a UR5 robot arm.
New implementations:
serl_robot_infra/robot_controllers/ur5_controller.pyUR5 Impedance controllerserl_robot_infra/ur_envA new environment for picking boxesexamples/box_picking_drqNew experiment files for the same purposeserl_launcher/vision/resnet_v1_18.pyA pre-trained ResNet18 model by Pytorch trained on ImagNet.serl_launcher/vision/voxel_grid_encoders.pyImplementation of a 3D-conv based Voxel encoder.serl_launcher/wrappersSome new wrappers for: (1) Scaling the observation (2) Logging the observation statistics to wandb.
Modifications to SERL:
These modifications improved the performance for my case, you can choose which you want to include / change.
serl_launcher/agents/continuous/sac.pyUsed original jax_rl implementation withbackup_entropyenabled. Also, the target entropy is set to-action_spaceinstead of-action_space/2.serl_launcher/agents/continuous/drq.pyAdded classmethodcreate_voxel_drqwith voxel encoders. Additionally, implemented the 3D augmentation technique for voxels analogous tobatched_random_cropfor images.serl_launcher/common/encoding.pyAdded a Masked EncodingWrapper to easily ignore certain proprioceptive states (in our experiments, forces/torques were too noisy and decreased the performance).serl_launcher/vision/resnet_v1.pyDropout bugfix and added an optionalnum_kpparameter, which controls the number of keypoints.
Additional library requirements
ur-rtdeLibrary implements API for Universal Robots RTDE realtime interface.open3dUsed to visualize the voxel perception of the end effector.cluCommon Loop Utils for a quick parameter overview of the model. (Is not needed, but useful)
Videos showing the voxel-based policies can be seen here: Videos
Hi, thanks for the work, since this is quite different from the main branch, I think it would make more sense if you push to a different branch on its own and write a documentation how to use it?