ros 开源物体检测_机器人操作系统ROS—使用激光雷达RpLidar A1进行SLAM定位建图

2023-05-16

移动机器人在环境中获取障碍物的具体位置、房间的内部轮廓等信息都是非常必要的,这些信息是机器人创建地图、进行导航的基础数据。考虑成本,入手了一个SLAMTEC公司的低成本二维激光雷达RpLidar A1进行初步的学习,它可以最快10hz的频率检测360度范围内的障碍物信息,最远检测距离12米,适合室内移动机器人使用。本文讲解如何使用它感知周围环境。

9484e09329170b0391209f0118975957.png

一、准备工作

1、安装ros对应驱动功能包rplidar

sudo apt install ros-melodic-rplidar-ros

2、硬件连接

接好连接线并插到usb口上,激光雷达会开始旋转。

341f3287c41429cae4825dadc9badcbd.png

检查激光雷达是否被正常识别:

lsusb|grep Cygnal

二、测试激光雷达

1、启动激光node节点

roscore
rosrun rplidar_ros rplidarNode
[ INFO] [1593424905.411970119]: RPLIDAR running on ROS package rplidar_ros. SDK Version:1.7.0
RPLIDAR S/N: CCE39A87C5E392D5A5E492F85C36316B
[ INFO] [1593424907.918969787]: Firmware Ver: 1.25
[ INFO] [1593424907.919051349]: Hardware Rev: 5
[ INFO] [1593424907.920679886]: RPLidar health status : 0

2、查看激光雷达topic输出的数据

# 查看topic
rostopic list -v|grep scan
* /scan [sensor_msgs/LaserScan] 1 publisher

# 查看输出数据格式定义
rosmsg show sensor_msgs/LaserScan
std_msgs/Header header
uint32 seq
time stamp
string frame_id
float32 angle_min
float32 angle_max
float32 angle_increment
float32 time_increment
float32 scan_time
float32 range_min
float32 range_max
float32[] ranges
float32[] intensities

# 输出topic内容
rostopic echo /scan

9e96513f314b0a81cefe7a6599004e1a.png

三、激光数据可视化

# 使用rplidar功能包在rviz中查看激光雷达数据(frame=laser、RPLidarLaserScan Topic=/scan)
roslaunch rplidar_ros view_rplidar.launch

3a8f262821dff7b1ebd21cfc88f655ec.png

四、使用激光雷达进行SLAM定位建图

SLAM(Simultaneous Localization and Mapping 实时定位与建图)可以简单的理解为机器人在未知环境中从一个未知位置开始移动,移动过程中根据位置估计和地图进行自身定位,同时生成增量式地图,以实现机器人在未知环境中的自主定位和导航。

要完成机器人的slam和自主导航,机器人首先要有感知周围环境的能力,尤其要有感知深度(即距离)信息的能力,激光雷达(价格贵)、双目摄像头(标定较为复杂、运算量大)、RGB-D摄像头(视野窄、盲区大、噪声大)都具备探测深度的能力。

目前slam有较多的开源实现,例如gmapping、hector_slam、cartographer、rgbdslam、orb_slam、move_base、amcl等。本文不详细讨论slam的算法实现,先教会大家怎么使用这些开源库,在后续文章中再深入学习。

# 依赖包
sudo apt install ros-melodic-fake-localization ros-melodic-map-server ros-melodic-hector-slam ros-melodic-gmapping ros-melodic-slam-gmapping ros-melodic-open-karto ros-melodic-slam-karto

# 编辑slam launch
cd /opt/ros/melodic/share/rplidar_ros/launch/
sudo vim hectormapping.launch #不需要里程计数据,只根据激光信息即可构建地图

<launch>
<node pkg="tf" type="static_transform_publisher" name="link1_broadcaster" args="1 0 0 0 0 0 base_link laser 100" />
<node pkg="hector_mapping" type="hector_mapping" name="hector_height_mapping" output="screen">
<param name="scan_topic" value="scan" />
<param name="base_frame" value="base_link" />
<param name="odom_frame" value="base_link" />
<param name="output_timing" value="false"/>
<param name="advertise_map_service" value="true"/>
<param name="use_tf_scan_transformation" value="true"/>
<param name="use_tf_pose_start_estimate" value="false"/>
<param name="pub_map_odom_transform" value="true"/>
<param name="map_with_known_poses" value="false"/>
<param name="map_pub_period" value="0.5"/>
<param name="update_factor_free" value="0.45"/>
<param name="map_update_distance_thresh" value="0.02"/>
<param name="map_update_angle_thresh" value="0.1"/>
<param name="map_resolution" value="0.05"/>
<param name="map_size" value="1024"/>
<param name="map_start_x" value="0.5"/>
<param name="map_start_y" value="0.5"/>
node>
launch>


