engcang / vins-application

VINS-Fusion, VINS-Fisheye, OpenVINS, EnVIO, ROVIO, S-MSCKF, ORB-SLAM2, NVIDIA Elbrus application of different sets of cameras and imu on different board including desktop and Jetson boards
BSD 3-Clause "New" or "Revised" License
495 stars 87 forks source link

oak d pro build in IMU #22

Closed jimakos96 closed 1 month ago

jimakos96 commented 1 month ago

Hello , i have also the oak d pro and i am trying to do the kalibr calibration with imu , i have successfully run vins only with the stereo cameras but i am struggling with the imu calibration .My question is about the orientation of the imu and if in your case did you had to make a conversion of IMU data (accelerometer , gyroscope) to match the cameras orientation . I have found this from OAK link .

engcang commented 1 month ago

@jimakos96 Hi. Did you check this file and this branch of my repository? https://github.com/engcang/vins-application/blob/OAK-D/vins_config/config.yaml https://github.com/engcang/vins-application/tree/OAK-D

jimakos96 commented 1 month ago

Hi i have seen your configuration files , my issue is before the calibration process on the way you are getting the accelerometer and gyroscope values from the IMU and publishing them to the imu ros topic. So for the orientation of the imu according to the oak description link , should be the following way

       `imu_msg = Imu()
        imu_msg.header.stamp = rospy.Time.now()
        imu_msg.header.frame_id = "BNO086"
        imu_msg.linear_acceleration.x = acceleroValues.y
        imu_msg.linear_acceleration.y = (-1)*acceleroValues.x
        imu_msg.linear_acceleration.z = (-1)*acceleroValues.z 
        imu_msg.angular_velocity.x = gyroValues.y
        imu_msg.angular_velocity.y = (-1)* gyroValues.x
        imu_msg.angular_velocity.z =(-1)* gyroValues.z
        imu_pub.publish(imu_msg)`

Did you face this kind of issue in your setup ?

engcang commented 1 month ago

@jimakos96 Hi.

I am using my custom OAKD-ROS package as here - https://github.com/engcang/oakd-ros-simple For the IMU part, refer to these lines - https://github.com/engcang/oakd-ros-simple/blob/main/src/main_ros.cpp#L60-L77

jimakos96 commented 1 month ago

Hi again , i want to ask if you encounter any issue that had to do with the orientation of the imu and if you had to to any conversion to the accel and gyro data before you publish them or in your case everything worked with vins without doing any conversion?

engcang commented 1 month ago

@jimakos96 I think you are asking same question and I already answered that. I used my custom ROS package and for the IMU part, please read the code to understand how I used the IMU data from OAK-D sensor: https://github.com/engcang/oakd-ros-simple/blob/main/src/main_ros.cpp#L60-L77 With this package, IMU and image topics, I ran VINS without any problem.

jimakos96 commented 1 month ago

Hello again ,Can i ask you why in the main_ros.cpp you mentioned above you are using sleep(1000) for the imu and sleep(2000) for the stereo_ir . I am using rosrate(my_frequency) and rosrate_sleep() to set the wanted publish frequency .

engcang commented 1 month ago

@jimakos96 You should open the issue at the package, not here. If you want, you can change the sleep duration as you wanted. IMU has much faster sampling rate and hence I just set shorter duration.