ankitdhall/lidar_camera_calibration

launching aruco_mapping resulted in this error message?

zat1999 opened this issue · 5 comments

  what():  vector::_M_range_check: __n (which is 0) >= this->size() (which is 0)
[aruco_mapping-1] process has died [pid 70288, exit code -6, cmd /home/mic-711/catkin_ws/devel/lib/aruco_mapping/aruco_mapping /image_raw:=/frontNear/left/image_raw __name:=aruco_mapping __log:=/home/mic-711/.ros/log/63dc51d6-34d7-11ee-adad-024293f2edd5/aruco_mapping-1.log].
log file: /home/mic-711/.ros/log/63dc51d6-34d7-11ee-adad-024293f2edd5/aruco_mapping-1*.log

I think it's an issue with my remap however am not so how what topics is required. Am using a stereo zed2i camera, running rostopic list gives me several topics, example of the format would be:

/zed2i/zed_node/left_raw/image_raw_color

I tried changing the topics but the same error message still appeared.

this is my launch file:



    <?xml version="1.0"?>
    
    <launch> 
      <!-- <param name="/use_sim_time" value="true"/> -->
      <!-- RVIZ -->
      <!-- <node name="rviz" pkg="rviz" type="rviz" args="-d $(find aruco_mapping)/launch/aruco_config.rviz" /> -->
    
       <!--   usb_cam node -->
     <!--  <node name="usb_cam" pkg="usb_cam" type="usb_cam_node" output="screen">
        <param name="video_device" value="/dev/video0" />
        <param name="image_width" value="640" />
        <param name="image_height" value="480" />
        <param name="pixel_format" value="mjpeg" />
        <param name="camera_frame_id" value="usb_cam" />
        <param name="io_method" value="mmap"/>
      </node> -->
      
     <!-- <node name="usb_cam" pkg="usb_cam" type="usb_cam_stereo_node" output="screen" >
        <param name="video_device" value="/dev/video1" />
        <param name="image_width" value="2560" />
        <param name="image_height" value="720" />
        <param name="pixel_format" value="yuyv" />
        <param name="camera_frame_id" value="Stereo" />
        <param name="left_camera_name" value="left" />
        <param name="reft_camera_name" value="right" />
        <param name="io_method" value="userptr"/>
        <param name="framerate" value="30" />
     </node>  -->
      <!-- ArUco mapping -->
      <node pkg="aruco_mapping" type="aruco_mapping" name="aruco_mapping" output="screen">
        <remap from="/image_raw" to="/zed2i/zed_node/stereo_raw/image_raw_color"/>
    
        <param name="calibration_file" type="string" value="$(find aruco_mapping)/data/camera_config.ini" /> 
        <param name="num_of_markers" type="int" value="2" />
        <param name="marker_size" type="double" value="0.205"/>
        <param name="space_type" type="string" value="plane" />
        <param name="roi_allowed" type="bool" value="false" />
        <!--
        <param name="roi_x" type="int" value="0" /> 
        <param name="roi_y" type="int" value="0" />
        <param name="roi_width" type="int" value="640" /> 
        <param name="roi_height" type="int" value="480" /> 
      -->
    
      </node>  
      
    
      
    </launch>

The camera I am using is a zed2i camera connecting to a jetson orin nx, it plugs into the 3.0usb of the orin and c-type of camera.

Any help would be appreciated thank you.

I also have the same problem, If you have a solution, please let me know. Thank you very much

@Superyanzhuang I think it was an error with the parser. It wasn't able to read the value from the distortion matrix properly. As a temporary measure I just hard coded the values from my calibration file distortion value into the main.cpp file.

 for(size_t i = 0; i < 5; i++)
    distortion_coeff->at<double>(i,0) = camera_calibration_data.D.at(i);
    //Just comment this out and hard code the values for each d coefficient

Also not sure if you have this issue but after remapping the publishing topic from my camera to '/image_raw' in the launch file specified by the subscriber, the new topic didn't appear. To fix that issue I just edit this line in the main.cpp:

image_transport::Subscriber img_sub = it.subscribe("/image_raw", 1, &aruco_mapping::ArucoMapping::imageCallback, &obj);  
//to
image_transport::Subscriber img_sub = it.subscribe("/zed2i/node/...", 1, &aruco_mapping::ArucoMapping::imageCallback, &obj);

While it's not really a permanent solution, hopefully with this temporary fix you can find a proper solution.

also not sure if I should make a new thread for this but it's still a related problem regarding the aruco_mapping launcher. When I try to launch the file, I get an error prior to the line:

Detector.detect(input_image,temp_markers,aruco_calib_params_,marker_size_);
in the aruco_mapping.cpp file, line 207

Error message in question:
[aruco_mapping-1] process has died [pid 70288, exit code -11, cmd /home/mic-711/catkin_ws/devel/lib/aruco_mapping/aruco_mapping

Any idea what this exit code means?

Thank you for your reply,refer to # 17 and your suggestions, but the issue has not been resolved. Perhaps I need to calm down and take a good look at the code. If you have any other suggestions, please let me know. Thank you

@Superyanzhuang I think it was an error with the parser. It wasn't able to read the value from the distortion matrix properly. As a temporary measure I just hard coded the values from my calibration file distortion value into the main.cpp file.

 for(size_t i = 0; i < 5; i++)
    distortion_coeff->at<double>(i,0) = camera_calibration_data.D.at(i);
    //Just comment this out and hard code the values for each d coefficient

Also not sure if you have this issue but after remapping the publishing topic from my camera to '/image_raw' in the launch file specified by the subscriber, the new topic didn't appear. To fix that issue I just edit this line in the main.cpp:

image_transport::Subscriber img_sub = it.subscribe("/image_raw", 1, &aruco_mapping::ArucoMapping::imageCallback, &obj);  
//to
image_transport::Subscriber img_sub = it.subscribe("/zed2i/node/...", 1, &aruco_mapping::ArucoMapping::imageCallback, &obj);

While it's not really a permanent solution, hopefully with this temporary fix you can find a proper solution.
Yes, the parseCalibration() function is not working(aruco_mapping.cpp), which may be the reason for the error