# 编辑view slam launch
sudo vim view_slam.launch
<launch>
<include file="$(find rplidar_ros)/launch/rplidar.launch" />
<include file="$(find rplidar_ros)/launch/hectormapping.launch" />
<node name="rviz" pkg="rviz" type="rviz" args="-d $(find rplidar_ros)/rviz/slam.rviz" />
launch>

# 测试hector slam并通过rviz展示
roslaunch rplidar_ros view_slam.launch

手持rplidar雷达绕着屋子大概转了转,构建出的地图:(map topic是hector_mapping发布的地图珊格数据)

be0476ac000e0deef9f3a4182c400b11.png a7f7f2468143bb038e9f788af25e8605.png

可以看到建出来的地图效果不太好,这里有个原因是手拿着雷达移动时高度和角度都不稳定,下一步我们把它固定到小车上。

五、坦克小车SLAM建图

1、安装到树莓派

为了方便在小车上使用,我们需要把相关环境安装到树莓派上。

# 安装rplidar、hector、gmapping源码包
cd ~/ros_catkin_ws
rosinstall_generator desktop rosserial rplidar_ros hector_slam gmapping slam_gmapping --rosdistro melodic --deps --wet-only --tar > melodic-desktop-wet.rosinstall
wstool merge -t src melodic-desktop-wet.rosinstall
wstool update -t src
rosdep install -y --from-paths src --ignore-src --rosdistro melodic -r --os=debian:$(lsb_release -cs)
sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/melodic


# 测试rplidar
roslaunch rplidar_ros view_rplidar.launch

*注:树莓派USB电流问题:

树莓派USB输出电流是1200mA,rplidar的启动电源电流需要1500mA,所以热插拔会导致系统重启,所以一定先关机再插拔rplidar。

2、构建地图并保存

# 测试slam
roslaunch rplidar_ros view_slam.launch

好了,本文就讲到这里,下一篇我们让小车脱离数据线的束缚,构建完整的地图并进行路径规划和避障。

