Running arm-demos on physical hardware requires three components to be connected and configured before you launch: the UR3e arm over a local Ethernet network, a vacuum gripper wired to the robot’s digital I/O, and an OAK-D Pro camera attached via USB. Each component has its own setup step, and none of them depend on each other, so you can work through them in parallel if you have the hardware available.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/MRRP-lab/arm-demos/llms.txt
Use this file to discover all available pages before exploring further.
UR3e robot arm
The robot driver connects to the UR3e over a LAN interface. The default robot IP expected by thelaunch-lan task is 192.168.56.101.
Network configuration
Configure the network interface on your workstation with a static IP on the same subnet as the robot (for example,192.168.56.1/24). On the robot’s teach pendant, navigate to Settings → System → Network and set:
| Field | Value |
|---|---|
| IP address | 192.168.56.101 |
| Subnet mask | 255.255.255.0 |
| Default gateway | 192.168.56.1 |
External control URCap
The UR robot driver requires the External Control URCap to be installed and active on the pendant. Load theexternal_control.urp program on the pendant and start it before running pixi run launch (or pixi run run). The driver will wait for the URCap to connect before accepting motion commands.
The
launch-lan task sets headless_mode:=true and launch_dashboard_client:=false. The driver communicates over the robot’s primary interface port (30001) and RTDE port (30004) — make sure these are not blocked by a firewall.Vacuum gripper
The vacuum gripper is controlled by toggling digital output pin 0 on the UR3e controller using theur_msgs/srv/SetIO service. The VacuumControl node in pick_and_place.py calls set_digital_out(0, ON) to engage suction and set_digital_out(0, OFF) to release.
Wire the vacuum solenoid valve so that it is driven by DO0 on the robot’s tool I/O connector. Confirm the gripper actuates correctly with a manual test before running pick-and-place demos.
OAK-D Pro camera
The OAK-D Pro is mounted at the wrist and connects to the host via USB 3. Thedepthai library communicates with the camera directly over USB, so no additional ROS driver package is required.
udev rule (Linux)
By default, only root can access the OAK USB device. Add a udev rule so your user can open it withoutsudo:
WSL2 users
USB devices are not automatically forwarded to WSL2. Useusbipd on the Windows host to bind and attach the OAK camera. The connect-oak-wsl task handles this automatically, polling for VID 03E7 and re-attaching whenever the camera’s PID changes (which happens during firmware boot):
MediaPipe hand landmarker model
The gesture-control demo requires a pre-trained MediaPipe hand landmarker model that is not included in the repository. Download it with:hand_landmarker.task to the current working directory. The demo nodes expect to find the file there at runtime.
AprilTag pick targets
The pick-and-place demo uses AprilTag pose estimates as pick targets.tag_1 is the default tag frame looked up by VacuumControl.get_tag_pose(). Print or fabricate a tag_1 marker from the 36h11 family and place it on the object or surface you want the arm to pick from.
Launch on real hardware
Once the arm, gripper, and camera are configured:pixi run launch-lan, which builds the workspace if needed and then runs: