上篇博客只是简单跑通了流程,存在的问题将在这篇进行修正。
一、Lego-loam里话题订阅
雷达点云话题为:/velodyne_points,frame_id为velodyne
IMU话题为:/Imu/data,可选
我只用了雷达点云信息,slam效果不错。在airsim里发布激光雷达点云的代码如下:
#!/usr/bin/env python3
#-*- coding:utf-8 -*-
import math
import rospy
import setup_path
import airsim
import sys
import time
import argparse
import pprint
import numpy as np
from geometry_msgs.msg import Point32
from sensor_msgs.msg import LaserScan,PointCloud2
from sensor_msgs.msg import PointField
from std_msgs.msg import Header
from sensor_msgs import point_cloud2
def pub_pointcloud(points):
pc = PointCloud2()
pc.header.stamp = rospy.Time.now()
pc.header.frame_id = 'velodyne'
pc.height = 1
pc.width = len(points)
# pc.fields = [
# PointField('x', 0, PointField.FLOAT32, 1),
# PointField('y', 4, PointField.FLOAT32, 1),
# PointField('z', 8, PointField.FLOAT32, 1),
# PointField('intensity', 16, PointField.FLOAT32, 1),
# PointField('ring', 20, PointField.UINT16, 1)]
# pc.fields = [
# PointField('x', 0, PointField.FLOAT32, 1),
# PointField('y', 4, PointField.FLOAT32, 1),
# PointField('z', 8, PointField.FLOAT32,