Dataset collection with VR teleop -- Documentation no longer working

Hi Pollen team,

We are trying to collect demonstration data using VR teleop. We want to collect it to a lerobot-compatible format so that we can easily train an ACT policy.

We are trying to follow the documentation in Reachy 2 · Hugging Face . However, the repository pollen_data_acquisition_server no longer works. lerobot-record does not seem to support the Reachy VR teleop app.

What can we do to achieve our desired outcome?

Thanks,

Brian.

Hello @lkm1321,

In fact, Option 1 with the pollen_data_acquisition_server is not available…. But you should be able to use lerobot-record!
Could you send the message you get from lerobot-record when you try to use it?

Maybe you could try this branch from our fork: GitHub - pollen-robotics/lerobot at 6-modify-cameras-config-update · GitHub. It should be a working version with Reachy 2 integration in LeRobot, in case compatibility is currently broken.

Thanks for confirming! After posting this we were able to collect data using lerobot-recordfrom the HuggingFace version. But, we are still having some problem with the bandwidth, and had to turn off the camera stream. Would this be better on the the pollen fork? Also, can you give us the settings for lerobot-record you are using on that branch?

I haven’t tried the current HF version, but I don’t think you will have better result on our fork.

We used the settings shown in the Example: start a recording without the mobile base section of Reachy 2 LeRobot documentation, with --dataset.fps=15. We were not able to achieve a higher image acquisition frequency. The other parameters used their default values as defined in the configuration files:

We also noticed that having an SDK client connected decreases the acquisition frequency: it may help to turn off the dashboard during recording (this can be done from the Services page of the Reachy 2 dashboard).

Got it. Thank you very much!

1 Like

Hi Pollen Team,

I am trying to record the stream from:
–robot.with_left_teleop_camera=true --robot.with_right_teleop_camera=true

But for some reason, I am getting a sequence of

WARNING 2026-04-09 16:33:23 ia\camera.py:80 No frame retrieved
WARNING 2026-04-09 16:33:23 ia\camera.py:80 No frame retrieved

This is the log message that I see:

