Hi there,
I am trying to use the Isaac ROS RectifyNode to rectify an image for a stereocamera. However, I am getting different results with IsaacROS’ RectifyNode and the standard ROS image_proc variant.
The image below shows these outputs.
- Left image: raw, unrectified, image,
/left/image_raw - Middle: Image rectified by image_proc,
/left/image_rect_image_proc - Right image: Image rectified by Isaac ROS,
/left/image_rect
I believe image_proc is correctly rectifying the image, while Isaac ROS is not. (I have verified that both RectifyNodes are correctly subscribing to the camera’s CameraInfo message.
It appears that Isaac ROS is further warping the image (notice the bulging), and produces a black border around the image.
How can I correctly rectify the image, and remove the black border using Isaac ROS’ RectifyNode?
My sensor_msgs/CameraInfo message, containing the calibration info, is:
---
header:
stamp:
sec: 1700578155
nanosec: 579015684
frame_id: stereocamera_left_optical_frame
height: 720
width: 1280
distortion_model: plumb_bob
d:
- -0.012295648358154328
- 0.010399113322163095
- 0.006194506328532728
- -0.004939738649990704
- -0.0024600136115519628
k:
- 484.55221837202197
- 0.0
- 630.2205785296142
- 0.0
- 485.32839254851007
- 373.6131985282817
- 0.0
- 0.0
- 1.0
r:
- 0.9999344776311878
- -0.0033761370854320785
- -0.01093810508379143
- 0.0034306390185059672
- 0.9999817755102369
- 0.004967832859377208
- 0.01092113365765652
- -0.005005032045289386
- 0.9999278366431534
p:
- 498.2055467088219
- 0.0
- 629.9748916625977
- 0.0
- 0.0
- 498.2055467088219
- 377.3054504394531
- 0.0
- 0.0
- 0.0
- 1.0
- 0.0
binning_x: 0
binning_y: 0
roi:
x_offset: 0
y_offset: 0
height: 0
width: 0
do_rectify: false
---
My launch file is:
from launch import LaunchDescription
from launch_ros.actions import ComposableNodeContainer
from launch_ros.descriptions import ComposableNode
def generate_launch_description():
left_rectify_node = ComposableNode(
name='left_rectify_node',
package='isaac_ros_image_proc',
plugin='nvidia::isaac_ros::image_proc::RectifyNode',
parameters=[{
'output_width': 1280,
'output_height': 720,
}],
remappings=[
('image_raw', '/left/image_raw'),
('camera_info', '/left/camera_info'),
('image_rect', '/left/image_rect'),
('camera_info_rect', '/left/camera_info_rect')
]
)
left_rectify_image_proc_node = ComposableNode(
name='left_rectify_image_proc_node',
package='image_proc',
plugin='image_proc::RectifyNode',
remappings=[
('image', '/left/image_raw'),
('camera_info', '/left/camera_info'),
('image_rect', '/left/image_rect_image_proc'),
]
)
nitros_container = ComposableNodeContainer(
name='nitros_container',
package='rclcpp_components',
namespace='',
executable='component_container_mt',
composable_node_descriptions=[
left_rectify_node,
left_rectify_image_proc_node,
],
output='screen'
)
return LaunchDescription([nitros_container])

