使用数据集跑Hector_slam

本文详细介绍了如何使用slam benchmark数据集运行Hector_SLAM。首先,介绍数据集预处理,包括clf文件转bag文件的过程;接着,说明如何下载源码并安装;然后,讲解创建launch文件和参数文件的步骤;最后,阐述如何运行Hector_SLAM并给出了相关参考资料。
摘要由CSDN通过智能技术生成

流程和跑gmapping是类似的,只不过hector_slam不需要里程计数据,所以,只要数据集中有 /scan 和 /tf 就可以。

1 数据集预处理

这里我用slam benchmark 数据集,网址:

http://ais.informatik.uni-freiburg.de/slamevaluation/datasets.php

这个数据集非常小,里面真的是只有 /scan 和 /tf ,但是这个数据集的格式为.clf,需要把它转换成.bag文件才能在ros中使用。网上已经有人做了这件事情,那我就直接用了,python文件如下:

#!/usr/bin/env python
#coding=utf8


'''This is a converter for the Intel Research Lab SLAM dataset
   ( http://kaspar.informatik.uni-freiburg.de/~slamEvaluation/datasets/intel.clf )
   to rosbag'''

import rospy
import rosbag
from sensor_msgs.msg import LaserScan
from nav_msgs.msg import Odometry
from math import pi
from tf2_msgs.msg import TFMessage
from geometry_msgs.msg import TransformStamped
import tf
import sys

def make_tf_msg(x, y, theta, t,base,base0):
    trans = TransformStamped()
    trans.header.stamp = t
    trans.header.frame_id = base
    trans.child_frame_id = base0
    trans.transform.translation.x = x
    trans.transform.translation.y = y
    q = tf.transformations.quaternion_from_euler(0, 0, theta)
    trans.transform.rotation.x = q[0]
    trans.transform.rotation.y = q[1]
    trans.transform.rotation.z = q[2]
    trans.transform.rotation.w = q[3]

    msg = TFMessage()
    msg.transforms.append(trans)
    return msg

if __name__ == "__main__":

    if len(sys.argv) < 3:
        print("请输入dataset文件名。")
        exit()
    print("正在处理" + sys.argv[1] + "...")

    with open(sys.argv[1]) as dataset:
        with rosbag.Bag(sys.argv[2], 'w') as bag:
            i = 1
            for line in dataset.readline
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值