On Mon, Jun 6, 2011 at 6:03 PM, Bill Morris <span dir="ltr"><<a href="mailto:morris@ee.ccny.cuny.edu">morris@ee.ccny.cuny.edu</a>></span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="im">On Mon, 2011-06-06 at 14:53 -0700, Patrick Mihelich wrote:<br>
> On Mon, Jun 6, 2011 at 2:26 PM, Bill Morris <<a href="mailto:morris@ee.ccny.cuny.edu">morris@ee.ccny.cuny.edu</a>><br>
> wrote:<br>
>         > > I would like to see a system for storing camera<br>
>         calibrations based on<br>
><br>
>         > The camera_info_manager URL supports any naming scheme<br>
>         desired.<br>
><br>
><br>
> In the unstable version of the OpenNI (Kinect) drivers, I've tried out<br>
> a system for storing calibrations based on serial number. You can pass<br>
> in a URL containing "%s", and the driver replaces that with the camera<br>
> name. The camera name is of the form "[rgb|depth]_[serial#]". For<br>
> example, if you give the driver a URL "/tmp/calibration_%s.yaml" it<br>
> might expand to "/tmp/calibration_depth_B00362708888047B.yaml". This<br>
> makes working with multiple Kinects a lot easier.<br>
<br>
</div>That reminds me that in testing I found that the calibrations are<br>
different at different resolutions and frame rates.<br>
<br>
At least one Logitech camera has a "feature" that it changes it's FOV at<br>
different frame rates.<br>
<br>
So something like this may be more appropriate<br>
~/.ros/calibration/usb_camera-046d08210001-640x480@30.yaml<br></blockquote><div><br></div><div>This sounds like a motivation for adding more substitution args to the URL. For example, "/tmp/calibration_$NAME_$RESOLUTION_$FRAMERATE.yaml". However, I feel like this could expand quickly (for example, what about some value for focus for variable focus cameras?), so it could get tricky unless there is a small set of parameters that influence when we can use a given calibration or not. Remember that for each of these substitution args, we would have to add a getter/setter function to the camera_info_manager API. </div>
<div><br></div><div>For those cameras that change FOV based on framerate, can the FOV value be read out? Seems like framerate in general shouldn't affect when you can use a given calibration, so it would be better to record the FOV itself. And obviously none of this really helps with things like PointGrey firewire cameras that have separate lenses that can be manually adjusted for things like focus, so we need to not break those use cases of camera_info_manager.</div>
<div><br></div><div>So is there a small set of parameters that determine when a calibration is valid? If so, what are they?</div><div><br></div><meta http-equiv="content-type" content="text/html; charset=utf-8"><blockquote class="gmail_quote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; ">
On Mon, 2011-06-06 at 14:53 -0700, Patrick Mihelich wrote:  </blockquote><blockquote class="gmail_quote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; ">
 </blockquote><blockquote class="gmail_quote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; ">
<span class="Apple-style-span" style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px; ">+1 on $ROS_HOME over /tmp. /tmp works, as long as you don't reboot :). Otherwise you have to know and remember to change the URL, which can lead to otherwise unnecessary launch file editing. Let's streamline that away.</span></blockquote>
<div><br></div><div>As far as changing the default directory to $ROS_HOME from /tmp, that seems fine with me. We do still need to preserve the setting of a directory from launch files - for example, I would probably set my directories up like "$(find my_robot_configuration_package)/camera_calibrations/$NAME/$RESOLUTION.yaml" and keep that checked into my VCS. Let's not "streamline away" a feature that some people (like myself) actually like :)</div>
<div><br></div><div>- Eric</div></div>