Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Create README.md from Wiki content #342

Merged
merged 5 commits into from
Feb 18, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 41 additions & 0 deletions polled_camera/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
## `polled_camera` Overview

`polled_camera` defines the ROS interface that client nodes use to request images from a polling camera driver node (e.g. [prosilica_camera](https://index.ros.org/p/prosilica_camera/)). The protocol is:

* The camera driver advertises a service call `<camera>/request_image` of type [polled_camera/GetPolledImage](https://github.com/ros-perception/image_common/blob/rolling/polled_camera/srv/GetPolledImage.srv).
* The client calls the service, specifying an output namespace.
* On receiving a request, the driver captures an image and returns its time stamp in the service response.
* The driver publishes (latching) the [sensor_msgs/Image](http://www.ros.org/doc/api/sensor_msgs/html/msg/Image.html) and [sensor_msgs/CameraInfo](http://www.ros.org/doc/api/sensor_msgs/html/msg/CameraInfo.html) to `<response_namespace>/image_raw` and `<response_namespace>/camera_info`.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

* Clients subscribe to the response topics just like any other camera image stream.
* When a disconnection causes the number of subscribers to drop to zero, the publisher shuts down.

See the [code API](http://www.ros.org/doc/api/polled_camera/html/) (unstable) for more information on writing polled camera drivers or clients.

There are several reasons for publishing images to topics instead of returning them from the service call:

* **Consistency:** Client-side processing is always performed in an image callback, regardless of what type of camera is used.
* **Visibility:** Topics can be monitored in [image_view](https://index.ros.org/p/image_view/) or [rviz](https://index.ros.org/p/rviz/).
tfoote marked this conversation as resolved.
Show resolved Hide resolved
* **Reproducibility:** Topics can be [bagged](https://index.ros.org/p/rosbag2/) and played back later.
* **Compression:** Can take advantage of [image_transport](https://index.ros.org/p/image_transport/) to compress images, if desired.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd like to work to get the canonical link for packages to be the index page which is much better cross linked. It has a link directly to the API docs for each different version. We do need to get more README's ported. I'm doing this as a test of migrating content from the wiki . If we migrated to it's wiki page ( https://wiki.ros.org/image_transport) to it's README.md the link here would be much more useful. But as we're looking to wind down the wiki, we are considering a more bulk process and I'd like to do the linking with that in mind.


## Nodes

### poller

Continually requests images from a polled camera at a specified rate in Hz, making the camera look like it is capturing continuously.

Usage:

```bash
# Poll "my_camera" at 5 Hz, publishing in namespace my_polled_output/.
$ poller 5 camera:=my_camera output:=my_polled_output
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this correct ?

ros2 run polled_camera poller 5 camera:=my_camera output:=my_polled_output

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't have a clue, I'm just porting the documentation as it exists trying to apply some basic heuristics.

```

Published Topics
* `<output>/image_raw` ([sensor_msgs/Image](https://github.com/ros2/common_interfaces/blob/rolling/sensor_msgs/msg/Image.msg))
Image topic, actually published by the camera driver. output should be remapped by the user.
* `<output>/camera_info` ([sensor_msgs/CameraInfo](https://github.com/ros2/common_interfaces/blob/rolling/sensor_msgs/msg/CameraInfo.msg))
Info topic, actually published by the camera driver. output should be remapped by the user.
Services Called
* `<camera>/request_image` ([polled_camera/GetPolledImage](https://github.com/ros-perception/image_common/blob/rolling/polled_camera/srv/GetPolledImage.srv))
The camera driver's polled image service. camera should be remapped by the user to the camera namespace.