【ROS】入门(二)

【ROS】入门(二)

什么是SLAM

同时定位与地图创建,通过激光雷达对障碍物的扫射绘成栅格地图,将栅格地图的特征(参照物)进行匹配和拼接,就可以完成建图啦!

Hector_Mapping初体验

在index.ros.rog中搞清楚Hector_Mapping的发布话题的订阅话题:

在这里插入图片描述

在终端下载功能包

$ sudo apt install ros-noetic-hector-mapping

过程

$ roslaunch wpr_simulation wpb_stage_slam.launch
$ rosrun hector_mapping hector_mapping
$ rosrun rviz rviz
$ rosrun rqt_robot_steering rqt_robot_steering

通过launch文件启动Hector_Mapping

在catkin_ws/src/中新建一个软件包slam_pkg

$ catkin_create_pkg slam_pkg roscpp rospy std_msgs

在VScode中的slam_pkg中创建一个launch文件

将要创建的launch文件放在launch文件夹中

<launch>
	<include file="$(find wpr_simulation)/launch/wpb_stage_slam.launch">
	<node pkg="hector_mapping" type="hector_mapping" name="hector_mapping" output="screen">
		<param name="map_update_distance_thresh" value="0.1"/>         ##修改hector_mapping功能包的参数,在ros index中可以找到对应参数名
		<param name="map_update_angle_thresh" value="0.1"/>          
		<param name="map_pub_period" value="0.1"/>
	</node>
	<node pkg="rviz" type="rviz" name="rviz" args="-d $(find slam_pkg)/rviz/slam.rviz"/>
	<node pkg="rqt_robot_steering type="rqt_robot_steering" name="rqt_robot_steering"/>
</launch>

初识ROS的TF系统

TF是TransForm的缩写,主要描述的是两个坐标系的空间关系,可以理解为坐标系变换,如下地图坐标系和机器人坐标系的距离(x,y)和角度偏移量(z)就属于一个坐标系

在这里插入图片描述

在这里插入图片描述

TF的消息结构:

在这里插入图片描述

tf树:

在这里插入图片描述

里程计在激光雷达SLAM中的作用

里程计

一种软件算法,根据电机的转动数据,计算机器人的位移信息

Gmapping核心算法

先使用里程计推算机器人的位移,然后通过雷达点云贴合障碍物轮廓,修正里程计误差的方法

Gmapping的使用

Subscribed Topic

①tf(tf/tfMessage)

雷达坐标系——>base_link

base_link——>odom

②scan(sensor_msgs/LaserScan)

Published Topic

①map_metadata(nav_msgs/MapMetaData)

②map(nav_msgs/OccupancyGrid)

③~entropy(std_msgs/Float64)

Provided tf Transforms

map——>odom

地图的保存和加载

功能包:map_server

保存

rosrun map_server map_saver         #在主文件夹中运行

加载

rosrun map_server map_server mymap.yaml

rosrun map_server map_saver #在主文件夹中运行


### 加载

rosrun map_server map_server mymap.yaml


猜你喜欢

转载自blog.csdn.net/weixin_74244187/article/details/132804054