isaac_ros_argus_camera
Source code on GitHub.
Quickstart
Set up your development environment by following the instructions here.
Clone
isaac_ros_common
and this repository under${ISAAC_ROS_WS}/src
.cd ${ISAAC_ROS_WS}/src
git clone -b release-3.1 https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_common.git isaac_ros_common
git clone -b release-3.1 https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_argus_camera.git isaac_ros_argus_camera
Launch the Docker container using the
run_dev.sh
script:cd ${ISAAC_ROS_WS}/src/isaac_ros_common && \ ./scripts/run_dev.sh
Install this package’s dependencies.
sudo apt-get install -y ros-humble-isaac-ros-argus-camera
Run the following launch files to spin up a demo of this package:
ros2 launch isaac_ros_argus_camera isaac_ros_argus_camera_mono.launch.py
Use
image_saver
to save the output images:ros2 run image_view image_saver --ros-args -r image:=/left/image_raw -p filename_format:="left_image.jpg"
Troubleshooting
Argus fails to create capture session
Symptoms
The Isaac ROS Argus node can fail to create a capture session inside the
container after the nvargus
daemon has crashed. By default, the
nvargus
daemon is running in background, but it may crash due to
other Argus clients. This will prevent Argus camera nodes from creating
capture sessions. You may see messages with errors similar to
Failed to create capture session
.
Solution
Exit the Docker container and restart the nvargus
daemon by running
sudo systemctl restart nvargus-daemon.service
API
Launch monocular camera
ros2 launch isaac_ros_argus_camera isaac_ros_argus_camera_mono.launch.py
Launch stereo camera
ros2 launch isaac_ros_argus_camera isaac_ros_argus_camera_stereo.launch.py
ROS Parameters
ROS Parameter |
Type |
Default |
Description |
---|---|---|---|
|
|
|
The video device index E.g. |
|
|
|
The camera module index in the device tree when there is more than one of the same camera module connected |
|
|
|
The resolution mode supported by the camera sensor and driver. |
|
|
|
0 for Monocular type camera; 1 for Stereo type camera |
|
|
|
Specifies what kind of Frame Synchronization to use, supported values are 0 for internal and 1 for external. For e3653 boards (carter 2.3) choose 0, for p3762 boards (carter 2.4) choose 1 |
|
|
N/A |
Optional URL of a camera info |
|
|
N/A |
Optional URL of a camera info |
|
|
N/A |
Optional URL of a camera info |
|
|
|
The frame name associated with the origin of the camera body. |
|
|
|
The frame name associated with the imager inside camera body (for monocular camera). |
|
|
|
The frame name associated with the left imager inside camera body (for stereo camera). |
|
|
|
The frame name associated with the right imager inside camera body (for stereo camera). |
Note
To run the stereo camera, two video devices should present
for the left and right sensors, respectively (e.g. /dev/video0
and /dev/video1
).
ROS Topics Published
ROS Topic |
Interface |
Description |
---|---|---|
|
The left image of a stereo pair. |
|
|
The right image of a stereo pair. |
|
|
The left camera model. |
|
|
The right camera model. |
Launch testing
Monocular camera
launch_test src/isaac_ros_argus_camera/isaac_ros_argus_camera/test/isaac_ros_argus_camera_mono_test.py
Stereo camera
launch_test src/isaac_ros_argus_camera/isaac_ros_argus_camera/test/isaac_ros_argus_camera_stereo_test.py
Output Color Space Format
The Isaac ROS Argus node supports the YUV444
and YUV420
colorspaces from libargus
and converts it to the RGB888
colorspace as output.
CameraInfo
Message
The Isaac ROS Argus node uses the Argus Ext API to retrieve calibration parameters from the camera through the Linux device driver and convert it into CameraInfo messages. Refer to this page for the data structure of the calibration parameters.
Note
Each camera module should have stored the calibration parameters in internal memory like EEPROM, and the device driver must support the Argus Ext API to extract those parameters. Contact your camera vendor to get the required drivers.
Note
If your camera
does not support the Argus Ext API, you can also specify a URL to a
camera info .ini
file parsable by the ROS
CameraInfoManager using
the camera_info_url
parameter on the Isaac ROS Argus node. This
will allow you to provide parameters you may have calibrated using
the ROS Camera Calibration package, for example.
Note
When the
camera_info_url
is provided, the loaded parameters override the
CameraInfo
from Argus Ext API.