yan 7.12  22:08

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ros 开源物体检测_机器人操作系统ROS—使用激光雷达RpLidar A1进行SLAM定位建图 的相关文章

  • mybatis-generator-core插件无法下载解决办法

    mybatis generator core插件无法下载解决办法 前言一 解决办法二 插件可用 前言 maven mybatis generator core插件无法下载 一 解决办法 二 插件可用
  • idea 去绿色波浪线

    idea 去绿色波浪线 如图 如图
  • stop-writes-on-bgsave-error

    redis RDB持久化配置 RDB持久化 配置 stop writes on bgsave error 选项 如果 61 yes xff1a redis 会创建一个新的后台进程dump rdb 假设 xff1a 创建快照 xff08 硬盘
  • px4_simple_example和uorb机制

    px4 simple app PX4 Autopilot src exampes px4 simple app xff0c 这个程序是用c语言调用orb API和poll机制订阅和发布通讯数据 xff0c 但是这个例子并不是既有接收又有发送
  • 四旋翼无人机硬件基础

    四旋翼无人机硬件基础 材料分析无刷电机型号转速 电子调速器作用规格四轴专用电调 xff1f 电调编程 xff1f 螺旋桨机制 规格 飞行控制器原理作用四轴 字四轴十字 电池锂电池 xff1f 电池容量电池片数放电能力插头类型T插XT60JS
  • AndroidStudio NDK开发环境配置及示例

    AndroidStudio NDK开发环境配置及示例 版本说明 版本作者日期备注0 1loon2020 8 26初稿 目录 文章目录 AndroidStudio NDK开发环境配置及示例版本说明目录一 Android Studio NDK环
  • Onvif协议学习:10、获取音视频流

    Onvif协议学习 xff1a 10 获取音视频流 文章目录 Onvif协议学习 xff1a 10 获取音视频流1 原理简介2 编码流程3 VLC播放RTSP视频4 准备FFmpeg库5 示例代码 原文链接 xff1a https blog
  • (ROS)RLException: [display_mrobot_with_camera.launch] is neither a launch file等一系列错误解决办法

    前提 xff1a 运行 roslaunch mrobot description display mrobot chassis urdf launch 有误 错误1 xff1a rviz直接打不开 错误显示 xff1a RLExceptio
  • 9款好用的SSH客户端软件推荐

    9款好用的SSH客户端软件推荐 文章目录 9款好用的SSH客户端软件推荐MobaXtermXshellTermiusPuTTYSimpleRemoteZOC TerminalFinalshellJuiceSSHServerCat SSH客户
  • 几款数据库连接工具

    几款数据库连接工具 文章目录 几款数据库连接工具1 前言2 Navicat3 DBeaver4 DataGrip5 phpMyAdmin 1 前言 我目前使用sqlite3和mysql数据库比较多 xff0c 所以对数据库客户端的需求主要是
  • win10文件资源管理器右键卡死现象解决方案大全

    win10文件资源管理器右键卡死现象解决方案大全 文章目录 win10文件资源管理器右键卡死现象解决方案大全一 右键桌面卡死 xff0c 过了许久都未反应二 右键文件夹或文件卡死2 1 方案12 2 方案22 3 方案3 xff08 靠谱
  • CLion常用插件及c文件模板配置

    CLion常用插件及c文件模板配置 文章目录 CLion常用插件及c文件模板配置1 常用插件2 模板2 1 c源文件模板 xff1a xff08 使用文件模板 xff09 2 2 c头文件模板 xff1a xff08 使用文件模板 xff0
  • Windows下安装及卸载程序可用的添加和删除当前路径到环境变量的bat脚本以及如何和inno setup结合使用的实例

    文章目录 1 安装bat脚本 install bat 将当前路径添加到环境变量中 2 卸载bat脚本 uninstall bat 搜索当前路径并删除 3 inno setup添加安装和卸载时执行上述bat脚本4 安装到 C盘权限不足问题处理
  • 浏览器播放rtsp视频流:4、jsmpeg+go实现局域网下的rtsp视频流web端播放

    文章目录 1 前言2 资料准备3 兼容性及适用性说明4 jsmpeg架构5 基于以上架构的go方案可行性分析6 编译和结果展示 xff08 编译坑点 xff09 7 最后 1 前言 之前的rtsp转webrtc的方案存在如下缺陷 xff1a
  • TCP套接字编程实例(一)

    TCP套接字编程实例 xff08 一 xff09 TCP套接字编程第一部分我们先用单线程简单实现客户端的 发 和服务器的 收 话不多说 xff0c 直接上代码 1 Client部分 xff1a include include include
  • Vm虚拟机扩展Ubuntu系统磁盘空间

    Vm虚拟机扩展Ubuntu系统磁盘空间 前言 一般我们在安装虚拟机时都会选择默认的20G磁盘空间 xff0c 但是一旦需要搭建一两个交叉编译环境后 xff0c 20G的空间就无法满足了 xff0c 我就是出现了这样的情况 xff0c 所以也
  • Qt添加菜单栏和工具栏

    Qt添加菜单栏和工具栏 版本说明 版本作者时间备注0 1loon2018 10 24初稿 目录 文章目录 Qt添加菜单栏和工具栏版本说明目录一 需求与目的二 详细说明三 最后 一 需求与目的 一般常规的PC软件都会有主窗口 xff0c 主窗
  • Qt关于tabwidget的使用及注意事项

    Qt关于tabwidget的使用及注意事项 版本说明 版本作者日期备注0 1loon2018 11 12初稿 目录 文章目录 Qt关于tabwidget的使用及注意事项版本说明目录一 需求和目的二 了解QTabWIDget类及用法1 详细描
  • SLIC算法介绍

    SLIC xff08 simple linear iterativeclustering xff09 xff0c 即 简单线性迭代聚类 x1f49b 它是2010年提出的一种思想简单 实现方便的算法 xff0c 将彩色图像转化为CIELAB
  • 利用libwebsockets写ws、wss服务端和客户端

    利用libwebsockets写ws wss服务端和客户端 文章目录 利用libwebsockets写ws wss服务端和客户端服务端 xff1a 客户端官网例子坑点 服务端 xff1a server c span class token

随机推荐