isaac_ros_argus_camera
Source code on GitHub.
Quickstart
Set Up Development Environment
Set up your development environment by following the instructions in getting started.
Clone
isaac_ros_common
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
(Optional) Install dependencies for any sensors you want to use by following the sensor-specific guides.
Warning
We strongly recommend installing all sensor dependencies before starting any quickstarts. Some sensor dependencies require restarting the Isaac ROS Dev container during installation, which will interrupt the quickstart process.
Build 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 the prebuilt Debian package:
sudo apt-get install -y ros-humble-isaac-ros-argus-camera
Clone 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_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
Use
rosdep
to install the package’s dependencies:rosdep install --from-paths ${ISAAC_ROS_WS}/src/isaac_ros_argus_camera --ignore-src -y
Build the package from source:
cd ${ISAAC_ROS_WS} && \ colcon build --symlink-install --packages-up-to isaac_ros_argus_camera
Source the ROS workspace:
Note
Make sure to repeat this step in every terminal created inside the Docker container.
Because this package was built from source, the enclosing workspace must be sourced for ROS to be able to find the package’s contents.
source install/setup.bash
Run Launch File
Ensure that you have already set up your Hawk camera using the Hawk setup tutorial. If you have not, please set up the sensor and then restart this quickstart from the beginning.
Continuing inside the Docker container, install the following dependencies:
sudo apt-get install -y ros-humble-isaac-ros-examples
Run the following launch file to spin up a demo of this package using a Hawk camera:
ros2 launch isaac_ros_examples isaac_ros_examples.launch.py launch_fragments:=argus_stereo
Visualize Results
Open a new terminal inside the Docker container:
cd ${ISAAC_ROS_WS}/src/isaac_ros_common && \ ./scripts/run_dev.sh
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"
Stop the node by pressing
Ctrl+C
after saving the left image.ros2 run image_view image_saver --ros-args -r image:=/right/image_raw -p filename_format:="right_image.jpg"
Stop the node by pressing
Ctrl+C
after saving the right image.Open the two images in your preferred image viewer to visualize the results.
Troubleshooting
Isaac ROS Troubleshooting
For solutions to problems with Isaac ROS, see troubleshooting.
Restarting the Argus Daemon
Argus is a library used by Isaac ROS on NVIDIA Jetson systems. It runs a daemon independent of ROS in a separate process to manage the camera. If you are having any sort of trouble with the camera, one of the first things you should try is restarting this daemon. From outside the container you can run:
sudo systemctl restart nvargus-daemon.service
This can resolve (Argus) Error EndOfFile
and Failed to create capture session
errors, among others.
Generally these errors are caused by improper shutdown of a camera application.
Re-probing camera modules
If you are still having trouble with the camera, for example if restarting the daemon does not resolve a Failed to create capture session
error, you can try re-probing the camera modules.
This can be done from outside the container by running the following
sudo modprobe -r cam_cdi_tsc
sudo modprobe -r nv_hawk_owl
sudo modprobe nv_hawk_owl
sudo modprobe cam_cdi_tsc
sudo systemctl restart nvargus-daemon.service
API
Usage
ros2 launch isaac_ros_argus_camera isaac_ros_argus_camera_mono.launch.py
ros2 launch isaac_ros_argus_camera isaac_ros_argus_camera_stereo.launch.py
Argus Camera Mono Node
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. |
|
|
|
Specifies what kind of Frame Synchronization to use, supported values are 0 for internal and 1 for external. For e3653 boards choose 0, for p3762 boards choose 1 |
|
|
|
The frame name associated with the origin of the camera body. |
|
|
|
The frame name associated with the imager inside camera body. |
|
|
N/A |
Optional URL of a camera info |
ROS Topics Published
ROS Topic |
Interface |
Description |
---|---|---|
|
The image from mono camera. |
|
|
The camera model. |
Argus Camera Stereo Node
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. |
|
|
|
Specifies what kind of Frame Synchronization to use, supported values are 0 for internal and 1 for external. For e3653 boards choose 0, for p3762 boards choose 1 |
|
|
|
The frame name associated with the origin of the camera body. |
|
|
|
The frame name associated with the left imager inside camera body (for stereo camera). |
|
|
|
The frame name associated with the left imager inside camera body (for stereo camera). |
|
|
N/A |
Optional URL of a camera info |
|
|
N/A |
Optional URL of a camera info |
|
|
|
Flag to output image with wide field of view. |
ROS Topics Published
ROS Topic |
Interface |
Description |
---|---|---|
|
The image from the left lens in the stereo camera. |
|
|
The left camera model. |
|
|
The image from the right lens in the stereo camera. |
|
|
The right camera model. |
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.