WARNING 2026-04-09 16:33:27 ia\camera.py:80 No frame retrieved
WARNING 2026-04-09 16:33:27 ia\camera.py:80 No frame retrieved
WARNING 2026-04-09 16:33:27 ia\camera.py:80 No frame retrieved
WARNING 2026-04-09 16:33:27 ia\camera.py:80 No frame retrieved
INFO 2026-04-09 16:33:27 ls\utils.py:227 Stop recording
INFO 2026-04-09 16:33:29 2_camera.py:280 Reachy2Camera(teleop, left) disconnected.
INFO 2026-04-09 16:33:29 2_camera.py:280 Reachy2Camera(teleop, right) disconnected.
INFO 2026-04-09 16:33:29 2_camera.py:280 Reachy2Camera(depth, rgb) disconnected.
INFO 2026-04-09 16:33:29 achy_sdk.py:215 Disconnected from Reachy.
WARNING 2026-04-09 16:33:29 achy_sdk.py:540 Reachy gRPC stream is shutting down.
INFO 2026-04-09 16:33:29 ls\utils.py:227 Exiting
Traceback (most recent call last):
File “C:\Users\nikra\AppData\Local\Programs\Python\Python310\lib\runpy.py”, line 196, in _run_module_as_main
return _run_code(code, main_globals, None,
File “C:\Users\nikra\AppData\Local\Programs\Python\Python310\lib\runpy.py”, line 86, in run_code
exec(code, run_globals)
File "D:\Nikola\Academics\Research\Existential Robotics Laboratory\Code\reachy_pollen\reachy2\Scripts\lerobot-record.exe_main
.py", line 5, in
File “D:\Nikola\Academics\Research\Existential Robotics Laboratory\Code\reachy_pollen\reachy2\lib\site-packages\lerobot\scripts\lerobot_record.py”, line 608, in main
record()
File “D:\Nikola\Academics\Research\Existential Robotics Laboratory\Code\reachy_pollen\reachy2\lib\site-packages\lerobot\configs\parser.py”, line 233, in wrapper_inner
response = fn(cfg, *args, **kwargs)
File “D:\Nikola\Academics\Research\Existential Robotics Laboratory\Code\reachy_pollen\reachy2\lib\site-packages\lerobot\scripts\lerobot_record.py”, line 534, in record
record_loop(
File “D:\Nikola\Academics\Research\Existential Robotics Laboratory\Code\reachy_pollen\reachy2\lib\site-packages\lerobot\datasets\image_writer.py”, line 36, in wrapper
raise e
File “D:\Nikola\Academics\Research\Existential Robotics Laboratory\Code\reachy_pollen\reachy2\lib\site-packages\lerobot\datasets\image_writer.py”, line 29, in wrapper
return func(*args, **kwargs)
File “D:\Nikola\Academics\Research\Existential Robotics Laboratory\Code\reachy_pollen\reachy2\lib\site-packages\lerobot\scripts\lerobot_record.py”, line 348, in record_loop
obs = robot.get_observation()
File “D:\Nikola\Academics\Research\Existential Robotics Laboratory\Code\reachy_pollen\reachy2\lib\site-packages\lerobot\robots\reachy2\robot_reachy2.py”, line 189, in get_observation
obs_dict[cam_key] = self.cameras[cam_key].read()
File “D:\Nikola\Academics\Research\Existential Robotics Laboratory\Code\reachy_pollen\reachy2\lib\site-packages\lerobot\utils\decorators.py”, line 29, in wrapper
return func(self, *args, **kwargs)
File “D:\Nikola\Academics\Research\Existential Robotics Laboratory\Code\reachy_pollen\reachy2\lib\site-packages\lerobot\cameras\reachy2_camera\reachy2_camera.py”, line 179, in read
raise RuntimeError(
RuntimeError: Reachy2Camera(teleop, left): no teleop frame after retries. The headset being on is not enough: the Reachy2Teleoperation app must be running on this PC, connected to the robot, and actively streaming (you should see the camera preview in the app). On Windows, confirm GStreamer is installed and on PATH (see Pollen docs). Try $env:UNITY_XR_ENABLE=1 if controls/video misbehave.

The VR headset is successfully connected, and we can teleoperate the robot getting the camera preview and everything seems normal. But when trying to record the data from the two teleop cameras that is failing. We are able to record the stream from the torso camera, so it seems like the pipeline is working, but it could be the setting or something in the script which is failing. This is our setup:

--dataset.num_episodes=1 `

--dataset.episode_time_s=5 `

--dataset.fps=15 `

--dataset.vcodec=h264 `

--dataset.streaming_encoding=false `

--dataset.push_to_hub=false `

--display_data=false

Also, the GStreamer seems to be working as well:”gst-inspect-1.0 --version
gst-inspect-1.0 version 1.27.90
GStreamer 1.27.90
Unknown package origin”

Hi @NikolaRaicevic,

Does this ‘No frame retrieved’ problem happen every time, or have you been able to retrieve frames in some sessions and only see it fail occasionally?

When you start recording, do images still appear in the teleoperation application?

When this problem occurs during recording, are you able to retrieve frames using a simple Python SDK command?: How to Access Reachy 2’s Teleop and Depth Cameras with Python?

I was able to fix it, but had to fix the lerobot package. There was an issue in robot_reachy2.py script. But even after the fix, I am only able to record the frequency of 15Hz. On the other hand, when I check the ROS topics, they record at much faster frequencies, around 30Hz. Is it possible to achieve those frequencies?

Unfortunately, we didn’t manage to achieve higher acquisition frequencies. Recording at 15 Hz was sufficient in our case, but if you need to reach 30 Hz, using ROS seems to be a better solution.