ros-perception / camera_info_manager_py

Subset of the C++ camera_info_manager ROS package for Python camera drivers
http://wiki.ros.org/camera_info_manager_py
7 stars 25 forks source link

Added first version of zoom camera support. #11

Closed peci1 closed 8 years ago

peci1 commented 8 years ago

This is my trial to solve http://answers.ros.org/question/232931/zoom-camera-calibration-in-ros/ . I am open to any suggestions on how to do this better. The calibration part has still been missing, but at least the interpolating version should be able to use several calibrations captured at different zoom levels using the standard calibration package.

jack-oquin commented 8 years ago

Your code looks great, nice job!

My main concern is that most camera drivers are written in C++ and not Python, and the C++ camera_info_manager does not provide similar interfaces. I suppose they could be added, if someone were sufficiently motivated to do it, but that probably would not be me.

peci1 commented 8 years ago

It would neither be me, since I don't need it at the moment... Do you consider it as a blocker for adding this Python feature? One half-way could be to provide a setCameraInfo C++ method that does not store the camera info in the calibration file, so that drivers can change the current camera info without overwriting the calibration file... The drivers could then do the P matrix computation themselves and just use the camera_info_manager to publish the matrices.

As for the language choice - I can imagine most USB/FireWire cameras have C++ drivers, but for IP cameras, Python is much easier to use (that is my case).

jack-oquin commented 8 years ago

Do you consider it as a blocker for adding this Python feature?

No, I don't.

We could consider the two Python implementations as "proofs of concept". By gaining experience with IP cameras, we'll find out what works best in actual use.

peci1 commented 8 years ago

Ok :) I implemented both ways, because each of them has some dis/advantages, so that developers can decide what they need...

There is still no calibration interface/procedure, but I don't have time to do it...

jack-oquin commented 8 years ago

At least an outline of a calibration procedure would be helpful, if people are actually going to use it.

Like for interpolation, would the user select several zoom settings and run calibration on each one?

peci1 commented 8 years ago

Yes, that was the idea... He'd just have to backup the yaml file for each zoom level before it is overridden by the next calibration step... I can add some notes like this...

For the other method, I assume the user just reads the specs of the chip/lens and tries his best... There could probably be some more sophisticated methods, but this way will IMO be never very precise, so it is basically just to have at least something you can use with your zoom camera.

jack-oquin commented 8 years ago

Sounds reasonable. I think we do owe it to people to provide at least some basic hints. :smile:

peci1 commented 8 years ago

Here we go ;)