Showing where each benchmark object goes, in AR

Sole author RoboTouch Lab, UIUC (Prof. Wenzhen Yuan)  –

A live camera view of the lab table in front of the UR5e arm: four rendered YCB objects, a drill, a bleach bottle, a can and a mustard bottle, sit on the table where the benchmark puts them; a printed AprilTag lies on the table in the foreground.
The benchmark layout, rendered from the printed tag’s pose and blended over the live RealSense view.

A printed AprilTag tells the camera where it is, and my ROS 2 tool draws the benchmark layout over live video.

Whoever sets up a benchmark scene sees, on the live image, where each real object has to go. I built it as sole author.

What I did

  • Built the ROS 2 tool end to end: it finds a printed AprilTag, recovers the camera pose and blends the benchmark layout over live video.
  • Made the render line up with the real camera: an off-axis OpenGL frustum built from the intrinsics K.
  • Wrote a mesh converter that splits multi-material meshes into per-material URDFs and verifies the geometry is preserved.
  • Designed a hand-editable YAML scene format and moved capture from ROS topics to direct pyrealsense2.

Figures

From a printed tag to a see-through guide: the tag gives the camera’s pose, and a camera matched to the RealSense intrinsics renders the layout over live video.
A camera view of the same lab table with semi-transparent rendered objects overlaid: a sugar box, a small patterned box, a yellow mustard bottle and an orange ball, positioned relative to the fiducial markers; a robot controller tablet sits in the foreground.
A second benchmark layout on the same table: the sugar box, mustard bottle and ball are renders, placed from the tag’s pose over the live frame.

Built with

ROS 2 RealSense (pyrealsense2) AprilTag (tag36h11) PyBullet OpenGL camera math

Credits

Builds on ManipulationNet: its benchmark scenes and the tag-to-render math I re-implemented as a standalone tool. YCB object meshes (CC BY 4.0). With Prof. Wenzhen Yuan.