基于move_base的机器狗定位与导航

1、fast_lio2建图与重定位

整体安装和使用流程可以参考另一篇文章fast_lio2建图与重定位
这里我先给他下采样一下,把点从950w减少到18w,
但使用cloudcompare下采样后保存的地图会导致fast_lio_localization读取点云出错:
因此需要对fast_lio_localization的源码scripts/global_localization.py

中的msg_to_array函数进行简单修改:

python 复制代码
def msg_to_array(pc_msg):
    try:
        pc_array = ros_numpy.numpify(pc_msg)
        pc = np.zeros([len(pc_array), 3])
        pc[:, 0] = pc_array['x']
        pc[:, 1] = pc_array['y']
        pc[:, 2] = pc_array['z']
        return pc
    except Exception as e:
        # 如果ros_numpy失败,改用point_cloud2
        import sensor_msgs.point_cloud2 as pc2
        points = list(pc2.read_points(pc_msg, field_names=("x", "y", "z"), skip_nans=True))
        return np.array(points)

接下来重定位就没有问题了

这里map和camera_Init之间的转换关系是由点云和地图匹配确定(可以和i理解为运行重定位时机器人的位置在map中的位姿),camera_Init和body之间是激光雷达里程计

这里还有个/Odometry话题,反映的是雷达里程计(camera_Init->body),而非机器人在map中的位姿。

2、将地图转换为move_base的2D栅格地图

pcd2pgm下载链接

将PCD点云转换成pgm格式的2D栅格地图
保存地图到本地

bash 复制代码
rosrun map_server map_saver map:=/map -f mymap

3、将Mid360实时发布的3D点云转换成2D点

pointcloud_to_laserscan下载链接

这里我用的是ROS1

bash 复制代码
git clone -b lunar-devel https://github.com/ros-perception/pointcloud_to_laserscan.git

直接编译后完成

相关推荐
前网易架构师-高司机1 天前
ROS2 Jazzy+Gazebo Harmonic 环境下,用 URDF 搭建机器人,配置物理属性、插件与桥接,修复车轮和激光雷达故障 (手把手保姆级教程)
开发语言·算法·golang·机器人·ros
波特率11520011 天前
在ROS2当中两种rmw比较(CycloneDDS和FastDDS)
ros·ros2·dds
kobesdu16 天前
【ROS2实战笔记-19】ROS2 生命周期节点的启动顺序、状态转换陷阱与热备方案
java·前端·笔记·机器人·ros·ros2
波特率11520016 天前
ROS2当中的几个关键的环境变量
机器人·ros·ros2
勤自省16 天前
ROS2从入门到“重启解决”:21讲8~12章踩坑血泪史与核心总结
linux·开发语言·ubuntu·ssh·ros
kobesdu18 天前
【ROS2实战笔记-20】ROS2 bag 录播与时间模拟:从基础操作到高级调试技巧
笔记·机器人·ros·ros2
kobesdu18 天前
【ROS2实战笔记-18】ROS2 通信的隐秘控制:DDS 配置参数如何决定系统性能
网络·人工智能·笔记·机器人·开源·ros·人形机器人
kobesdu18 天前
Cartographer 定位优化:降低计算量、提升实时性与稳定性
ros·移动机器人·cartographer
kobesdu21 天前
【ROS2实战笔记-14】多机器人系统的三层工具箱:从零基础集群到跨仿真实现
笔记·机器人·ros
dragen_light21 天前
6.ROS2-topic
ros