激光slam小记(时间戳、坐标、旋转角)

激光slam小记(时间戳、坐标、旋转角)

下面是对于时间戳的解释

lidars_stmp_offset = np.zeros(len(vis.Img)).tolist()
pose_stmp_offset = np.zeros(VehilceNum, dtype=rospy.Time)
lidars_stmp_last = np.zeros(len(vis.Img)).tolist()
pose_stmp_last = np.zeros(VehilceNum, dtype=rospy.Time)

这是对时间戳的初始化
从这里就能说明,有一个offset和一个last两种类型,需要明白的是,对于一个传感器的消息发出,往往需要记录这个发出的时间,从而便于保证各个不同传感器的时间上对齐,便于进行融合处理

offset是对于传感器本身系统来讲的,last是对于处理系统来讲的。例如,在一个仿真软件中,从仿真软件中获取传感器的数据,此时会记录在仿真软件系统下的获得传感器数据的时间,作为offset时间。
last是对于脚本处理的时间,例如,写了一个python脚本,里面采用了ros处理,会有lidars_stmp_last[i] = rospy.Time.now()的初始化,也就是获取当前系统的时间。

显然,这两个时间是很可能对不上的,有可能offset是1000,last是2000,那么就需要记录这个时间,有以下代码进行处理:

if(lidars_stmp_offset[i] == vis.timeStmp[i]):
         msg.header.stamp = lidars_stmp_last[i]
else:
         t = vis.timeStmp[i] - lidars_stmp_offset[i]
         msg.header.stamp = rospy.Time.now() - rospy.Duration(t)
         lidars_stmp_last[i] = msg.header.stamp
         lidars_stmp_offset[i] = vis.timeStmp[i]

有一个小贴士:通常在时间对齐上,获取当前的时间,一般是像2024-07-16 10:30:00这样的时间,这种时间很不方便去运算,对齐。会考虑通过转化成从1970年1月1日00:00:00到当前时间的总秒数,也就是类似于1726451400.123456这样。这样的数很奇怪,但是转化后就很容易去计算了。
ros系统里,可以通过ros_now_time = rospy.Time.now().to_sec()这样的语句获得总秒数
普通的脚本里,可以通过current_time = time.time()这样的语句。倘若希望输出2024-07-16 10:30:00这样的格式,可以通过current_local_time = time.localtime()的方式去获得。

下面是对于坐标系的说明,对于处理无人机,往往会有很多个坐标系啥的,要进行坐标系之间的转换,譬如,无人机本身一个坐标系,世界坐标系等等
都需要进行转换到同一个参考系下才行

旋转角是指,一般指yaw角,飞机相对于垂直z轴的偏转角

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值