-
Notifications
You must be signed in to change notification settings - Fork 1.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
D435i issues IMU calibration and topics missing #1368
Comments
Hi @FaboNo Since ROS wrapper version 2.2.15, infra, fisheye, IMU and pose streams are set to false by default. You can enable them in your roslaunch statement or in the launch file. For example, to enable infra1 and infra2 in roslaunch: roslaunch realsense2_camera rs_camera.launch enable_infra1:=true enable_infra2:=true Regarding the IMU calibration: originally, the D435i IMU sensor was not calibrated in the factory, though the other sensors in the camera are factory-calibrated. I haven't heard information that this has changed. A calibration of the IMU can be performed using a Python-based tool. https://dev.intelrealsense.com/docs/imu-calibration-tool-for-intel-realsense-depth-camera Use of this tool can correct an issue where the accel values do not settle near zero even when the camera is stationary. The software calibration is needed because the IMU component in the camera does not have its own internal calibration. Once a calibration has been successfully completed and written to the camera hardware, an option becomes available in the RealSense Viewer to perform motion correction on the IMU data. This 'fixes' the raw IMU data to take account of known inaccuracies in the IMU component so that the 'fixed' results are closer to what they should be. It looks as though your librealsense installation has significant problems related to the kernel though. This was indicated first by the error Pixel format 36315752-1a66-a242-9065-d01814a likely requires patch for fourcc code RW16! and later by the long list of kernel related xioctl(UVCIOC_CTRL_QUERY) failed errors in your log. Which computer / computing device do you have Ubuntu installed on, please? |
@MartyG-RealSense Thank you for your answer Actually I did enter
but i did not get all the expected topics. I installed the librealsense on an Intel NUC. What I will do is deinstall and reinstall and calibrate the IMU. Then I will see what's happen and get back to you in case I run into problems again Thank you |
@MartyG-RealSense one more information because after reinstalling everything and start My kernel (uname -r) is Should be compatible with the SDK? |
@FaboNo Kernel 5.4 is not yet officially validated for use with librealsense (the most recent officially validated kernel is 5.3), though many RealSense users have been able to unofficially use 5.4 with librealsense. Assuming that your Intel NUC has an Intel processor chip, it should be able to work with the distribution package method of librealsense installation. A way to build librealsense without kernel conflicts is to use a method called RSUSB backend. It is useful for situations where the normal installation methods are not working. It requires an internet connection to perform the installation but is not dependent on Linux versions or kernel versions and does not require patching. The instructions in the link below are for SDK 2.36.0 - just substitute the 2.36.0 parts of the instructions for 2.37.0. |
@MartyG-RealSense so you mean I have to recompile from source the 2.37 release? |
Yes, the RSUSB method uses the source code folder from the Releases page instead of the DKMS packages used in the Distribution method. The zipped source code folder for 2.37.0 should be downloaded from the Assets list of that version and extracted. |
@MartyG-RealSense I successfully compiled the library. But I am a bit puzzled with the next steps (sorry about that). Do I need to do |
No problem at all. Having multiple librealsense installations made by different methods can sometimes cause conflicts, so uninstall the DKMS one if you encounter problems. As far as I know there is not a further step after the CMake instruction completes with the RSUSB method. Are you able to use applications such as RealSense Viewer in the new installation of librealsense, please? |
@MartyG-RealSense I did `sudo make install' to install the libraries on /usr/local when I entered I got the following messages...
Looks like I still have the problem plus a new one with the HID-SENSORS |
Could you try uninstalling all of the RealSense DKMS packages from the previous installation with the command below please to see if that makes a difference? dpkg -l | grep "realsense" | cut -d " " -f 3 | xargs sudo dpkg --purge |
@MartyG-RealSense yes I did it before and reinstall the package for the udev rules only. |
If the source code was being compiled using the normal (non-RSUSB) method then the instructions state that the install statement that would be used to make sure that it is a clean installation is: sudo make uninstall && make clean && make && sudo make install |
@MartyG-RealSense actually I just did |
I understand that the role of the uninstall and make clean commands is to do clear-up operations such as clearing the CMake cache before doing the install process. Entering the commands exactly as listed in the instructions should be sufficient: sudo make uninstall && make clean && make && sudo make install You can use make -j8 instead of make to speed up the build process by taking advantage of multiple cores in the processor chip, though this may make the build process more prone to failure on low-end computer specifications. sudo make uninstall && make clean && make -j8 && sudo make install |
@MartyG-RealSense I finally gave up on Melodic and did the installation on Kinetic and it works.
With the camera fixed on the tripod, no vibration on the table, the topic /camera/imu (with in rs_camera.launch file) gave me these values - and the values for the linear acceleration are REALLY BAD
Indeed x and z should be something like 0.00xxx but definitively not 0.21 or 0.67, is there any mean to improve the calibration? Thank you |
You can repeat the IMU calibration as many times as you feel necessary until you are satisfied with the results. The results can be affected by how level the camera is when performing the steps where you are holding it side-on (holding it by the USB cable connector or by the other end with the USB cable resting on the flat surface). It is difficult to position the camera completely level in these two particular orientations, so you may never acheve ideal results. As far as I know, if you are accessing the IMU data through ROS though then you get it "as is" without the ability to do further improvement processing on it. |
Hi @FaboNo Do you require further assistance with this case, please? Thanks! |
@MartyG-RealSense I am sorry for my late response. I have just a last question, If i want to use Kalibr can you tell me what is the best camera model to use: is it pinhole-equi or pinhole-radtan ? |
I have not got personal experience with using Kalibr so I cannot offer guidance about that, but a RealSense user did recently uae both pinhole-equi and pinhole-radian with the D435i IMU and produced charts. |
@MartyG-RealSense thanks again. I did few calibrations because I need to get the distortion prameters nd they are not provided by /camera/infra1/camera_info but what bother me is that the intrinsics I got are not similar to the ones provided by camera_info. In my case fx, fy = 381.82/381/82 (/camera/infra1/camera_info) but the calibration values are more between 386/386 -- 394/394 values. |
You can check the intrinsics and extrinsics of the camera with rs-enumerate-devices -c to list the camera's full calibration information for all of the sensors that it supports on that particular model. If you calibrated the camera and wrote the calibration to the camera then yes, you can consider it calibrated. Whether it is a good calibration will depend on the values that you wrote to the camera. You can of course try the calibration again instead of writing it to the camera if you are not satisfied with the results at the end of the calibration process. It may therefore be worth comparing the results from rs-enumerate-devices to those that were provided at the end of the calibration process to see how well they match up. |
@MartyG-RealSense ah yes quite comprehensive source of information! Thank you However is it normal to get a distortion array with 0 values?
Does it mean that the image is already rectified? |
The 400 Series cameras deliberately set all the coefficients to zero, so that is normal. |
Hi @FaboNo Do you require further assistance with this case, please? Thanks! |
@MartyG-RealSense No I have all the information I required thanks for your support |
Thanks for the update! |
@MartyG-RealSense oups sorry as I am working with other people, I have another (last) question. Can you confirm that the infra1 and infra2 images are already rectified? |
The Y8 infrared channel is rectified. Y16 in librealsense is unrectified. |
@MartyG-RealSense it is interesting because as I am working with other researchers on VIO based algorithm, and they prefer to work on unrectified images as a precise calibration is required. Is it possible to setup in rs_camera.launch Y16 (meaning 25Hz max and 640x400) ? Is it supported in the ros wrapper? |
It is fine to continue on this discussion after it is closed if you wish to. Y16 is a grayscale format channel and is unrectified because it is intended to be used for the purpose of RealSense camera calibration. I am not aware of a means to change a stream's format in RealSense ROS though. |
@MartyG-RealSense I see that I can change the parameters (Y16 and image size) with realsense-viewver but I do not know if I can save them (well I do not know how to). Even though it is possible, I do not know how the ros wrapper will react... |
Yes, you can set Y16 in librealsense @FaboNo but librealsense and the RealSense ROS wrapper operate independently. So setting an option in a librealsense-based program such as the Viewer does not affect the camera's behavior in ROS and vice versa. |
@MartyG-RealSense Yes this is what I was afraid of (well in some sense :) ) So regarding ros wrapper we are stick to Y8 and rectified images then. Thanks again for your support. |
@MartyG-RealSense Hi, I can get the imu topic but cannot echo data from that topic. Do you know how to fix this? |
Hi @Hanning-Liu Thanks for your question. I will reply at #3121 |
I am running Ubuntu 18.04 and ROS MELODIC
D435i version:
I installed all the packages following the instructions provided here: https://github.com/IntelRealSense/librealsense/blob/master/doc/distribution_linux.md#installing-the-packages
My first problem is coming when I started realsense-viewer and activated motion, looks like the IMU is not calibrated but I though it was "factory calibrated"? So does it mean that I have to calibrate it myself?
Second issue is coming when I launch
Then I look at the published topics and found that many are missing (related to IMU,infra1, infra2..):
Can you help me to understand where is the problems?
I would like to understand also what is the meaning if these messages when I tried to update the firmware:
Thank you very much for your support
The text was updated successfully, but these errors were encountered: