vins-fusion跑港大MARS数据集只能跑单目IMU的。
港大MARS数据集链接如下:
HKU MaRS Labhttps://mars.hku.hk/dataset.html
港大MARS数据集里的单目图片消息类型是sensor_msgs/CompressedImage,而vins订阅的图像消息类型是sensor_msgs/Image,所以需要把sensor_msgs/CompressedImage消息类型转换成sensor_msgs/Image消息类型。
可以用一个python脚本实现(代码参考自:sensor_msgs/CompressedImage消息类型转换成sensor_msgs/Image消息类型_compressedimage转为image-CSDN博客)
import rospy
from sensor_msgs.msg import CompressedImage, Image
from cv_bridge import CvBridge, CvBridgeError
bridge = CvBridge()
def compressed_image_callback(msg):
try:
cv_image = bridge.compressed_imgmsg_to_cv2(msg)
except CvBridgeError as e:
rospy.logerr("CvBridgeError: %s", e)
return
try:
image_msg = bridge.cv2_to_imgmsg(cv_image, encoding="bgr8")
except CvBridgeError as e:
rospy.logerr("CvBridgeError: %s", e)
return
image_msg.header = msg.header
pub.publish(image_msg)
if __name__ == '__main__':
rospy.init_node("compressed_to_image")
sub = rospy.Subscriber("compressed_image", CompressedImage, compressed_image_callback, queue_size=1)
pub = rospy.Publisher("image", Image, queue_size=1)
rospy.spin()
FAST-LIVO自己跑bag包时,也是借助image_transport把压缩图像话题转为原始图像话题跑的
https://gitee.com/huanglilong/FAST-LIVO/blob/main/launch/mapping_avia.launch
vins订阅的MARS数据集里的imu话题注意订阅大疆飞控的imu话题/dji_osdk_ros/imu,不要订阅livox激光雷达的imu话题/livox/imu,因为/livox/imu里的加速度值是普通加速度值的十分之一,会导致vins一直没法初始化过去,终端一直报misalign visual structure with IMU。