大沥南庄网站建设,第一接单网app地推和拉新,网站建设服务,怎样用网站做app重要参考#xff1a;
课程链接:https://www.bilibili.com/video/BV1Ci4y1L7ZZ
讲义链接:Introduction Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程 准备工作
请先安装相关的ROS功能包#xff1a; 安装 gmapping 包(用于构建地图)#xff1a; sudo apt inst…重要参考
课程链接:https://www.bilibili.com/video/BV1Ci4y1L7ZZ
讲义链接:Introduction · Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程 准备工作
请先安装相关的ROS功能包 安装 gmapping 包(用于构建地图) sudo apt install ros-ROS版本-gmapping 安装地图服务包(用于保存与读取地图) sudo apt install ros-ROS版本-map-server 安装 navigation 包(用于定位以及路径规划) sudo apt install ros-ROS版本-navigation
新建功能包并导入依赖 gmapping map_server amcl move_base 7.2.1 导航实现01_SLAM建图
SLAM算法有多种当前我们选用gmapping后续会再介绍其他几种常用的SLAM实现。
1.gmapping简介
gmapping 是ROS开源社区中较为常用且比较成熟的SLAM算法之一gmapping可以根据移动机器人里程计数据和激光雷达数据来绘制二维的栅格地图对应的gmapping对硬件也有一定的要求
该移动机器人可以发布里程计消息机器人需要发布雷达消息(该消息可以通过水平固定安装的雷达发布或者也可以将深度相机消息转换成雷达消息)
关于里程计与雷达数据仿真环境中可以正常获取的不再赘述栅格地图如案例所示。
gmapping 安装前面也有介绍命令如下
sudo apt install ros-ROS版本-gmapping
2.gmapping节点说明
gmapping 功能包中的核心节点是slam_gmapping。为了方便调用需要先了解该节点订阅的话题、发布的话题、服务以及相关参数。
2.1订阅的Topic
tf (tf/tfMessage)
用于雷达、底盘与里程计之间的坐标变换消息。
scan(sensor_msgs/LaserScan)
SLAM所需的雷达信息。
2.2发布的Topic
map_metadata(nav_msgs/MapMetaData)
地图元数据包括地图的宽度、高度、分辨率等该消息会固定更新。
map(nav_msgs/OccupancyGrid)
地图栅格数据一般会在rviz中以图形化的方式显示。
~entropy(std_msgs/Float64)
机器人姿态分布熵估计(值越大不确定性越大)。
2.3服务
dynamic_map(nav_msgs/GetMap)
用于获取地图数据。
2.4参数
~base_frame(string, default:base_link)
机器人基坐标系。
~map_frame(string, default:map)
地图坐标系。
~odom_frame(string, default:odom)
里程计坐标系。
~map_update_interval(float, default: 5.0)
地图更新频率根据指定的值设计更新间隔。
~maxUrange(float, default: 80.0)
激光探测的最大可用范围(超出此阈值被截断)。
~maxRange(float)
激光探测的最大范围。
.... 参数较多上述是几个较为常用的参数其他参数介绍可参考官网。
2.5所需的坐标变换
雷达坐标系→基坐标系
一般由 robot_state_publisher 或 static_transform_publisher 发布。
基坐标系→里程计坐标系
一般由里程计节点发布。
2.6发布的坐标变换
地图坐标系→里程计坐标系
地图到里程计坐标系之间的变换。
3.gmapping使用
3.1编写gmapping节点相关launch文件
launch文件编写可以参考 github 的演示 launch文件https://github.com/ros-perception/slam_gmapping/blob/melodic-devel/gmapping/launch/slam_gmapping_pr2.launch
复制并修改如下
launch
param nameuse_sim_time valuetrue/node pkggmapping typeslam_gmapping nameslam_gmapping outputscreenremap fromscan toscan/param namebase_frame valuebase_footprint/!--底盘坐标系--param nameodom_frame valueodom/ !--里程计坐标系--param namemap_update_interval value5.0/param namemaxUrange value16.0/param namesigma value0.05/param namekernelSize value1/param namelstep value0.05/param nameastep value0.05/param nameiterations value5/param namelsigma value0.075/param nameogain value3.0/param namelskip value0/param namesrr value0.1/param namesrt value0.2/param namestr value0.1/param namestt value0.2/param namelinearUpdate value1.0/param nameangularUpdate value0.5/param nametemporalUpdate value3.0/param nameresampleThreshold value0.5/param nameparticles value30/param namexmin value-50.0/param nameymin value-50.0/param namexmax value50.0/param nameymax value50.0/param namedelta value0.05/param namellsamplerange value0.01/param namellsamplestep value0.01/param namelasamplerange value0.005/param namelasamplestep value0.005//nodenode pkgjoint_state_publisher namejoint_state_publisher typejoint_state_publisher /node pkgrobot_state_publisher namerobot_state_publisher typerobot_state_publisher /node pkgrviz typerviz namerviz /!-- 可以保存 rviz 配置并后期直接使用--!--node pkgrviz typerviz namerviz args-d $(find my_nav_sum)/rviz/gmapping.rviz/--
/launch
关键代码解释
remap fromscan toscan/!-- 雷达话题 --
param namebase_frame valuebase_footprint/!--底盘坐标系--
param nameodom_frame valueodom/ !--里程计坐标系--
3.2执行
1.先启动 Gazebo 仿真环境(此过程略)
2.然后再启动地图绘制的 launch 文件
roslaunch 包名 launch文件名
3.启动键盘键盘控制节点用于控制机器人运动建图
rosrun teleop_twist_keyboard teleop_twist_keyboard.py
4.在 rviz 中添加组件显示栅格地图 最后就可以通过键盘控制gazebo中的机器人运动同时在rviz中可以显示gmapping发布的栅格地图数据了下一步还需要将地图单独保存。 另请参考:
gmapping - ROS Wiki