Ricoh Theta Z1 Automatic Power On

I am integrating the Ricoh Theta Z1 camera with a ROS-based robot, and have the following pipeline set up:

  1. Manually power on robot
  2. Manually power on Z1 camera
  3. UDEV rule automatically sets Z1 camera into live streaming mode (using ptpcam command)
  4. ROS driver automatically launches and stream Z1 camera data to ROS.

Ideally, I would like the Z1 camera to power on automatically when the camera receives power when the robot powers on.

Is this possible?

Edit:
I found this video RICOH THETA - Understand and Control Auto Power On - YouTube, which indicates that the Z1 camera (may) power on automatically when connected to power (from USB port). It appears that the Z1 camera I have does not exhibit this behaviour.

It’s better to use sleep.

What hardware platform are you using for the robot computer that the camera is plugged into? x86? Jetson? other?

If you really need to power on the camera, you need to power-cycle the USB ports. see the examples in the document above.

Power On Demo with Z1 on robot

Z1 Power On Demo with Raspberry Pi Touchscreen

1 Like

Thanks for the quick response. It appears to be a common/well documented topic. I’ll take a look at the links you’ve attached.

2 Likes

If you’re using a some type of controller like a Jetson or Raspberry Pi to supply power to the camera, you will need to use a powered USB hub with PD 1.2 CDP support for the camera to stream indefinitely. The common use case scenario is that the camera is on top of a remote robot (for example under water) and you cannot physically get to the camera easily. In these cases, the power cycle is useful as you can turn it off and more importantly, turn it on if the camera loses power for some reason. If you need to stream the camera continuously for surveillance, you will need to use the hub. People are powering the hub from their robot power supplies with usable results.

If you need this capability, refer to the section below.

Camera - RICOH THETA Development on Linux

I am using an IMB-1221-D Mini-ITX motherboard, and the Z1 camera is connected directly into one of the USB 3.0 (3.2) ports. The PC runs on x86 architecture.

I’ve investigated through the links and videos you’ve attached previously, and I have a much better understanding of the Z1 camera now.

From my understanding, due to the (non-Jetson, non-RPi) type of PC I am using, I cannot go the route of power cycling the USB port to power on the Z1 camera. That is fine since I have several other sensor payloads connected to the robot with their own respective boot-up behaviours; power cycling the USB ports may cause undesirable effects.

Fortunately, I did not fully grasp the difference between the sleep and power off modes until now. It turns out I have always had the Z1 camera mode in sleep mode, and as per the documentation, I can simply wake it up using ptpcam --set-property=0xd80e --val=0. Although, I need to send that command twice for the camera to wake (I believe this behaviour is also already documented). As long as the camera never truly turned off and instead remains in sleep mode when the robot is powered off, I can simply trigger the Z1 camera to wake when the robot is powered on. This approach is mostly sufficient for my application.

The only other scenario is when the robot is powered off for a long time. In this case, I assume it’s best to turn off the Z1 camera to prevent power draining, as opposed to keeping it in sleep mode. In this case with the Z1 camera turned off, my only option would be to manually power on the Z1 camera when I need to use it, right?

yes, if you have physical access to the camera, it is best to manually press the power button on the camera to turn it on from a power off state when your usage prevents it from sleeping/waking. If you are shipping the camera and some equipment such as a robot, you should turn the camera off as that it is the lowest power state. After shipment of the equipment, your team will need to physically press the power button to turn the camera on. When the camera is powered on (not from sleep), you will need to set the camera into live streaming mode. You can do this with the USB API.

When you are using the camera for your application, you can put the camera to sleep and wake it up to conserve power.

There are USB APIs to control the auto-power off and auto-sleep. You should adjust these values to match your application.

If you have problems waking the camera up from sleep with the ptpcam from sourceforge, try the modified version of libptp2 below.