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 RectifyNode
s 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])