From 21db884ad884794c092d438077d4d298f1471e05 Mon Sep 17 00:00:00 2001 From: Dennis Langenkamp Date: Thu, 14 Mar 2024 12:02:56 +0100 Subject: [PATCH 01/19] Added intial service description to README --- README.md | 614 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 607 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 12ebcc5..b16684e 100644 --- a/README.md +++ b/README.md @@ -1,27 +1,49 @@ # Vimba X ROS 2 camera driver +## Compability +- ROS 2 humble +- Nvidia Jetpack 5.x (arm64) +- Ubuntu 22.04 (x86_64) + ## Prerequisites - ROS 2 humble is installed on the system as defined by the [ROS 2 installation instructions](https://docs.ros.org/en/humble/Installation.html) - For running the system tests make sure the package "ros-humble-launch-pytests" is installed on your system. +## Installation +Download the debian package from the release page and install it using the following command: +``` +sudo apt-get install ros-humble-vimbax-camera-driver.deb +``` + ## Build Instructions 1. Setup the ROS2 environment ```shell source /opt/ros/humble/setup.bash ``` - -2. Create a workspace + +2. Initialize and update rosdep if not already done + ```shell + rosdep init + rosdep update + ``` + +3. Create a workspace ```shell mkdir -p ~/ros2_ws/src cd ~/ros2_ws/src ``` - -3. Clone this repository into the workspace + +4. Clone this repository into the workspace ```shell git clone ... ``` +5. Install dependencies + ```shell + cd ~/ros2_ws/ + rosdep install --from-path src --ignore-src + ``` -4. Run the actual build +6. Run the actual build ```shell cd ~/ros2_ws/ colcon build --cmake-args -DVMB_DIR= @@ -29,12 +51,12 @@ The optional VMB_DIR cmake argument can be used to specify the path to the Vimba X installation that used for testing. -5. Run unit tests (optional) +7. Run unit tests (optional) ```shell colcon test ``` -6. Print test results (optional) +8. Print test results (optional) ```shell colcon test-result --verbose ``` @@ -46,3 +68,581 @@ * Search and execute "ROS: Update C++ properties" * Type CTRL-SHIFT-b and select "colcon" to build the project * Type CTRL-SHIFT-d and select "ROS: Lauch" to start debug session + +# Common message types + +## vimbax_camera_msgs/Error + +| Name | Type | Description | +|------|------|-------------| +| code | int32 | Error code of the operation.
0 on success. | +| text | string | Error code as a string.
Only valid if the *code* is not 0. | + +## vimbax_camera_msgs/FeatureFlags +| Name | Type | Description | +|------|------|-------------| +| flag_none | bool | No additional information is provided | +| flag_read | bool | Static info about read access. Current status depends on access mode, check with the [access_mode_get](#camera-node-nsfeaturesaccess_mode_get) service | +| flag_write | bool | Static info about write access. Current status depends on access mode, check with the [access_mode_get](#camera-node-nsfeaturesaccess_mode_get) service | +| flag_volatile | bool | Value may change at any time | +| flag_modify_write | bool | Value may change after a write | + +## vimbax_camera_msgs/FeatureInfo +| Name | Type | Description | +|------|------|-------------| +| name | string | Name of the feature. | +| category | string | Feature category. | +| display_name | string | Display name of the feature. | +| sfnc_namespace | string | SFNC namespace of the feature | +| unit | string | Unit of the feature. | +| data_type | uint32 | Feature data type:
0: Unknown
1: Int
2: Float
3: Enum
4: String
5: Bool
6: Command
7: Raw
8: None | +| flags | [FeatureFlags](#vimbax_camera_msgsfeatureflags) | Access flags for this feature | +| polling_time | uint32 | Predefined polling time for volatile features | + +# Available services + +## /\/feature_info_query +### Description + +Query the feature information for the features given in *feature_names*. If the *feature_names* +is empty, then the information for all features will be returned. + + +### Request + +| Name | Type | Description | +|------|------|-------------| +|feature_names| string[] | Names of features to query + +### Response + +| Name | Type | Description | +|------|------|-------------| +| feature_info | [FeatureInfo](#vimbax_camera_msgsfeatureinfo)[] | List of feature infos | +| error | [Error](#vimbax_camera_msgserror) | Result of the operation | + +## /\/features/access_mode_get +### Description + +This service reads the current access mode of the feature *feature_name* + +### Request + +| Name | Type | Description | +|------|------|-------------| +| feature_name | string | Name of the feature for getting the current access mode | + +### Response + +| Name | Type | Description | +|------|------|-------------| +| is_readable | bool | True if the feature can currently be read otherwise false | +| is_writeable | bool | True if the feature can currently be written otherwise false | +| error | [Error](#vimbax_camera_msgserror) | Result of the request | + +## /\/features/bool_get +### Description + +Reads the current value of the bool feature *feature_name* + +### Request + +| Name | Type | Description | +|------|------|-------------| +| feature_name | string | Name of the feature | + +### Response + +| Name | Type | Description | +|------|------|-------------| +| value | bool | Current bool value of the feature | +| error | [Error](#vimbax_camera_msgserror) | Result of the feature read | + +## /\/features/bool_set +### Description + +Set the value of the bool feature *feature_name* to *value* + +### Request + +| Name | Type | Description | +|------|------|-------------| +| feature_name | string | Name of the feature | +| value | bool | New feature value | + +### Response + +| Name | Type | Description | +|------|------|-------------| +| error | [Error](#vimbax_camera_msgserror) | Result of the feature write | + +## /\/features/command_is_done +### Description + +Check if the command feature *feature_name* has finished. + +### Request + +| Name | Type | Description | +|------|------|-------------| +| feature_name | string | Name fo the feature | + +### Response + +| Name | Type | Description | +|------|------|-------------| +| is_done | bool | True if the command feature execution has finished | +| error | [Error](#vimbax_camera_msgserror) | Result of the operation | + +## /\/features/command_run +### Description + +Run the command feature *feature_name* and waits until it's done, so a call to is_done is not needed. + +### Request + +| Name | Type | Description | +|------|------|-------------| +| feature_name | string | Name fo the feature | + + +### Response + +| Name | Type | Description | +|------|------|-------------| +| error | [Error](#vimbax_camera_msgserror) | Result of the feature execution | + +## /\/features/enum_as_int_get +### Description + +Get the corresponding integer value for enum option *option* of feature *feature_name* + +### Request + +| Name | Type | Description | +|------|------|-------------| +| feature_name | string | Name of the feature | +| option | string | Enum option | + +### Response + +| Name | Type | Description | +|------|------|-------------| +| value | int64 | Integer value of option | +| error | [Error](#vimbax_camera_msgserror) | Result of the operation | + +## /\/features/enum_as_string_get +### Description + +Get the enum string representation for the enum integer value *value* of the feature *feature_name* + +### Request + +| Name | Type | Description | +|------|------|-------------| +| feature_name | string | Name of the feature | +| value | int64 | Integer value of the enum feature | + +### Response + +| Name | Type | Description | +|------|------|-------------| +| option | string | String representation of the enum value | +| error | [Error](#vimbax_camera_msgserror) | Result of the operation | + +## /\/features/enum_get +### Description + +Read the current option of the enum feature *feature_name* + +### Request + +| Name | Type | Description | +|------|------|-------------| +| feature_name | string | Name of the feature | + +### Response + +| Name | Type | Description | +|------|------|-------------| +| option | string | Current enum feature option | +| error | [Error](#vimbax_camera_msgserror) | Result of the operation | + +## /\/features/enum_info_get +### Description + +Get the type specific feature info the enum feature *feature_name*. + +### Request + +| Name | Type | Description | +|------|------|-------------| +| feature_name | string | Name of the feature | + +### Response + +| Name | Type | Description | +|------|------|-------------| +| possible_values | string[] | List of all exsiting enum options | +| available_values | string[] | List of the currently available enum options | +| error | [Error](#vimbax_camera_msgserror) | Result of the operation | + +## /\/features/enum_set +### Description + +Sets the value of the enum feature *feature_name* to *value* + +### Request + +| Name | Type | Description | +|------|------|-------------| +| feature_name | string | Name of the enum feature to change | +| value | string | Enum option to set | + +### Response + +| Name | Type | Description | +|------|------|-------------| +| error | [Error](#vimbax_camera_msgserror) | Result of the operation | + +## /\/features/float_get +### Description + +Reads the current value of the float feature *feature_name* + +### Request + +| Name | Type | Description | +|------|------|-------------| +| feature_name | string | Name of the float feature to read | + +### Response + +| Name | Type | Description | +|------|------|-------------| +| value | float64 | Current value of the float feature | +| error | [Error](#vimbax_camera_msgserror) | Result of the operation | + +## /\/features/float_info_get +### Description + +Get the type specific feature information (limits) of the float feature *feature_name* + +### Request + +| Name | Type | Description | +|------|------|-------------| +| feature_name | string | Name of the float feature | + +### Response + +| Name | Type | Description | +|------|------|-------------| +| min | float64 | Minimum value of the feature | +| max | float64 | Maximum value of the feature | +| inc | float64 | Increment of the feature | +| inc_available | bool | True when the *inc* field contains a valid value otherwise false | +| error | [Error](#vimbax_camera_msgserror) | Result of the operation | + +## /\/features/float_set +### Description + +Set the value of the float feature *feature_name* to *value* + +### Request + +| Name | Type | Description | +|------|------|-------------| +| feature_name | string | Name of the float feature to change | +| value | float64 | New value of the float feature | + +### Response + +| Name | Type | Description | +|------|------|-------------| +| error | [Error](#vimbax_camera_msgserror) | Result of the operation | + +## /\/features/int_get +### Description + +Read the current value of the int feature *feature_name* + +### Request + +| Name | Type | Description | +|------|------|-------------| +| feature_name | string | Name of the int feature to read | + +### Response + +| Name | Type | Description | +|------|------|-------------| +| value | int64 | Current value of the int feature | +| error | [Error](#vimbax_camera_msgserror) | Result of the operation | + +## /\/features/int_info_get +### Description + +Get the type specific feature information (limits) of the int feature *feature_name* + +### Request + +| Name | Type | Description | +|------|------|-------------| +| feature_name | string | Name of the int feature | + +### Response + +| Name | Type | Description | +|------|------|-------------| +| min | int64 | Minimum feature value | +| max | int64 | Maximum feature value | +| inc | int64 | Increment of the feature | +| error | [Error](#vimbax_camera_msgserror) | Result of the operation | + +## /\/features/int_set +### Description + +Set the value of the int feature *feature_name* to *value* + +### Request + +| Name | Type | Description | +|------|------|-------------| +| feature_name | string | Name of the int feature to change | +| value | int64 | New value of the int feature | + +### Response + +| Name | Type | Description | +|------|------|-------------| +| error | [Error](#vimbax_camera_msgserror) | Result of the operation | + +## /\/features/list_get +### Description + +Get a list of all available feature names + +### Request + +| Name | Type | Description | +|------|------|-------------| + +### Response + +| Name | Type | Description | +|------|------|-------------| +| feature_list | string[] | List containing all feature names of the camera | +| error | [Error](#vimbax_camera_msgserror) | Result of the operation | + +## /\/features/raw_get +### Description + +Get the data of the raw feature *feature_name* + +### Request + +| Name | Type | Description | +|------|------|-------------| +| feature_name | string | Name of the raw feature | + +### Response + +| Name | Type | Description | +|------|------|-------------| +| buffer | byte[] | Contains the data of the raw feature | +| buffer_size | uint32 | Length of the feature data | +| error | [Error](#vimbax_camera_msgserror) | Result of the operation | + +## /\/features/raw_info_get +### Description + +Get the type specific feature information of the raw feature *feature_name* + +### Request + +| Name | Type | Description | +|------|------|-------------| +| feature_name | string | Name of the raw feature | + +### Response + +| Name | Type | Description | +|------|------|-------------| +| max_length | int64 | Maximum length of the raw feature data | +| error | [Error](#vimbax_camera_msgserror) | Result of the operation | + +## /\/features/raw_set +### Description + +Set the raw feature *feature_name* to the data in *buffer* + +### Request + +| Name | Type | Description | +|------|------|-------------| +| feature_name | string | Name of the raw feature to change | +| buffer | byte[] | New data of the raw feature | + +### Response + +| Name | Type | Description | +|------|------|-------------| +| error | [Error](#vimbax_camera_msgserror) | Result of the operation | + +## /\/features/string_get +### Description + +Get the current value of the string feature *feature_name* + +### Request + +| Name | Type | Description | +|------|------|-------------| +| feature_name | string | Name of the string feature to read | + +### Response + +| Name | Type | Description | +|------|------|-------------| +| value | string | Current value of the string feature | +| error | [Error](#vimbax_camera_msgserror) | Result of the operation | + +## /\/features/string_info_get +### Description + +Get the type specific feature info of the string feature *feature_name* + +### Request + +| Name | Type | Description | +|------|------|-------------| +| feature_name | string | Name of the string feature | + +### Response + +| Name | Type | Description | +|------|------|-------------| +| max_length | int64 | Maximum length of the string value | +| error | [Error](#vimbax_camera_msgserror) | Result of the operation | + +## /\/features/string_set +### Description + +Set the string feature *feature_name* to *value* + +### Request + +| Name | Type | Description | +|------|------|-------------| +| feature_name | string | Name of the string feature to change | +| value | string | New value of the string feature | + +### Response + +| Name | Type | Description | +|------|------|-------------| +| error | [Error](#vimbax_camera_msgserror) | Result of the operation | + +## /\/settings/load +### Description + +Load the camera setting from the xml file *filename*. + +**The path to the settings file must point to an existing file system that the node runs on.** + +### Request + +| Name | Type | Description | +|------|------|-------------| +| filename | string | Path to the xml file to load | + +### Response + +| Name | Type | Description | +|------|------|-------------| +| error | [Error](#vimbax_camera_msgserror) | Result of the operation | + +## /\/settings/save +### Description + +Save the camera setting to the xml file *filename*. + +**The path to the settings file must point to an existing directory system that the node runs on.** + +### Request + +| Name | Type | Description | +|------|------|-------------| +| filename | string | Path to the file where the settings should be saved. | + +### Response + +| Name | Type | Description | +|------|------|-------------| +| error | [Error](#vimbax_camera_msgserror) | Result of the operation | + +## /\/status +### Description + +Get status information of the connected camera. + +### Request + +| Name | Type | Description | +|------|------|-------------| + +### Response + +| Name | Type | Description | +|------|------|-------------| +| error | [Error](#vimbax_camera_msgserror) | Result of the operation | +| display_name | string | Display name of the camera | +| model_name | string | Model name of the camera | +| device_firmware_version | string | Firmware version of the camera | +| device_id | string | Device id of the camera. Corresponds to the camera feature "DeviceFirmwareVersion". | +| device_user_id | string | Device user id of the camera. Corresponds to the camera feature "DeviceUserID". | +| device_serial_number | string | Serial number of the camera | +| interface_id | string | Id of the GenTL interface module | +| transport_layer_id | string | Id of the GenTL transport layer module | +| streaming | bool | True if the camera is currently streaming otherwise false | +| width | uint32 | Currently set width of the image. Equals the value of the camera feature "Width" | +| height | uint32 | Currently set height of the image. Equals the value of the camera feature "Height" | +| frame_rate | float64 | Currently set frame rate of the camera | +| pixel_format | string | Currently set pixelformat. Equals the camera feature "PixelFormat" | +| trigger_mode | string | Current trigger mode | +| trigger_source | string | Current trigger source | +| ip_address | string | IP address of the camera.
**Only valid for GigE vision cameras** +| mac_address | string | MAC address of the camera.
**Only valid for GigE vision cameras** + +## /\/stream_start +### Description + +Start the streaming of the camera. + +### Request + +| Name | Type | Description | +|------|------|-------------| + +### Response + +| Name | Type | Description | +|------|------|-------------| +| error | [Error](#vimbax_camera_msgserror) | Result of the operation | + +## /\/stream_stop +### Description + +Stop the streaming of the camera. + +### Request + +| Name | Type | Description | +|------|------|-------------| + +### Response + +| Name | Type | Description | +|------|------|-------------| +| error | [Error](#vimbax_camera_msgserror) | Result of the operation | From d5e4e1abbbb9f82f8b11557bce1b4a7c17efe688 Mon Sep 17 00:00:00 2001 From: Dennis Langenkamp Date: Fri, 15 Mar 2024 08:52:32 +0100 Subject: [PATCH 02/19] Updated README with information about parameters, automatic stream start and GenICam events --- README.md | 263 +++++++++++++++++++++++++++++------------------------- 1 file changed, 142 insertions(+), 121 deletions(-) diff --git a/README.md b/README.md index b16684e..b221bed 100644 --- a/README.md +++ b/README.md @@ -69,16 +69,37 @@ sudo apt-get install ros-humble-vimbax-camera-driver.deb * Type CTRL-SHIFT-b and select "colcon" to build the project * Type CTRL-SHIFT-d and select "ROS: Lauch" to start debug session -# Common message types +## Automatic stream start -## vimbax_camera_msgs/Error +The streaming automatically start if a node subscribes to the *image_raw* or any other image +topic of the camera node. The automatic stream start can be enabled and disable using the +*autostart* parameter. + +## GenICam events + +GenICam events and feature invalidations can be used using the vimbax_camera_events package. For more details please look into the events examples in the vimbax_camera_examples package. + +## Parameters + +| Name | Description | +|------|-------------| +| camera_id | Id of camera to open. Can be the device id, extended device id, serial number, ip or mac address. | +| settings_file | Path to xml settings file to load on startup.
**The file must point to a valid file on system that the node runs on.** | +| buffer_count | Number of buffers used for streaming.
**Can't be change during streaming.** | +| autostart | When true the [automatic stream start](#automatic-stream-start) is enabled. | +| camera_frame_id | ROS 2 frame id of the camera. | +| camera_info_url | Url to ROS 2 camera info file. | + +## Common message types + +### vimbax_camera_msgs/Error | Name | Type | Description | |------|------|-------------| | code | int32 | Error code of the operation.
0 on success. | | text | string | Error code as a string.
Only valid if the *code* is not 0. | -## vimbax_camera_msgs/FeatureFlags +### vimbax_camera_msgs/FeatureFlags | Name | Type | Description | |------|------|-------------| | flag_none | bool | No additional information is provided | @@ -87,7 +108,7 @@ sudo apt-get install ros-humble-vimbax-camera-driver.deb | flag_volatile | bool | Value may change at any time | | flag_modify_write | bool | Value may change after a write | -## vimbax_camera_msgs/FeatureInfo +### vimbax_camera_msgs/FeatureInfo | Name | Type | Description | |------|------|-------------| | name | string | Name of the feature. | @@ -99,40 +120,40 @@ sudo apt-get install ros-humble-vimbax-camera-driver.deb | flags | [FeatureFlags](#vimbax_camera_msgsfeatureflags) | Access flags for this feature | | polling_time | uint32 | Predefined polling time for volatile features | -# Available services +## Available services -## /\/feature_info_query -### Description +### /\/feature_info_query +#### Description Query the feature information for the features given in *feature_names*. If the *feature_names* is empty, then the information for all features will be returned. -### Request +#### Request | Name | Type | Description | |------|------|-------------| |feature_names| string[] | Names of features to query -### Response +#### Response | Name | Type | Description | |------|------|-------------| | feature_info | [FeatureInfo](#vimbax_camera_msgsfeatureinfo)[] | List of feature infos | | error | [Error](#vimbax_camera_msgserror) | Result of the operation | -## /\/features/access_mode_get -### Description +### /\/features/access_mode_get +#### Description This service reads the current access mode of the feature *feature_name* -### Request +#### Request | Name | Type | Description | |------|------|-------------| | feature_name | string | Name of the feature for getting the current access mode | -### Response +#### Response | Name | Type | Description | |------|------|-------------| @@ -140,146 +161,146 @@ This service reads the current access mode of the feature *feature_name* | is_writeable | bool | True if the feature can currently be written otherwise false | | error | [Error](#vimbax_camera_msgserror) | Result of the request | -## /\/features/bool_get -### Description +### /\/features/bool_get +#### Description Reads the current value of the bool feature *feature_name* -### Request +#### Request | Name | Type | Description | |------|------|-------------| | feature_name | string | Name of the feature | -### Response +#### Response | Name | Type | Description | |------|------|-------------| | value | bool | Current bool value of the feature | | error | [Error](#vimbax_camera_msgserror) | Result of the feature read | -## /\/features/bool_set -### Description +### /\/features/bool_set +#### Description Set the value of the bool feature *feature_name* to *value* -### Request +#### Request | Name | Type | Description | |------|------|-------------| | feature_name | string | Name of the feature | | value | bool | New feature value | -### Response +#### Response | Name | Type | Description | |------|------|-------------| | error | [Error](#vimbax_camera_msgserror) | Result of the feature write | -## /\/features/command_is_done -### Description +### /\/features/command_is_done +#### Description Check if the command feature *feature_name* has finished. -### Request +#### Request | Name | Type | Description | |------|------|-------------| | feature_name | string | Name fo the feature | -### Response +#### Response | Name | Type | Description | |------|------|-------------| | is_done | bool | True if the command feature execution has finished | | error | [Error](#vimbax_camera_msgserror) | Result of the operation | -## /\/features/command_run -### Description +### /\/features/command_run +#### Description Run the command feature *feature_name* and waits until it's done, so a call to is_done is not needed. -### Request +#### Request | Name | Type | Description | |------|------|-------------| | feature_name | string | Name fo the feature | -### Response +#### Response | Name | Type | Description | |------|------|-------------| | error | [Error](#vimbax_camera_msgserror) | Result of the feature execution | -## /\/features/enum_as_int_get -### Description +### /\/features/enum_as_int_get +#### Description Get the corresponding integer value for enum option *option* of feature *feature_name* -### Request +#### Request | Name | Type | Description | |------|------|-------------| | feature_name | string | Name of the feature | | option | string | Enum option | -### Response +#### Response | Name | Type | Description | |------|------|-------------| | value | int64 | Integer value of option | | error | [Error](#vimbax_camera_msgserror) | Result of the operation | -## /\/features/enum_as_string_get -### Description +### /\/features/enum_as_string_get +#### Description Get the enum string representation for the enum integer value *value* of the feature *feature_name* -### Request +#### Request | Name | Type | Description | |------|------|-------------| | feature_name | string | Name of the feature | | value | int64 | Integer value of the enum feature | -### Response +#### Response | Name | Type | Description | |------|------|-------------| | option | string | String representation of the enum value | | error | [Error](#vimbax_camera_msgserror) | Result of the operation | -## /\/features/enum_get -### Description +### /\/features/enum_get +#### Description Read the current option of the enum feature *feature_name* -### Request +#### Request | Name | Type | Description | |------|------|-------------| | feature_name | string | Name of the feature | -### Response +#### Response | Name | Type | Description | |------|------|-------------| | option | string | Current enum feature option | | error | [Error](#vimbax_camera_msgserror) | Result of the operation | -## /\/features/enum_info_get -### Description +### /\/features/enum_info_get +#### Description Get the type specific feature info the enum feature *feature_name*. -### Request +#### Request | Name | Type | Description | |------|------|-------------| | feature_name | string | Name of the feature | -### Response +#### Response | Name | Type | Description | |------|------|-------------| @@ -287,54 +308,54 @@ Get the type specific feature info the enum feature *feature_name*. | available_values | string[] | List of the currently available enum options | | error | [Error](#vimbax_camera_msgserror) | Result of the operation | -## /\/features/enum_set -### Description +### /\/features/enum_set +#### Description Sets the value of the enum feature *feature_name* to *value* -### Request +#### Request | Name | Type | Description | |------|------|-------------| | feature_name | string | Name of the enum feature to change | | value | string | Enum option to set | -### Response +#### Response | Name | Type | Description | |------|------|-------------| | error | [Error](#vimbax_camera_msgserror) | Result of the operation | -## /\/features/float_get -### Description +### /\/features/float_get +#### Description Reads the current value of the float feature *feature_name* -### Request +#### Request | Name | Type | Description | |------|------|-------------| | feature_name | string | Name of the float feature to read | -### Response +#### Response | Name | Type | Description | |------|------|-------------| | value | float64 | Current value of the float feature | | error | [Error](#vimbax_camera_msgserror) | Result of the operation | -## /\/features/float_info_get -### Description +### /\/features/float_info_get +#### Description Get the type specific feature information (limits) of the float feature *feature_name* -### Request +#### Request | Name | Type | Description | |------|------|-------------| | feature_name | string | Name of the float feature | -### Response +#### Response | Name | Type | Description | |------|------|-------------| @@ -344,54 +365,54 @@ Get the type specific feature information (limits) of the float feature *feature | inc_available | bool | True when the *inc* field contains a valid value otherwise false | | error | [Error](#vimbax_camera_msgserror) | Result of the operation | -## /\/features/float_set -### Description +### /\/features/float_set +#### Description Set the value of the float feature *feature_name* to *value* -### Request +#### Request | Name | Type | Description | |------|------|-------------| | feature_name | string | Name of the float feature to change | | value | float64 | New value of the float feature | -### Response +#### Response | Name | Type | Description | |------|------|-------------| | error | [Error](#vimbax_camera_msgserror) | Result of the operation | -## /\/features/int_get -### Description +### /\/features/int_get +#### Description Read the current value of the int feature *feature_name* -### Request +#### Request | Name | Type | Description | |------|------|-------------| | feature_name | string | Name of the int feature to read | -### Response +#### Response | Name | Type | Description | |------|------|-------------| | value | int64 | Current value of the int feature | | error | [Error](#vimbax_camera_msgserror) | Result of the operation | -## /\/features/int_info_get -### Description +### /\/features/int_info_get +#### Description Get the type specific feature information (limits) of the int feature *feature_name* -### Request +#### Request | Name | Type | Description | |------|------|-------------| | feature_name | string | Name of the int feature | -### Response +#### Response | Name | Type | Description | |------|------|-------------| @@ -400,53 +421,53 @@ Get the type specific feature information (limits) of the int feature *feature_n | inc | int64 | Increment of the feature | | error | [Error](#vimbax_camera_msgserror) | Result of the operation | -## /\/features/int_set -### Description +### /\/features/int_set +#### Description Set the value of the int feature *feature_name* to *value* -### Request +#### Request | Name | Type | Description | |------|------|-------------| | feature_name | string | Name of the int feature to change | | value | int64 | New value of the int feature | -### Response +#### Response | Name | Type | Description | |------|------|-------------| | error | [Error](#vimbax_camera_msgserror) | Result of the operation | -## /\/features/list_get -### Description +### /\/features/list_get +#### Description Get a list of all available feature names -### Request +#### Request | Name | Type | Description | |------|------|-------------| -### Response +#### Response | Name | Type | Description | |------|------|-------------| | feature_list | string[] | List containing all feature names of the camera | | error | [Error](#vimbax_camera_msgserror) | Result of the operation | -## /\/features/raw_get -### Description +### /\/features/raw_get +#### Description Get the data of the raw feature *feature_name* -### Request +#### Request | Name | Type | Description | |------|------|-------------| | feature_name | string | Name of the raw feature | -### Response +#### Response | Name | Type | Description | |------|------|-------------| @@ -454,145 +475,145 @@ Get the data of the raw feature *feature_name* | buffer_size | uint32 | Length of the feature data | | error | [Error](#vimbax_camera_msgserror) | Result of the operation | -## /\/features/raw_info_get -### Description +### /\/features/raw_info_get +#### Description Get the type specific feature information of the raw feature *feature_name* -### Request +#### Request | Name | Type | Description | |------|------|-------------| | feature_name | string | Name of the raw feature | -### Response +#### Response | Name | Type | Description | |------|------|-------------| | max_length | int64 | Maximum length of the raw feature data | | error | [Error](#vimbax_camera_msgserror) | Result of the operation | -## /\/features/raw_set -### Description +### /\/features/raw_set +#### Description Set the raw feature *feature_name* to the data in *buffer* -### Request +#### Request | Name | Type | Description | |------|------|-------------| | feature_name | string | Name of the raw feature to change | | buffer | byte[] | New data of the raw feature | -### Response +#### Response | Name | Type | Description | |------|------|-------------| | error | [Error](#vimbax_camera_msgserror) | Result of the operation | -## /\/features/string_get -### Description +### /\/features/string_get +#### Description Get the current value of the string feature *feature_name* -### Request +#### Request | Name | Type | Description | |------|------|-------------| | feature_name | string | Name of the string feature to read | -### Response +#### Response | Name | Type | Description | |------|------|-------------| | value | string | Current value of the string feature | | error | [Error](#vimbax_camera_msgserror) | Result of the operation | -## /\/features/string_info_get -### Description +### /\/features/string_info_get +#### Description Get the type specific feature info of the string feature *feature_name* -### Request +#### Request | Name | Type | Description | |------|------|-------------| | feature_name | string | Name of the string feature | -### Response +#### Response | Name | Type | Description | |------|------|-------------| | max_length | int64 | Maximum length of the string value | | error | [Error](#vimbax_camera_msgserror) | Result of the operation | -## /\/features/string_set -### Description +### /\/features/string_set +#### Description Set the string feature *feature_name* to *value* -### Request +#### Request | Name | Type | Description | |------|------|-------------| | feature_name | string | Name of the string feature to change | | value | string | New value of the string feature | -### Response +#### Response | Name | Type | Description | |------|------|-------------| | error | [Error](#vimbax_camera_msgserror) | Result of the operation | -## /\/settings/load -### Description +### /\/settings/load +#### Description Load the camera setting from the xml file *filename*. **The path to the settings file must point to an existing file system that the node runs on.** -### Request +#### Request | Name | Type | Description | |------|------|-------------| | filename | string | Path to the xml file to load | -### Response +#### Response | Name | Type | Description | |------|------|-------------| | error | [Error](#vimbax_camera_msgserror) | Result of the operation | -## /\/settings/save -### Description +### /\/settings/save +#### Description Save the camera setting to the xml file *filename*. **The path to the settings file must point to an existing directory system that the node runs on.** -### Request +#### Request | Name | Type | Description | |------|------|-------------| | filename | string | Path to the file where the settings should be saved. | -### Response +#### Response | Name | Type | Description | |------|------|-------------| | error | [Error](#vimbax_camera_msgserror) | Result of the operation | -## /\/status -### Description +### /\/status +#### Description Get status information of the connected camera. -### Request +#### Request | Name | Type | Description | |------|------|-------------| -### Response +#### Response | Name | Type | Description | |------|------|-------------| @@ -615,33 +636,33 @@ Get status information of the connected camera. | ip_address | string | IP address of the camera.
**Only valid for GigE vision cameras** | mac_address | string | MAC address of the camera.
**Only valid for GigE vision cameras** -## /\/stream_start -### Description +### /\/stream_start +#### Description Start the streaming of the camera. -### Request +#### Request | Name | Type | Description | |------|------|-------------| -### Response +#### Response | Name | Type | Description | |------|------|-------------| | error | [Error](#vimbax_camera_msgserror) | Result of the operation | -## /\/stream_stop -### Description +### /\/stream_stop +#### Description Stop the streaming of the camera. -### Request +#### Request | Name | Type | Description | |------|------|-------------| -### Response +#### Response | Name | Type | Description | |------|------|-------------| From e523a0283d784dccfa4fe3558e1e48ff2c75fa23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karsten=20H=C3=B6pke?= Date: Fri, 15 Mar 2024 09:58:17 +0100 Subject: [PATCH 03/19] Changes regarding autostart parameter --- README.md | 190 +++++++++++++++++++++++++++--------------------------- 1 file changed, 96 insertions(+), 94 deletions(-) diff --git a/README.md b/README.md index b221bed..58d0872 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Vimba X ROS 2 camera driver -## Compability +## Compability - ROS 2 humble - Nvidia Jetpack 5.x (arm64) - Ubuntu 22.04 (x86_64) @@ -12,18 +12,18 @@ ## Installation Download the debian package from the release page and install it using the following command: ``` -sudo apt-get install ros-humble-vimbax-camera-driver.deb +sudo apt-get install ros-humble-vimbax-camera-driver.deb ``` ## Build Instructions -1. Setup the ROS2 environment +1. Setup the ROS2 environment ```shell - source /opt/ros/humble/setup.bash + source /opt/ros/humble/setup.bash ``` 2. Initialize and update rosdep if not already done ```shell - rosdep init + rosdep init rosdep update ``` @@ -36,30 +36,30 @@ sudo apt-get install ros-humble-vimbax-camera-driver.deb 4. Clone this repository into the workspace ```shell git clone ... - ``` + ``` 5. Install dependencies ```shell cd ~/ros2_ws/ rosdep install --from-path src --ignore-src ``` - -6. Run the actual build + +6. Run the actual build ```shell cd ~/ros2_ws/ colcon build --cmake-args -DVMB_DIR= - ``` - The optional VMB_DIR cmake argument can be used to specify the path to the Vimba X installation + ``` + The optional VMB_DIR cmake argument can be used to specify the path to the Vimba X installation that used for testing. 7. Run unit tests (optional) ```shell colcon test - ``` + ``` 8. Print test results (optional) ```shell colcon test-result --verbose - ``` + ``` ## Debug Instructions (VSCode) * Install ROS extension (from Microsoft) within VSCode @@ -67,48 +67,50 @@ sudo apt-get install ros-humble-vimbax-camera-driver.deb * Search and execute "ROS: Start" * Search and execute "ROS: Update C++ properties" * Type CTRL-SHIFT-b and select "colcon" to build the project -* Type CTRL-SHIFT-d and select "ROS: Lauch" to start debug session +* Type CTRL-SHIFT-d and select "ROS: Launch" to start debug session -## Automatic stream start +## Automatic stream -The streaming automatically start if a node subscribes to the *image_raw* or any other image -topic of the camera node. The automatic stream start can be enabled and disable using the -*autostart* parameter. +The streaming automatically starts if a node subscribes to the *image_raw* or any other image +topic of the camera node. The streaming automatically stops if a node unsubscribes from the +*image_raw* or any other image topic of the camera node. +The automatic stream start/stop can be enabled and disabled using the +*autostream* parameter. -## GenICam events +## GenICam events GenICam events and feature invalidations can be used using the vimbax_camera_events package. For more details please look into the events examples in the vimbax_camera_examples package. -## Parameters +## Parameters | Name | Description | |------|-------------| | camera_id | Id of camera to open. Can be the device id, extended device id, serial number, ip or mac address. | | settings_file | Path to xml settings file to load on startup.
**The file must point to a valid file on system that the node runs on.** | | buffer_count | Number of buffers used for streaming.
**Can't be change during streaming.** | -| autostart | When true the [automatic stream start](#automatic-stream-start) is enabled. | +| autostream | When true the [automatic stream](#automatic-stream) is enabled. | | camera_frame_id | ROS 2 frame id of the camera. | | camera_info_url | Url to ROS 2 camera info file. | ## Common message types -### vimbax_camera_msgs/Error +### vimbax_camera_msgs/Error | Name | Type | Description | |------|------|-------------| | code | int32 | Error code of the operation.
0 on success. | -| text | string | Error code as a string.
Only valid if the *code* is not 0. | +| text | string | Error code as a string.
Only valid if the *code* is not 0. | ### vimbax_camera_msgs/FeatureFlags | Name | Type | Description | |------|------|-------------| | flag_none | bool | No additional information is provided | -| flag_read | bool | Static info about read access. Current status depends on access mode, check with the [access_mode_get](#camera-node-nsfeaturesaccess_mode_get) service | +| flag_read | bool | Static info about read access. Current status depends on access mode, check with the [access_mode_get](#camera-node-nsfeaturesaccess_mode_get) service | | flag_write | bool | Static info about write access. Current status depends on access mode, check with the [access_mode_get](#camera-node-nsfeaturesaccess_mode_get) service | -| flag_volatile | bool | Value may change at any time | -| flag_modify_write | bool | Value may change after a write | +| flag_volatile | bool | Value may change at any time | +| flag_modify_write | bool | Value may change after a write | -### vimbax_camera_msgs/FeatureInfo +### vimbax_camera_msgs/FeatureInfo | Name | Type | Description | |------|------|-------------| | name | string | Name of the feature. | @@ -118,14 +120,14 @@ GenICam events and feature invalidations can be used using the vimbax_camera_eve | unit | string | Unit of the feature. | | data_type | uint32 | Feature data type:
0: Unknown
1: Int
2: Float
3: Enum
4: String
5: Bool
6: Command
7: Raw
8: None | | flags | [FeatureFlags](#vimbax_camera_msgsfeatureflags) | Access flags for this feature | -| polling_time | uint32 | Predefined polling time for volatile features | +| polling_time | uint32 | Predefined polling time for volatile features | -## Available services +## Available services -### /\/feature_info_query +### /\/feature_info_query #### Description -Query the feature information for the features given in *feature_names*. If the *feature_names* +Query the feature information for the features given in *feature_names*. If the *feature_names* is empty, then the information for all features will be returned. @@ -151,14 +153,14 @@ This service reads the current access mode of the feature *feature_name* | Name | Type | Description | |------|------|-------------| -| feature_name | string | Name of the feature for getting the current access mode | +| feature_name | string | Name of the feature for getting the current access mode | #### Response | Name | Type | Description | |------|------|-------------| -| is_readable | bool | True if the feature can currently be read otherwise false | -| is_writeable | bool | True if the feature can currently be written otherwise false | +| is_readable | bool | True if the feature can currently be read otherwise false | +| is_writeable | bool | True if the feature can currently be written otherwise false | | error | [Error](#vimbax_camera_msgserror) | Result of the request | ### /\/features/bool_get @@ -177,9 +179,9 @@ Reads the current value of the bool feature *feature_name* | Name | Type | Description | |------|------|-------------| | value | bool | Current bool value of the feature | -| error | [Error](#vimbax_camera_msgserror) | Result of the feature read | +| error | [Error](#vimbax_camera_msgserror) | Result of the feature read | -### /\/features/bool_set +### /\/features/bool_set #### Description Set the value of the bool feature *feature_name* to *value* @@ -195,9 +197,9 @@ Set the value of the bool feature *feature_name* to *value* | Name | Type | Description | |------|------|-------------| -| error | [Error](#vimbax_camera_msgserror) | Result of the feature write | +| error | [Error](#vimbax_camera_msgserror) | Result of the feature write | -### /\/features/command_is_done +### /\/features/command_is_done #### Description Check if the command feature *feature_name* has finished. @@ -213,12 +215,12 @@ Check if the command feature *feature_name* has finished. | Name | Type | Description | |------|------|-------------| | is_done | bool | True if the command feature execution has finished | -| error | [Error](#vimbax_camera_msgserror) | Result of the operation | +| error | [Error](#vimbax_camera_msgserror) | Result of the operation | -### /\/features/command_run +### /\/features/command_run #### Description -Run the command feature *feature_name* and waits until it's done, so a call to is_done is not needed. +Run the command feature *feature_name* and waits until it's done, so a call to is_done is not needed. #### Request @@ -231,9 +233,9 @@ Run the command feature *feature_name* and waits until it's done, so a call to i | Name | Type | Description | |------|------|-------------| -| error | [Error](#vimbax_camera_msgserror) | Result of the feature execution | +| error | [Error](#vimbax_camera_msgserror) | Result of the feature execution | -### /\/features/enum_as_int_get +### /\/features/enum_as_int_get #### Description Get the corresponding integer value for enum option *option* of feature *feature_name* @@ -250,12 +252,12 @@ Get the corresponding integer value for enum option *option* of feature *feature | Name | Type | Description | |------|------|-------------| | value | int64 | Integer value of option | -| error | [Error](#vimbax_camera_msgserror) | Result of the operation | +| error | [Error](#vimbax_camera_msgserror) | Result of the operation | -### /\/features/enum_as_string_get +### /\/features/enum_as_string_get #### Description -Get the enum string representation for the enum integer value *value* of the feature *feature_name* +Get the enum string representation for the enum integer value *value* of the feature *feature_name* #### Request @@ -269,9 +271,9 @@ Get the enum string representation for the enum integer value *value* of the fea | Name | Type | Description | |------|------|-------------| | option | string | String representation of the enum value | -| error | [Error](#vimbax_camera_msgserror) | Result of the operation | +| error | [Error](#vimbax_camera_msgserror) | Result of the operation | -### /\/features/enum_get +### /\/features/enum_get #### Description Read the current option of the enum feature *feature_name* @@ -287,12 +289,12 @@ Read the current option of the enum feature *feature_name* | Name | Type | Description | |------|------|-------------| | option | string | Current enum feature option | -| error | [Error](#vimbax_camera_msgserror) | Result of the operation | +| error | [Error](#vimbax_camera_msgserror) | Result of the operation | -### /\/features/enum_info_get +### /\/features/enum_info_get #### Description -Get the type specific feature info the enum feature *feature_name*. +Get the type specific feature info the enum feature *feature_name*. #### Request @@ -306,9 +308,9 @@ Get the type specific feature info the enum feature *feature_name*. |------|------|-------------| | possible_values | string[] | List of all exsiting enum options | | available_values | string[] | List of the currently available enum options | -| error | [Error](#vimbax_camera_msgserror) | Result of the operation | +| error | [Error](#vimbax_camera_msgserror) | Result of the operation | -### /\/features/enum_set +### /\/features/enum_set #### Description Sets the value of the enum feature *feature_name* to *value* @@ -324,9 +326,9 @@ Sets the value of the enum feature *feature_name* to *value* | Name | Type | Description | |------|------|-------------| -| error | [Error](#vimbax_camera_msgserror) | Result of the operation | +| error | [Error](#vimbax_camera_msgserror) | Result of the operation | -### /\/features/float_get +### /\/features/float_get #### Description Reads the current value of the float feature *feature_name* @@ -342,9 +344,9 @@ Reads the current value of the float feature *feature_name* | Name | Type | Description | |------|------|-------------| | value | float64 | Current value of the float feature | -| error | [Error](#vimbax_camera_msgserror) | Result of the operation | +| error | [Error](#vimbax_camera_msgserror) | Result of the operation | -### /\/features/float_info_get +### /\/features/float_info_get #### Description Get the type specific feature information (limits) of the float feature *feature_name* @@ -363,9 +365,9 @@ Get the type specific feature information (limits) of the float feature *feature | max | float64 | Maximum value of the feature | | inc | float64 | Increment of the feature | | inc_available | bool | True when the *inc* field contains a valid value otherwise false | -| error | [Error](#vimbax_camera_msgserror) | Result of the operation | +| error | [Error](#vimbax_camera_msgserror) | Result of the operation | -### /\/features/float_set +### /\/features/float_set #### Description Set the value of the float feature *feature_name* to *value* @@ -381,9 +383,9 @@ Set the value of the float feature *feature_name* to *value* | Name | Type | Description | |------|------|-------------| -| error | [Error](#vimbax_camera_msgserror) | Result of the operation | +| error | [Error](#vimbax_camera_msgserror) | Result of the operation | -### /\/features/int_get +### /\/features/int_get #### Description Read the current value of the int feature *feature_name* @@ -399,9 +401,9 @@ Read the current value of the int feature *feature_name* | Name | Type | Description | |------|------|-------------| | value | int64 | Current value of the int feature | -| error | [Error](#vimbax_camera_msgserror) | Result of the operation | +| error | [Error](#vimbax_camera_msgserror) | Result of the operation | -### /\/features/int_info_get +### /\/features/int_info_get #### Description Get the type specific feature information (limits) of the int feature *feature_name* @@ -419,9 +421,9 @@ Get the type specific feature information (limits) of the int feature *feature_n | min | int64 | Minimum feature value | | max | int64 | Maximum feature value | | inc | int64 | Increment of the feature | -| error | [Error](#vimbax_camera_msgserror) | Result of the operation | +| error | [Error](#vimbax_camera_msgserror) | Result of the operation | -### /\/features/int_set +### /\/features/int_set #### Description Set the value of the int feature *feature_name* to *value* @@ -437,9 +439,9 @@ Set the value of the int feature *feature_name* to *value* | Name | Type | Description | |------|------|-------------| -| error | [Error](#vimbax_camera_msgserror) | Result of the operation | +| error | [Error](#vimbax_camera_msgserror) | Result of the operation | -### /\/features/list_get +### /\/features/list_get #### Description Get a list of all available feature names @@ -454,9 +456,9 @@ Get a list of all available feature names | Name | Type | Description | |------|------|-------------| | feature_list | string[] | List containing all feature names of the camera | -| error | [Error](#vimbax_camera_msgserror) | Result of the operation | +| error | [Error](#vimbax_camera_msgserror) | Result of the operation | -### /\/features/raw_get +### /\/features/raw_get #### Description Get the data of the raw feature *feature_name* @@ -473,9 +475,9 @@ Get the data of the raw feature *feature_name* |------|------|-------------| | buffer | byte[] | Contains the data of the raw feature | | buffer_size | uint32 | Length of the feature data | -| error | [Error](#vimbax_camera_msgserror) | Result of the operation | +| error | [Error](#vimbax_camera_msgserror) | Result of the operation | -### /\/features/raw_info_get +### /\/features/raw_info_get #### Description Get the type specific feature information of the raw feature *feature_name* @@ -491,9 +493,9 @@ Get the type specific feature information of the raw feature *feature_name* | Name | Type | Description | |------|------|-------------| | max_length | int64 | Maximum length of the raw feature data | -| error | [Error](#vimbax_camera_msgserror) | Result of the operation | +| error | [Error](#vimbax_camera_msgserror) | Result of the operation | -### /\/features/raw_set +### /\/features/raw_set #### Description Set the raw feature *feature_name* to the data in *buffer* @@ -509,9 +511,9 @@ Set the raw feature *feature_name* to the data in *buffer* | Name | Type | Description | |------|------|-------------| -| error | [Error](#vimbax_camera_msgserror) | Result of the operation | +| error | [Error](#vimbax_camera_msgserror) | Result of the operation | -### /\/features/string_get +### /\/features/string_get #### Description Get the current value of the string feature *feature_name* @@ -527,9 +529,9 @@ Get the current value of the string feature *feature_name* | Name | Type | Description | |------|------|-------------| | value | string | Current value of the string feature | -| error | [Error](#vimbax_camera_msgserror) | Result of the operation | +| error | [Error](#vimbax_camera_msgserror) | Result of the operation | -### /\/features/string_info_get +### /\/features/string_info_get #### Description Get the type specific feature info of the string feature *feature_name* @@ -545,9 +547,9 @@ Get the type specific feature info of the string feature *feature_name* | Name | Type | Description | |------|------|-------------| | max_length | int64 | Maximum length of the string value | -| error | [Error](#vimbax_camera_msgserror) | Result of the operation | +| error | [Error](#vimbax_camera_msgserror) | Result of the operation | -### /\/features/string_set +### /\/features/string_set #### Description Set the string feature *feature_name* to *value* @@ -563,14 +565,14 @@ Set the string feature *feature_name* to *value* | Name | Type | Description | |------|------|-------------| -| error | [Error](#vimbax_camera_msgserror) | Result of the operation | +| error | [Error](#vimbax_camera_msgserror) | Result of the operation | -### /\/settings/load +### /\/settings/load #### Description -Load the camera setting from the xml file *filename*. +Load the camera setting from the xml file *filename*. -**The path to the settings file must point to an existing file system that the node runs on.** +**The path to the settings file must point to an existing file system that the node runs on.** #### Request @@ -582,14 +584,14 @@ Load the camera setting from the xml file *filename*. | Name | Type | Description | |------|------|-------------| -| error | [Error](#vimbax_camera_msgserror) | Result of the operation | +| error | [Error](#vimbax_camera_msgserror) | Result of the operation | -### /\/settings/save +### /\/settings/save #### Description -Save the camera setting to the xml file *filename*. +Save the camera setting to the xml file *filename*. -**The path to the settings file must point to an existing directory system that the node runs on.** +**The path to the settings file must point to an existing directory system that the node runs on.** #### Request @@ -601,9 +603,9 @@ Save the camera setting to the xml file *filename*. | Name | Type | Description | |------|------|-------------| -| error | [Error](#vimbax_camera_msgserror) | Result of the operation | +| error | [Error](#vimbax_camera_msgserror) | Result of the operation | -### /\/status +### /\/status #### Description Get status information of the connected camera. @@ -617,13 +619,13 @@ Get status information of the connected camera. | Name | Type | Description | |------|------|-------------| -| error | [Error](#vimbax_camera_msgserror) | Result of the operation | +| error | [Error](#vimbax_camera_msgserror) | Result of the operation | | display_name | string | Display name of the camera | | model_name | string | Model name of the camera | | device_firmware_version | string | Firmware version of the camera | | device_id | string | Device id of the camera. Corresponds to the camera feature "DeviceFirmwareVersion". | -| device_user_id | string | Device user id of the camera. Corresponds to the camera feature "DeviceUserID". | -| device_serial_number | string | Serial number of the camera | +| device_user_id | string | Device user id of the camera. Corresponds to the camera feature "DeviceUserID". | +| device_serial_number | string | Serial number of the camera | | interface_id | string | Id of the GenTL interface module | | transport_layer_id | string | Id of the GenTL transport layer module | | streaming | bool | True if the camera is currently streaming otherwise false | @@ -636,7 +638,7 @@ Get status information of the connected camera. | ip_address | string | IP address of the camera.
**Only valid for GigE vision cameras** | mac_address | string | MAC address of the camera.
**Only valid for GigE vision cameras** -### /\/stream_start +### /\/stream_start #### Description Start the streaming of the camera. @@ -650,7 +652,7 @@ Start the streaming of the camera. | Name | Type | Description | |------|------|-------------| -| error | [Error](#vimbax_camera_msgserror) | Result of the operation | +| error | [Error](#vimbax_camera_msgserror) | Result of the operation | ### /\/stream_stop #### Description @@ -666,4 +668,4 @@ Stop the streaming of the camera. | Name | Type | Description | |------|------|-------------| -| error | [Error](#vimbax_camera_msgserror) | Result of the operation | +| error | [Error](#vimbax_camera_msgserror) | Result of the operation | From c1b257b5a82a56edce348e10ec4c4e1fd9914f37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karsten=20H=C3=B6pke?= Date: Fri, 15 Mar 2024 11:29:57 +0100 Subject: [PATCH 04/19] Added beta disclaimer. Added pixl format list. Added Getting started section. Added trouble shooting section. --- README.md | 66 +++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 57 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 58d0872..632fddf 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,28 @@ # Vimba X ROS 2 camera driver +## Beta Disclaimer + +Please be aware that all code revisions not explicitly listed in the Github Release section are +considered a **Beta Version**. + +For Beta Versions, the following applies in addition to the GPLv2 License: + +THE SOFTWARE IS PRELIMINARY AND STILL IN TESTING AND VERIFICATION PHASE AND IS PROVIDED ON AN “AS +IS” AND “AS AVAILABLE” BASIS AND IS BELIEVED TO CONTAIN DEFECTS. THE PRIMARY PURPOSE OF THIS EARLY +ACCESS IS TO OBTAIN FEEDBACK ON PERFORMANCE AND THE IDENTIFICATION OF DEFECTS IN THE SOFTWARE, +HARDWARE AND DOCUMENTATION. + ## Compability - ROS 2 humble - Nvidia Jetpack 5.x (arm64) - Ubuntu 22.04 (x86_64) +- All cameras supported by Vimba X ## Prerequisites - ROS 2 humble is installed on the system as defined by the [ROS 2 installation instructions](https://docs.ros.org/en/humble/Installation.html) - For running the system tests make sure the package "ros-humble-launch-pytests" is installed on your system. +- [Vimba X 2023-4](https://www.alliedvision.com/en/products/software/vimba-x-sdk/) or later +- For CSI cameras make sure to install the drivers available on [github](https://github.com/alliedvision/linux_nvidia_jetson) ## Installation Download the debian package from the release page and install it using the following command: @@ -43,13 +58,13 @@ sudo apt-get install ros-humble-vimbax-camera-driver.deb rosdep install --from-path src --ignore-src ``` -6. Run the actual build +6. Run the build ```shell cd ~/ros2_ws/ colcon build --cmake-args -DVMB_DIR= ``` The optional VMB_DIR cmake argument can be used to specify the path to the Vimba X installation - that used for testing. + used for testing. 7. Run unit tests (optional) ```shell @@ -61,13 +76,32 @@ sudo apt-get install ros-humble-vimbax-camera-driver.deb colcon test-result --verbose ``` -## Debug Instructions (VSCode) -* Install ROS extension (from Microsoft) within VSCode -* Type CTRL-SHIFT-p to open the command palette -* Search and execute "ROS: Start" -* Search and execute "ROS: Update C++ properties" -* Type CTRL-SHIFT-b and select "colcon" to build the project -* Type CTRL-SHIFT-d and select "ROS: Launch" to start debug session +## Getting started +[TODO] How to run an example + + + +## Supported pixel formats +The following PFNC pixel formats are supported: +- Mono8 +- Mono12/16 +- BGR8 +- RGB8 +- BayerBG8 +- BayerGB8 +- BayerRG8 +- BayerGR8 +- BayerRG10/12 +- BayerBG10/12 +- BayerGB10/12 +- BayerGR10/12 +- BayerRG16 +- BayerBG16 +- BayerGB16 +- BayerGR16 +- YCBCR422_8 + +If a pixel format is used that is not supported the stream will not start. ## Automatic stream @@ -669,3 +703,17 @@ Stop the streaming of the camera. | Name | Type | Description | |------|------|-------------| | error | [Error](#vimbax_camera_msgserror) | Result of the operation | + +## Troubleshooting +- [TODO] Finding and listing cameras +- [TODO] Camera opened by different application + +## Debug Instructions (VS Code) +* Install ROS extension (from Microsoft) within VS Code +* Type CTRL-SHIFT-p to open the command palette +* Search and execute "ROS: Start" +* Search and execute "ROS: Update C++ properties" +* Type CTRL-SHIFT-b and select "colcon" to build the project +* Type CTRL-SHIFT-d and select "ROS: Launch" to start debug session + + From 4a9080e26e2b351b191087914294229e4701ed1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karsten=20H=C3=B6pke?= Date: Fri, 15 Mar 2024 11:55:07 +0100 Subject: [PATCH 05/19] Added section for camera disconnect/reconnect --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index 632fddf..a008665 100644 --- a/README.md +++ b/README.md @@ -115,6 +115,13 @@ The automatic stream start/stop can be enabled and disabled using the GenICam events and feature invalidations can be used using the vimbax_camera_events package. For more details please look into the events examples in the vimbax_camera_examples package. +## Camera disconnect and reconnect + +If a camera (GigE or USB) is disconnected while the camera node is already runnig, the node +will wait for the camera to reappear and then reconnect to the camera. If the camera was streaming +while it is disconnected, the stream will be restarted after the camera is reconnected. +Only if [automatic stream](#automatic-stream) is enabled. + ## Parameters | Name | Description | From 7ccace6a48c3acf752354b79f3d0e696c1b51611 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karsten=20H=C3=B6pke?= Date: Fri, 15 Mar 2024 12:32:49 +0100 Subject: [PATCH 06/19] Added documentation for new command_feature_timeout parameter --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index a008665..0d94d66 100644 --- a/README.md +++ b/README.md @@ -132,6 +132,7 @@ Only if [automatic stream](#automatic-stream) is enabled. | autostream | When true the [automatic stream](#automatic-stream) is enabled. | | camera_frame_id | ROS 2 frame id of the camera. | | camera_info_url | Url to ROS 2 camera info file. | +| command_feature_timeout | Timeout for command features. | ## Common message types From 623fd05e1e6ec533739250c79ff6ec1aeb1914df Mon Sep 17 00:00:00 2001 From: Dennis Langenkamp Date: Fri, 15 Mar 2024 12:56:41 +0100 Subject: [PATCH 07/19] Added getting started to README --- README.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/README.md b/README.md index 58d0872..e443191 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,30 @@ Download the debian package from the release page and install it using the follo sudo apt-get install ros-humble-vimbax-camera-driver.deb ``` +## Getting started + +Setup the ROS 2 environment: +```shell +source /opt/ros/humble/setup.bash +``` + +To start the Vimba X ROS 2 node run: +```shell +ros2 run vimbax_camera vimbax_camera_node +``` +By default the Vimba X ROS 2 node will open the first available camera. If you want to open a specific camera, you can use *camera_id* parameter by adding `--ros-args -p camera_id:=`. The *camera_id* can be the device id, extended device id, serial number, ip address or mac address. +The node will publish all topics and service under the namespace `vimbax_camera_`, where `pid` +is the process id of the camera node process. + +An example can be start by running: +```shell +ros2 run vimbax_camera_examples +``` +The following examples are available: +- asynchronous_grab: Stream images from the camera node and print image info to console. +- asynchronous_grab_opencv: Stream images from the camera node and display them using opencv imshow. +- event_viewer: View + ## Build Instructions 1. Setup the ROS2 environment ```shell From 1c9f99bc26f5b65d287fb535569eae1ac4b42fdd Mon Sep 17 00:00:00 2001 From: Dennis Langenkamp Date: Fri, 15 Mar 2024 13:08:06 +0100 Subject: [PATCH 08/19] Updated getting started and troubleshooting sections of the README - The getting started section now describes the behavior if a camera can't be opened - Added "Finding and listing cameras" section to troubleshooting - Fixed some typos --- README.md | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index ebb7d90..1f2b4f4 100644 --- a/README.md +++ b/README.md @@ -41,7 +41,8 @@ To start the Vimba X ROS 2 node run: ```shell ros2 run vimbax_camera vimbax_camera_node ``` -By default the Vimba X ROS 2 node will open the first available camera. If you want to open a specific camera, you can use *camera_id* parameter by adding `--ros-args -p camera_id:=`. The *camera_id* can be the device id, extended device id, serial number, ip address or mac address. +By default the Vimba X ROS 2 node will open the first available camera. If you want to open a specific camera, you can use *camera_id* parameter by adding `--ros-args -p camera_id:=`. The *camera_id* can be the device id, extended device id, serial number, ip address or mac address. The +node will always open the camera exclusive access mode. If the no camera is available or the specified camera is opened by another application, the node startup fails and an error message is printed. The node will publish all topics and service under the namespace `vimbax_camera_`, where `pid` is the process id of the camera node process. @@ -100,11 +101,6 @@ The following examples are available: colcon test-result --verbose ``` -## Getting started -[TODO] How to run an example - - - ## Supported pixel formats The following PFNC pixel formats are supported: - Mono8 @@ -141,7 +137,7 @@ GenICam events and feature invalidations can be used using the vimbax_camera_eve ## Camera disconnect and reconnect -If a camera (GigE or USB) is disconnected while the camera node is already runnig, the node +If a camera (GigE or USB) is disconnected while the camera node is already running, the node will wait for the camera to reappear and then reconnect to the camera. If the camera was streaming while it is disconnected, the stream will be restarted after the camera is reconnected. Only if [automatic stream](#automatic-stream) is enabled. @@ -372,7 +368,7 @@ Get the type specific feature info the enum feature *feature_name*. | Name | Type | Description | |------|------|-------------| -| possible_values | string[] | List of all exsiting enum options | +| possible_values | string[] | List of all existing enum options | | available_values | string[] | List of the currently available enum options | | error | [Error](#vimbax_camera_msgserror) | Result of the operation | @@ -737,10 +733,13 @@ Stop the streaming of the camera. | error | [Error](#vimbax_camera_msgserror) | Result of the operation | ## Troubleshooting -- [TODO] Finding and listing cameras -- [TODO] Camera opened by different application -## Debug Instructions (VS Code) +### Finding and listing cameras +For listing all available cameras please use the [list cameras example](https://docs.alliedvision.com/Vimba_X/Vimba_X_DeveloperGuide/examplesOverview.html#list-cameras) from Vimba X SDK installation. +After running the example use can use the printed `Camera Id` or `Serial Number` as *camera_id* +parameter for opening a specific camera. + +### Debug Instructions (VS Code) * Install ROS extension (from Microsoft) within VS Code * Type CTRL-SHIFT-p to open the command palette * Search and execute "ROS: Start" From c1fbb6452378d12c11cfd9137eabd1eda18b4db0 Mon Sep 17 00:00:00 2001 From: Dennis Langenkamp Date: Mon, 18 Mar 2024 08:27:38 +0100 Subject: [PATCH 09/19] Added missing examples to list in README --- README.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 1f2b4f4..555e9c1 100644 --- a/README.md +++ b/README.md @@ -53,7 +53,14 @@ ros2 run vimbax_camera_examples The following examples are available: - asynchronous_grab: Stream images from the camera node and print image info to console. - asynchronous_grab_opencv: Stream images from the camera node and display them using opencv imshow. -- event_viewer: View +- event_viewer: Show GenICam events on the console. +- feature_command_execute: How to run a command feature. +- feature_get: How to get a feature value. +- feature_info_get: How to get the type specific feature information. +- feature_set: Change the value of a feature. +- list_feature: How to list all available features. +- settings_load_save: Load or save the camera settings to a xml file. +- status_get: How to use the status service to get the current camera status. ## Build Instructions 1. Setup the ROS2 environment From 954f5ed43b4a020a5d5992653093800e51bfc4b4 Mon Sep 17 00:00:00 2001 From: "Dennis Langenkamp [Allied Vision]" Date: Mon, 18 Mar 2024 11:13:14 +0100 Subject: [PATCH 10/19] Fixed issues found in review --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 555e9c1..d6a4c3c 100644 --- a/README.md +++ b/README.md @@ -128,7 +128,7 @@ The following PFNC pixel formats are supported: - BayerGR16 - YCBCR422_8 -If a pixel format is used that is not supported the stream will not start. +If an unsupported pixel format is used the stream will not start. ## Automatic stream @@ -145,7 +145,7 @@ GenICam events and feature invalidations can be used using the vimbax_camera_eve ## Camera disconnect and reconnect If a camera (GigE or USB) is disconnected while the camera node is already running, the node -will wait for the camera to reappear and then reconnect to the camera. If the camera was streaming +will wait for the camera to reappear and then reconnect to it. If the camera was streaming while it is disconnected, the stream will be restarted after the camera is reconnected. Only if [automatic stream](#automatic-stream) is enabled. @@ -289,7 +289,7 @@ Check if the command feature *feature_name* has finished. ### /\/features/command_run #### Description -Run the command feature *feature_name* and waits until it's done, so a call to is_done is not needed. +Run the command feature *feature_name* and wait until it's done, so a call to is_done is not needed. #### Request @@ -363,7 +363,7 @@ Read the current option of the enum feature *feature_name* ### /\/features/enum_info_get #### Description -Get the type specific feature info the enum feature *feature_name*. +Get the type specific feature info of the enum feature *feature_name*. #### Request @@ -701,7 +701,7 @@ Get status information of the connected camera. | width | uint32 | Currently set width of the image. Equals the value of the camera feature "Width" | | height | uint32 | Currently set height of the image. Equals the value of the camera feature "Height" | | frame_rate | float64 | Currently set frame rate of the camera | -| pixel_format | string | Currently set pixelformat. Equals the camera feature "PixelFormat" | +| pixel_format | string | Currently set pixel format. Equals the camera feature "PixelFormat" | | trigger_mode | string | Current trigger mode | | trigger_source | string | Current trigger source | | ip_address | string | IP address of the camera.
**Only valid for GigE vision cameras** @@ -743,7 +743,7 @@ Stop the streaming of the camera. ### Finding and listing cameras For listing all available cameras please use the [list cameras example](https://docs.alliedvision.com/Vimba_X/Vimba_X_DeveloperGuide/examplesOverview.html#list-cameras) from Vimba X SDK installation. -After running the example use can use the printed `Camera Id` or `Serial Number` as *camera_id* +After running the example you can use the printed `Camera Id` or `Serial Number` as *camera_id* parameter for opening a specific camera. ### Debug Instructions (VS Code) From 68ffa9fd21c0a8ff6c4fc98630d39da00afbfda6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karsten=20H=C3=B6pke?= Date: Tue, 19 Mar 2024 09:12:29 +0100 Subject: [PATCH 11/19] Fixed install command line --- README.md | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index d6a4c3c..da3827d 100644 --- a/README.md +++ b/README.md @@ -27,10 +27,10 @@ HARDWARE AND DOCUMENTATION. ## Installation Download the debian package from the release page and install it using the following command: ``` -sudo apt-get install ros-humble-vimbax-camera-driver.deb +sudo apt install ./ros-humble-vimbax-camera-driver.deb ``` -## Getting started +## Getting started Setup the ROS 2 environment: ```shell @@ -39,11 +39,11 @@ source /opt/ros/humble/setup.bash To start the Vimba X ROS 2 node run: ```shell -ros2 run vimbax_camera vimbax_camera_node +ros2 run vimbax_camera vimbax_camera_node ``` By default the Vimba X ROS 2 node will open the first available camera. If you want to open a specific camera, you can use *camera_id* parameter by adding `--ros-args -p camera_id:=`. The *camera_id* can be the device id, extended device id, serial number, ip address or mac address. The -node will always open the camera exclusive access mode. If the no camera is available or the specified camera is opened by another application, the node startup fails and an error message is printed. -The node will publish all topics and service under the namespace `vimbax_camera_`, where `pid` +node will always open the camera exclusive access mode. If the no camera is available or the specified camera is opened by another application, the node startup fails and an error message is printed. +The node will publish all topics and service under the namespace `vimbax_camera_`, where `pid` is the process id of the camera node process. An example can be start by running: @@ -55,12 +55,13 @@ The following examples are available: - asynchronous_grab_opencv: Stream images from the camera node and display them using opencv imshow. - event_viewer: Show GenICam events on the console. - feature_command_execute: How to run a command feature. -- feature_get: How to get a feature value. +- feature_get: How to get a feature value. - feature_info_get: How to get the type specific feature information. - feature_set: Change the value of a feature. - list_feature: How to list all available features. - settings_load_save: Load or save the camera settings to a xml file. - status_get: How to use the status service to get the current camera status. +- event_viewer: View ## Build Instructions 1. Setup the ROS2 environment @@ -743,8 +744,8 @@ Stop the streaming of the camera. ### Finding and listing cameras For listing all available cameras please use the [list cameras example](https://docs.alliedvision.com/Vimba_X/Vimba_X_DeveloperGuide/examplesOverview.html#list-cameras) from Vimba X SDK installation. -After running the example you can use the printed `Camera Id` or `Serial Number` as *camera_id* -parameter for opening a specific camera. +After running the example you can use the printed `Camera Id` or `Serial Number` as *camera_id* +parameter for opening a specific camera. ### Debug Instructions (VS Code) * Install ROS extension (from Microsoft) within VS Code From 4b1596e9208d2539869486e455dd96e5b9ba5ad1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karsten=20H=C3=B6pke?= Date: Tue, 19 Mar 2024 09:44:57 +0100 Subject: [PATCH 12/19] Fixed merge error --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index da3827d..acda7a2 100644 --- a/README.md +++ b/README.md @@ -61,7 +61,6 @@ The following examples are available: - list_feature: How to list all available features. - settings_load_save: Load or save the camera settings to a xml file. - status_get: How to use the status service to get the current camera status. -- event_viewer: View ## Build Instructions 1. Setup the ROS2 environment From e5583f5b963ad4d473dab254a33725d83a4ddd1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karsten=20H=C3=B6pke?= Date: Tue, 19 Mar 2024 10:24:12 +0100 Subject: [PATCH 13/19] Added troubleshooting info regarding missing camera calibration file error message. --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index acda7a2..999e588 100644 --- a/README.md +++ b/README.md @@ -746,6 +746,10 @@ For listing all available cameras please use the [list cameras example](https:// After running the example you can use the printed `Camera Id` or `Serial Number` as *camera_id* parameter for opening a specific camera. +### Camera calibration +If an error message regarding a missing camera calibration file appears it can be ignored. +For more information see [ROS2 camera calibration documentation](https://docs.ros.org/en/rolling/p/camera_calibration/tutorial_mono.html). + ### Debug Instructions (VS Code) * Install ROS extension (from Microsoft) within VS Code * Type CTRL-SHIFT-p to open the command palette From d132749b0282718edf617df06db1aab8b66ddc5b Mon Sep 17 00:00:00 2001 From: Dennis Langenkamp Date: Wed, 20 Mar 2024 13:23:56 +0100 Subject: [PATCH 14/19] Fixed typos in README --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 999e588..013a08f 100644 --- a/README.md +++ b/README.md @@ -42,11 +42,11 @@ To start the Vimba X ROS 2 node run: ros2 run vimbax_camera vimbax_camera_node ``` By default the Vimba X ROS 2 node will open the first available camera. If you want to open a specific camera, you can use *camera_id* parameter by adding `--ros-args -p camera_id:=`. The *camera_id* can be the device id, extended device id, serial number, ip address or mac address. The -node will always open the camera exclusive access mode. If the no camera is available or the specified camera is opened by another application, the node startup fails and an error message is printed. +node will always open the camera in exclusive access mode. If no camera is available or the specified camera was opened by another application, the node startup fails and an error message is printed. The node will publish all topics and service under the namespace `vimbax_camera_`, where `pid` is the process id of the camera node process. -An example can be start by running: +An example can be started by running: ```shell ros2 run vimbax_camera_examples ``` @@ -59,7 +59,7 @@ The following examples are available: - feature_info_get: How to get the type specific feature information. - feature_set: Change the value of a feature. - list_feature: How to list all available features. -- settings_load_save: Load or save the camera settings to a xml file. +- settings_load_save: Load or save the camera settings to an xml file. - status_get: How to use the status service to get the current camera status. ## Build Instructions @@ -710,7 +710,7 @@ Get status information of the connected camera. ### /\/stream_start #### Description -Start the streaming of the camera. +Start the streaming of camera images. #### Request From eb3b264133981644538baf030899b3564381afc5 Mon Sep 17 00:00:00 2001 From: Dennis Langenkamp Date: Wed, 20 Mar 2024 13:57:38 +0100 Subject: [PATCH 15/19] Added NVIDIA installation instructions --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 013a08f..dcf8fd2 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,7 @@ HARDWARE AND DOCUMENTATION. ## Prerequisites - ROS 2 humble is installed on the system as defined by the [ROS 2 installation instructions](https://docs.ros.org/en/humble/Installation.html) +- For NVIDIA Jetson boards please follow the [NVIDIA ISAAC ROS installation guide](https://nvidia-isaac-ros.github.io/getting_started/isaac_ros_buildfarm_cdn.html#setup) - For running the system tests make sure the package "ros-humble-launch-pytests" is installed on your system. - [Vimba X 2023-4](https://www.alliedvision.com/en/products/software/vimba-x-sdk/) or later - For CSI cameras make sure to install the drivers available on [github](https://github.com/alliedvision/linux_nvidia_jetson) From 249e34900954e9506ba54f2ad6e16db56b087542 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karsten=20H=C3=B6pke?= Date: Wed, 20 Mar 2024 14:04:48 +0100 Subject: [PATCH 16/19] Fixed example command line string. Added note about running examples requires a running node. --- README.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 013a08f..50e1556 100644 --- a/README.md +++ b/README.md @@ -46,10 +46,13 @@ node will always open the camera in exclusive access mode. If no camera is avail The node will publish all topics and service under the namespace `vimbax_camera_`, where `pid` is the process id of the camera node process. -An example can be started by running: +An example can be start by running: ```shell -ros2 run vimbax_camera_examples +ros2 run vimbax_camera_examples vimbax_camera_ ``` + +The Vimba X ROS2 node must have been started before. + The following examples are available: - asynchronous_grab: Stream images from the camera node and print image info to console. - asynchronous_grab_opencv: Stream images from the camera node and display them using opencv imshow. From b389651bec3a87c92a862f1d3cd04ad98d0fc70b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karsten=20H=C3=B6pke?= Date: Wed, 20 Mar 2024 14:12:05 +0100 Subject: [PATCH 17/19] Added asynchronous_grab_performance. Fixed typo. --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index efa2ceb..07f5e0b 100644 --- a/README.md +++ b/README.md @@ -56,13 +56,14 @@ The Vimba X ROS2 node must have been started before. The following examples are available: - asynchronous_grab: Stream images from the camera node and print image info to console. +- asynchronous_grab_performance: High performance streaming example. - asynchronous_grab_opencv: Stream images from the camera node and display them using opencv imshow. - event_viewer: Show GenICam events on the console. - feature_command_execute: How to run a command feature. - feature_get: How to get a feature value. - feature_info_get: How to get the type specific feature information. - feature_set: Change the value of a feature. -- list_feature: How to list all available features. +- list_features: How to list all available features. - settings_load_save: Load or save the camera settings to an xml file. - status_get: How to use the status service to get the current camera status. From 33fb19fd83063c6efa0e1a13e72347b2acbb1c40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karsten=20H=C3=B6pke?= Date: Wed, 20 Mar 2024 14:13:33 +0100 Subject: [PATCH 18/19] Fixed typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 07f5e0b..9af142a 100644 --- a/README.md +++ b/README.md @@ -47,7 +47,7 @@ node will always open the camera in exclusive access mode. If no camera is avail The node will publish all topics and service under the namespace `vimbax_camera_`, where `pid` is the process id of the camera node process. -An example can be start by running: +An example can be started by running: ```shell ros2 run vimbax_camera_examples vimbax_camera_ ``` From f19e2b574e58bd7500bd49ff4cfacfad5ef34f87 Mon Sep 17 00:00:00 2001 From: Dennis Langenkamp Date: Thu, 21 Mar 2024 07:59:22 +0100 Subject: [PATCH 19/19] Fix issues in readme --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9af142a..c925978 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ HARDWARE AND DOCUMENTATION. - ROS 2 humble - Nvidia Jetpack 5.x (arm64) - Ubuntu 22.04 (x86_64) -- All cameras supported by Vimba X +- Allied Vision Alvium cameras ## Prerequisites - ROS 2 humble is installed on the system as defined by the [ROS 2 installation instructions](https://docs.ros.org/en/humble/Installation.html) @@ -161,7 +161,7 @@ Only if [automatic stream](#automatic-stream) is enabled. | camera_id | Id of camera to open. Can be the device id, extended device id, serial number, ip or mac address. | | settings_file | Path to xml settings file to load on startup.
**The file must point to a valid file on system that the node runs on.** | | buffer_count | Number of buffers used for streaming.
**Can't be change during streaming.** | -| autostream | When true the [automatic stream](#automatic-stream) is enabled. | +| autostream | When set to 1 the [automatic stream](#automatic-stream) is enabled. | | camera_frame_id | ROS 2 frame id of the camera. | | camera_info_url | Url to ROS 2 camera info file. | | command_feature_timeout | Timeout for command features. |