Closed Lanzo98 closed 1 year ago
Hi! I'm experiencing the same @Lanzo98 's problem with my Jetson NX and a IMX219. Randomly I'm getting four different errors once I run the image pipeline: 1) invalid distortion type distortionError.log
2) code=2(cudaErrorMemoryAllocation) cudaError.log
3) code=2(cudaErrorMemoryAllocation) + Failed to copy luma plane into left video buffer. Cuda error code = 700 cudaError2.log
4) code=2(cudaErrorMemoryAllocation) + color conversion operation failed. colorConversion.log
The cudaErrorMemoryAllocation error is reported (in a quirk way) even into dmesg: dmesg_cudaError.log
Only once I could run the pipeline without any error but /image_rect
was zero.
nvidia@nvidia-desktop:~/.ros/log$ ros2 topic echo /image_rect
header:
stamp:
sec: 366
nanosec: 156276095
frame_id: left_cam
height: 1080
width: 1920
encoding: rgb8
is_bigendian: 0
step: 5760
data:
- 0
- 0
- 0
- 0
- 0
jtop doesn't show any GPU usage before running the pipeline. lightdm is disabled.
I built all the packages in my workspace from scratch with colcon build --symlink-install
.
I had to fix a couple of compilation errors though:
/home/nvidia/ws/isaac/src/isaac_ros_image_pipeline/isaac_ros_image_proc/src/image_format_converter_node.cpp:29:10: fatal error: sensor_msgs/sensor_msgs/image_encodings.hpp: No such file or directory
29 | #include "sensor_msgs/sensor_msgs/image_encodings.hpp"
/home/nvidia/ws/isaac/src/isaac_ros_nitros/isaac_ros_nitros_type/isaac_ros_nitros_image_type/src/nitros_image.cpp:30:10: fatal error: sensor_msgs/sensor_msgs/image_encodings.hpp: No such file or directory
30 | #include "sensor_msgs/sensor_msgs/image_encodings.hpp"
I removed the first sensor_msgs from both the include. I'm using ROS Humble and inside the worspace I cloned:
At boot I do:
echo 1 > /sys/kernel/debug/bpmp/debug/clk/vi/mrq_rate_locked
echo 1 > /sys/kernel/debug/bpmp/debug/clk/isp/mrq_rate_locked
echo 1 > /sys/kernel/debug/bpmp/debug/clk/nvcsi/mrq_rate_locked
sudo jetson_clocks
Could you post the contents of the calibration file you're using or post what distortion model is being used for the parameters? There are distortion models that are not supported but it could just be different naming issue (plumb bob, rational polynomial, etc.).
The CUDA malloc errors could be occurring because NITROS is preparing buffers for too many 4K images in the pipeline. You could try to tune this value down in the file: isaac_ros_apriltag/isaac_ros_apriltag/config/apriltag_node.yaml
and reduce tyhe number of blocks listed for nvidia::gxf::BlockMemoryPool
:
parameters:
storage_type: 1
block_size: 14400000
num_blocks: 40
You can tune down the num_blocks from 40 to 20 AND decrease the value of 12 for "capacity" parameters elsewhere in the graph to "6". We'll try to reproduce this issue on an Xavier NX with 4K images coming from an IMX219 but this may help unblock you in the mean time.
The "sensor_msgs/" include path issue was previously reported here: https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_nitros/issues/7. We're pushing out a hotfix for this now. Thanks!
Hi @hemalshahNV sorry for the late reply but we haven't had time to test it yet.
This was my YAML file:
nvidia@nvidia-desktop:~/workspaces/calibration$ cat ost.yaml
image_width: 3280
image_height: 2464
camera_name: imx219
camera_matrix:
rows: 3
cols: 3
data: [1138.84289, -0.67278, 1635.71018,
0. , 1138.35588, 1208.64805,
0. , 0. , 1. ]
distortion_model: equidistant
distortion_coefficients:
rows: 1
cols: 4
data: [0.036780, 0.009125, -0.009733, -0.010051]
rectification_matrix:
rows: 3
cols: 3
data: [1., 0., 0.,
0., 1., 0.,
0., 0., 1.]
projection_matrix:
rows: 3
cols: 4
data: [1138.84289, -0.67278, 1635.71018, 0. ,
0. , 1138.35588, 1208.64805, 0. ,
0. , 0. , 1. , 0. ]
As soon as I get back to this node, I'll try to tune the values as you recommended. Thank you!
Trying to make work the apriltag on a jetson xavier nx using an Arducam IMX219. Done the calibration following this. Using the
ost.txt
file, and changing to.ini
, I added the path to the file underparams
inside the launch file ofisaac_ros_argus_apriltag_pipeline
, and argus_camera node finds it correctly. But I get the following error:ERROR extensions/tensor_ops/ImageUtils.cpp@106: invalid distortion type
Here the full log: