At Europe Embodied 2026 in Munich, we tried to train a Franka Panda arm to disassemble disposable vapes.

The physical task was simple to describe. A vape sits in a printed holder. The robot has custom printed gripper fingers. The fingers pinch the back cap and pull upward, so the battery can be removed from the vape instead of going into shredded waste.

The learned RL policy stayed in simulation. We did not deploy it on the real Franka during the hackathon.

The code is available here: github.com/jclotten/vape-disassembly-station.

Franka robot arms in the Europe Embodied lab

The lab setup at Europe Embodied. The useful part of the hackathon was having access to real Franka arms, real cameras, real workstations, and all the small problems that come with that.

The Task

The motivation came from waste handling. Disposable vapes contain small batteries, and those batteries are a fire risk when they are not removed or discharged properly. People working in disposal sites still deal with a lot of this manually.

For the hackathon, the task was narrowed down to one manipulation step: open the vape far enough to get access to the battery. The setup used a printed holding station for the vape and printed gripper parts for the Franka hand. The motion we wanted was not complicated on paper: move to the cap, close the gripper around it, and pull up.

That was enough to make the project hard. The cap had to be gripped in the right place, the holder had to keep the vape fixed, and the simulation had to behave close enough to the real setup that training would mean anything.

Franka arm and vape holder setup

The real setup: a Franka arm, a printed holder, the vape-like workpiece, and external camera hardware around the table.

Splitting the Work

Our overall team split into two subteams. A teammate and I worked mostly on the reinforcement-learning simulation. We wanted to recreate the station in Isaac Sim, train a policy there, and then deploy it on the real Franka.

The other subteam worked on imitation learning. Their plan was to teleoperate the real robot, record demonstrations, and train a policy from those episodes.

Getting the Robot Running

Before either approach could go far, the real setup had to work. This took a substantial part of the hackathon.

The Franka needed a workstation with a real-time kernel, while our simulation and vision work needed the Nvidia GPU. Getting those requirements to work together was not straightforward. We also spent time assigning IP addresses, connecting the workstation to the robot, and dealing with the fact that only one client can command the arm at a time.

Calibration caused more delays. We changed between two Franka arms because the first setups were not calibrated correctly. Each change meant checking the network, robot state, controller, cameras, and physical station again.

Workstation showing the camera and scene setup

The screen shows the camera and Rerun views while working with the real station.

The real setup in motion. This was not the learned RL policy.

The RL Simulation

My teammate and I spent most of our remaining time building the task in Isaac Sim. This was my first serious project with Isaac Sim.

We imported the vape, holder, gripper tooling, and camera mount from the CAD files. We tried to use the OBJ-style assets too directly. They could look correct while behaving badly in the physics simulation. The collision meshes were especially difficult: they had to be simple enough for stable simulation while still representing the small contact points around the cap and gripper.

We should have converted and simplified the geometry earlier. Instead, we spent a lot of time debugging imported assets and trying to understand why contact did not behave as expected.

We still got the main task running in Isaac Lab. The simulation included the Franka, custom gripper tooling, cameras, contact sensing, and a simplified resistance model for pulling the cap out. Camera images were encoded with a pretrained ResNet18, and we trained the policy with PPO.

The policy learned parts of the motion in simulation, but it was not robust. We also built a scripted pull test to check whether the simulated gripper and cap could complete the intended motion without involving RL. By the end of the hackathon, the simulation and policy both needed more work.

The imitation-learning subteam reached the point of teleoperating the robot, but their Meta Quest setup stopped working late at night. They could not record enough clean demonstrations to train a useful policy.

The Result

We did not deploy the learned RL policy on the real Franka. The hardware setup, simulation physics, and training pipeline all worked to some degree, but not reliably enough to connect them within the available time.

The repository contains the Isaac Lab task, simulation assets, PPO training code, checkpoints, and the scripted pull test. It is an unfinished project rather than a finished hackathon demo.

What Comes Next

We want to continue the project. The immediate work is to clean up the imported geometry and collision meshes, make the simulated contact behavior more reliable, and continue training the policy.

The goal is still to run the learned policy on a real Franka and test whether the simulated extraction transfers to the physical vape station. More will follow once we get there.