I’m trying to fuse the sensors using the robot localization package from ROS to produce a filtered odometry and filtered GPS. I would like to clarify a few things as I’m not getting the expected result I need. Here are the sensors I’m planning to fuse with:
Wheel encoder odom: frame ID odom and publishing at 100 Hz
IMU in ENU convention: frame ID imu_link and publishing at 50Hz
Zed2i odom
Zed2i imu data
Firstly, how can I make sure that all the sensors I’m fusing are aligned? These sensors all have different initial values and publishing rate. Do I need to calibrate them? For examples my IMU heading and the heading from zed node are different. Other than that, I also realised the TF axis for ZED is different from the default convention used by robot localization, as ZED z-axis is forward-backward while robot localization’s z-axis is up-down. How do I make sure that they are all aligned? Is it by simply publishing a static TF between the frames?
Sorry for asking vague questions and it is more related to the robot localization package from ROS. Any help or guidance in regard of this is greatly appreciated.
You must calibrate your system and understand how axis are aligned.
This is wrong. The ZED ROS Wrapper follows the specifications of the REP 103 and REP 105 ROS documents, so all the data is provided in the ROS coordinate system: X FORWARD, Y LEFT, Z UP.
Yes, URDF and eventually static TF publishing are used to provide correct axis alignment if sensors and not aligned while mounting them on the robot.
It’s up to you to decide how to fuse all your localization information, according on what type of information you have and how they are precise.
Thanks for the reply. So if I want my ZED imu data to be aligned with my other IMU data such that they will report the same yaw angle, I need to calibrate the magnetometer in the ZED camera right? I saw the tutorial on using ZED sensor viewer to perform the calibration by rotating the camera in space while the camera is mounted on the robot. However, I’m using ZED camera on a heavy ground robot and I can only rotate the robot (in yaw axis) but not the other axis. Is it sufficient? Otherwise how do you suggest I perform this calibration?
I see. May I know where the calibration file is stored? I would like to calibrate only one camera and use the same calibration file for the other cameras.
Thank you.
That’s not possible. The magnetometer calibration must be performed in place.
Each sensor has its own calibration that depends on many factors.
Furthermore, the calibration is stored internally on the camera.