isaac_ros_nova_recorder
Source code on GitHub.
Overview
The isaac_ros_nova_recorder
package enables recording data from the Nova sensor set. For more information
on data recording, refer to isaac_ros_data_recorder.
Quickstart
Set Up AWS
Follow Get Started With S3 until Step 1: Create your first S3 bucket. The bucket name will be used for the
s3_bucket
parameter when launching the data recorder.Sign in to the AWS Management Console and open the IAM console at https://console.aws.amazon.com/iam.
In the navigation pane of the IAM console, select Users and then select the User name of the user that you created previously.
On the user’s page, select the Security credentials page. Then, under Access keys, select Create access key.
Use the information from Step 2 to create the AWS credentials and configuration files.
Create
~/.aws/credentials
with the following content:[default] aws_access_key_id=<AWS_ACCESS_KEY_ID> aws_secret_access_key=<AWS_SECRET_ACCESS_KEY>
Create
~/.aws/config
with the following content:[default] region=<REGION>
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.2 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.
Note
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.
Create additional mounts for the Docker container.
If the container is already running, stop it with:
docker rm -f isaac_ros_dev-aarch64-container
Create mounts for
/etc/nova
,/mnt/nova_ssd/recordings
, and~/.aws
:echo $'-v /etc/nova:/etc/nova\n-v /mnt/nova_ssd/recordings:/mnt/nova_ssd/recordings\n-v `realpath ~/.aws`:/home/admin/.aws:ro' > ${ISAAC_ROS_WS}/src/isaac_ros_common/scripts/.isaac_ros_dev-dockerargs
Build isaac_ros_nova_recorder
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 update
sudo apt-get install -y ros-humble-isaac-ros-nova-recorder
Clone this repository under
${ISAAC_ROS_WS}/src
:cd ${ISAAC_ROS_WS}/src && \ git clone -b release-3.2 https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_nova.git isaac_ros_nova
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:sudo apt-get update
rosdep update && rosdep install --from-paths ${ISAAC_ROS_WS}/src/isaac_ros_nova/isaac_ros_nova_recorder --ignore-src -y
Build the package from source:
cd ${ISAAC_ROS_WS} && \ colcon build --packages-up-to isaac_ros_nova_recorder --base-paths ${ISAAC_ROS_WS}/src/isaac_ros_nova/isaac_ros_nova_recorder
Source the ROS workspace:
Note
Make sure to repeat this step in every terminal created inside the Docker container.
Since 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
Continuing inside the Docker container, start data recording:
ros2 launch isaac_ros_nova_recorder nova_recorder.launch.py config:=nova-carter s3_bucket:=<s3_bucket>
Once the launch process is complete, open a web browser and navigate to
https://<ROBOT_IP_ADDRESS>:8080
to access the data_recorder UI.Select Open connection to connect to the robot.
Type in
ws://<ROBOT_IP_ADDRESS>:8765
in WebSocket URL.Click the shield/triangle icon at the top right of the Chrome address bar when the page is blocked from connecting.
From the menu that appears, select
Load Unsafe Scripts
to allow the connection to the WebSocket.
In the data_recorder UI, to start a new recording session, follow these steps:
Input Author: Enter the name of the person or entity responsible for the recording.
Input Title: Provide a title for the recording session.
Input Location: Specify the location where the recording is being conducted.
Start Recording: Once all three fields (Author, Title, and Location) are filled out, the
Start
button will be enabled. Press “Start” to begin recording.Stop Recording: To stop recording, use the
Stop
button in the UI.Switch Preview: Click on the image panel, then navigate to the left sidebar and use the “Select Camera” drop-down to change the camera view.
Upload Recorded Data: After stopping the recording, follow these steps to upload the recorded data:
Navigate to the
Upload
tab in the data_recorder UI.In the
Upload
tab, select the files you want to upload by clicking the check-boxes next to each file.Once the files are selected, click the
Upload
button to start the upload process.The upload status will be displayed in the Status column, showing stages like PENDING, the upload percentage, and COMPLETE when the upload is finished.
By default, recordings will be stored in
/mnt/nova_ssd/recordings
.
Try More Examples
Event Recorder
Event recording enables recording data during specific events. To run the event recorder:
ros2 launch isaac_ros_nova_recorder nova_recorder.launch.py event_recorder:=True config:=nova-carter s3_bucket:=<s3_bucket>
The Cross button on the joystick will signal the start of an event while the Square button will signal the end of an event. By default, 60 seconds of data will be buffered and saved before an event starts while 60 seconds of data will be saved after an event ends.
Note
If a sensor configuration without drivetrain
is used, then events will have to be
triggered using ros2 service call
in a separate terminal:
ros2 service call event_start isaac_ros_data_recorder/srv/Event
ros2 service call event_end isaac_ros_data_recorder/srv/Event
Sensor Configuration
A sensor configuration file can be used to record a subset of sensors on the robot. For example, to record only the 4 stereo cameras:
ros2 launch isaac_ros_nova_recorder nova_recorder.launch.py config:=nova-carter_hawk-4_imu s3_bucket:=<s3_bucket>
The following sensor configurations are provided. Custom sensor configurations are also supported.
Configuration |
Description |
---|---|
|
Front stereo camera. |
|
Front and back stereo cameras. |
|
Front, left, and right stereo cameras. |
|
Front, left, right and back stereo cameras. |
|
Front fisheye camera. |
|
Front and back fisheye cameras. |
|
Front, left, and right fisheye cameras. |
|
Front, left, right, and back fisheye cameras. |
|
Front, left, right and back stereo and fisheye cameras. |
|
Sensor configuration for Nova Carter. |
|
Sensor configuration for Nova Carter with only stereo cameras and IMU. |
|
Sensor configuration for Nova Carter with only fisheye cameras and IMU. |
|
Sensor configuration for Nova Carter without drivetrain. |
|
Sensor configuration for Nova Carter without drivetrain and only stereo cameras and IMU. |
|
Sensor configuration for Nova Carter without drivetrain and only fisheye cameras and IMU. |
|
Sensor configuration for Nova Orin Developer Kit. |
Sensor Monitoring
To monitor the status of various sensors during a recording session, the Sensor Indicators Panel in the data recorder UI provides real-time feedback on sensor health and connectivity.
Sensor Health Color Code: Green: OK Yellow: Warning Red: Error Grey: Stale
Hovering over each sensor will display a tool-tip with detailed information, including frame rates and the total number of dropped frames for each sensor.
You can switch between two views using the button at the top of the panel:
Summary View: Groups related topics under each sensor. For example, both left/right camera_info and image_raw topics are grouped under the front Hawk camera. Full View: Displays all topics individually for each sensor.
For more detailed sensor monitoring information, navigate to the Diagnostics
tab at the top.
This section provides comprehensive details for each sensor.
For more information, refer to Visualize Results and Track System Monitors in Isaac ROS nova doc
Recording Via Command Line
The data recorder can be run in headless mode to record data using only the command line:
ros2 launch isaac_ros_nova_recorder nova_recorder.launch.py headless:=True config:=nova-carter s3_bucket:=<s3_bucket>
This will start recording data immediately and will stop when the application is terminated via Ctrl+C
.
Troubleshooting
If the Data Recorder Panel is not visible, click on Layouts
in the left sidebar, right-click on Default
, and select Revert
to restore the default layout.
API
Usage
ros2 launch isaac_ros_nova_recorder nova_recorder.launch.py
ROS Launch Arguments
ROS Launch Argument |
Default Value |
Description |
---|---|---|
|
None |
S3 bucket. |
|
|
Sensor configuration file. |
|
|
Additional topics to record. |
|
|
Recording directory. |
|
|
Recording name. |
|
|
Record data without the UI. |
|
|
Enable event recording. |
|
|
H.264 encoder quality parameter, 0-50, higher values mean lower quality. |
Note
In low light or occluded conditions, the quality parameter may need to be adjusted to prevent frame drops
ROS Topics Subscribed
ROS Topic |
Interface |
Description |
---|---|---|
|
Console logs. |
|
|
Sensor diagnostics. |
|
|
System diagnostics. |
|
|
Movable transforms on the robot. |
|
|
Fixed transforms on the robot. |
|
|
The description of the robot URDF as a string. |
|
|
Front stereo camera left camera stream. |
|
|
Front stereo camera left camera intrinsics. |
|
|
Front stereo camera right camera stream. |
|
|
Front stereo camera right camera intrinsics. |
|
|
Back stereo camera left camera stream. |
|
|
Back stereo camera left camera intrinsics. |
|
|
Back stereo camera right camera stream. |
|
|
Back stereo camera right camera intrinsics. |
|
|
Left stereo camera left camera stream. |
|
|
Left stereo camera left camera intrinsics. |
|
|
Left stereo camera right camera stream. |
|
|
Left stereo camera right camera intrinsics. |
|
|
Right stereo camera left camera stream. |
|
|
Right stereo camera left camera intrinsics. |
|
|
Right stereo camera right camera stream. |
|
|
Right stereo camera right camera intrinsics. |
|
|
Front fisheye camera stream. |
|
|
Front fisheye camera intrinsics. |
|
|
Back fisheye camera stream. |
|
|
Back fisheye camera intrinsics. |
|
|
Left fisheye camera stream. |
|
|
Left fisheye camera intrinsics. |
|
|
Right fisheye camera stream. |
|
|
Right fisheye camera intrinsics. |
|
|
Front 2D lidar scan. |
|
|
Back 2D lidar scan. |
|
|
Front 3D lidar UDP packets. |
|
|
Front stereo camera inertial measurement unit. |
|
|
Chassis inertial measurement unit. |
|
|
Chassis encoder count. |
|
|
Chassis odometry. |
|
|
Chassis battery state. |
ROS Topics Published
ROS Topic |
Interface |
Description |
---|---|---|
|
Directory information. |
ROS Services Advertised
ROS Service |
Interface |
Description |
---|---|---|
|
Deletes a rosbag from disk. |
ROS Actions Advertised
ROS Action |
Interface |
Description |
---|---|---|
|
Uploads a rosbag to S3. |