Marvin Pro Startup and Debugging
This page applies to the current Tianzhun-controller version and covers the minimum sequence from power-on to first teleoperation. For buttons, recording, playback, and logs, see Current Marvin Pro Apex Teleop.
1. Before startup
- Connect the robot, cabinet, host PC, and headset according to Hardware Wiring.
- Release the emergency stop and clear the robot workspace.
- Put the host PC and Tianzhun controller on the same subnet.
- Connect the headset to the same LAN.
- Check whether the robot is still in its factory packing pose. Do not click Home from the packing pose. A wrist camera may collide with the center column.
2. Connect to the Tianzhun controller
The following uses the default IP 6.6.7.100. Use the delivered site configuration if it was changed.
ping 6.6.7.100
ssh nvidia@6.6.7.100
After controller power-on, if the delivered system contains ~/cam_geac, initialize the cameras according to the delivered configuration:
cd ~/cam_geac
./rb_camera.sh init
Start the Apex backend service:
sudo systemctl start apex-backend.service
sudo systemctl status apex-backend.service --no-pager
Disable
X11-Forwardingin MobaXterm to avoid camera timeout or headset video issues.
3. Start Apex Teleop and the Robot
- Open Apex Teleop.
- Enter the Tianzhun controller IP in the upper-right field and press Enter.
- Start Robot.
- Confirm that the URDF pose matches the physical robot.
- Start Teleop and dnsmasq.
- Start Camera when video is required. Start Tool only when an end effector is configured.
- Click Start Robot in the lower-left card.

4. First Unpacking: Exit the Packing Pose
The robot is delivered with both arms hanging vertically close to the center column. Calling Home directly from this pose can cause a wrist camera to collide with the column. After first unpacking, or whenever the robot has been manually returned to the packing pose, first move all 14 arm joints to zero.
After completing the previous section, confirm that Robot and Teleop are running and the robot is Ready. Open RQt from a desktop terminal with the Apex ROS environment loaded:
source /etc/apex/apex_ros_env.sh
rqt
In RQt, open Plugins → Services → Service Caller, then perform these calls:
- Select
/control/set_mode, setdatato1, and switch to Position Mode. - Select
/control/set_input, setdatato2, and select Planner input. - Select
/control/movej, setjoint_valuesto the following 14 zeros, and click Call:
[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
Watch the physical robot and the distance between each wrist camera and the center column throughout the motion. Keep the emergency stop within reach. Continue only after both arms reach the all-zero pose. This section does not need to be repeated when the robot has already left the packing pose and its starting path is known to be safe.
5. Enter the Teleoperation Pose
- Confirm that the robot has left the packing pose and is at the all-zero pose or another verified safe starting pose.
- Select Impedance Mode.
- Click Home and wait for the teleoperation initial pose.
- Set Input Mode to Teleop.
6. Connect the Headset
Marvin Pro supports Pico and Meta Quest:
Connect the headset cable, open the Apex headset client, and connect to the controller. Confirm the VR state in Apex Teleop, then begin with small motions in a clear workspace.
7. Quick Checks
| Symptom | Check |
|---|---|
| Cannot connect from the IP field | IP, subnet, cable, and controller network |
| Robot does not start | E-stop, robot power, controller link, and Robot log |
| URDF does not follow the robot | Robot module and robot model configuration |
| Teleop unavailable | Robot running and Ready state |
| Headset cannot connect | dnsmasq, headset cable, connection IP, and VR state |
| Camera is black | Camera module, camera initialization, and camera_sources |
| No teleoperation motion | Impedance Mode, Home completion, and Teleop input mode |
| First startup from the packing pose | Do not Home directly; use RQt and /control/movej to move all 14 arm joints to zero first |
| Home path approaches the center column | Stop immediately and use the emergency stop if needed; check the starting pose and the all-zero step |
For further diagnosis, see Apex Teleop logs.