Update: solution suggestion
After fiddling around with the options a bit, here is my current workaround to the problem of having no serial available from the xtion.
With lsusb I determined that my PC has two separate hubs available for external USB devices, allowing me to plug in one xtion for each. Since the bus number doesn't chance, I can be sure that the xtion connected to a specific bus is always the same.
By moving the calibration files (named depth.yaml and rgb.yaml) into separate folders, I can assign the calibrations with the corresponding xtion. The serial number naming for the folders are based on a manual readning on the physical device.
This allows a fairly consistent behaviour, and for now it is sufficient to solve all my current problems with the devices having no serial number.
I include my customized .launch file below in case others have the same issue.
<launch>
<!-- Start xtion sensor 1 (on USB bus 1) -->
<include file="$(find openni_launch)/launch/openni.launch">
<arg name="camera" default="xtion1" />
<!-- device_id can have the following formats:
"B00367707227042B": Use device with given serial number
"#1" : Use first device found
"2@3" : Use device on USB bus 2, address 3
"2@0" : Use first device found on USB bus 2
-->
<arg name="device_id" default="1@0" />
<arg name="rgb_camera_info_url" default="package://scenecamera/calibrations/C9IVVBDA13767/rgb.yaml" />
<arg name="depth_camera_info_url" default="package://scenecamera/calibrations/C9IVVBDA13767/depth.yaml" />
<arg name="depth_registration" default="true" />
<arg name="publish_tf" default="true" />
</include>
<!-- Start xtion sensor 2 (on USB bus 2) -->
<include file="$(find openni_launch)/launch/openni.launch">
<arg name="camera" default="xtion2" />
<arg name="device_id" default="2@0" />
<arg name="rgb_camera_info_url" default="package://scenecamera/calibrations/C9IVVBDA13763/rgb.yaml" />
<arg name="depth_camera_info_url" default="package://scenecamera/calibrations/C9IVVBDA13763/depth.yaml" />
<arg name="depth_registration" default="true" />
<arg name="publish_tf" default="true" />
</include>
</launch>
--- Original post ---
I have the same problem. Did you come up with a workaround?
As you also state; it is not impossible to run 2 Xtion PRO LIVE at the same time because of this. The initialization during launch is however very dependent on which USB devices are connected, and on which bus.
Even more critical is that I need to manually extract and rename the calibration files and then figure out a way to force the correct calibration files on each camera in the .launch file.
Even if this will work, I still have to take great care with which USB-ports i choose to connect the sensors, as well as any other USB equipment.
This would be so much easier if the xtion would register with a serial number in Linux.
I'm on Ubuntu 12.04 with fuerte. Anyone know whether this an OS or ROS issue?
I would love to have it fixed!
(btw, i know this is more of a comment than an answer, but for some reason i'm not allowed to use the comment feature here)