本节目标:加载一张未知地图,为机器人设置目标点,机器人会边走路,边建图,最后还可以用map_server保存.
实现:
- 延用工作空间test2_ws;
- 功能包demo5_navigation存放代码;
- launch文件为demo5_navigation/launch/nav4_slam_auto.launch;
- 对于move_base用到的参数全放在demo5_navigation/param/文件夹下;
- rviz配置在demo5_navigation/config/rviz/nav4_2map.rviz;
提问:
实际上是引入了slam的配置文件和上一节导航所用到的几个配置文件.
源码如下(rviz已更改)
<launch>
<include file="$(find demo5_navigation)/launch/nav1_slam.launch" />
<include file="$(find demo5_navigation)/launch/nav3_set_yaml.launch" />
<include>
<node pkg="rviz" type="rviz" name="rviz" />
launch>
roslaunch demo4_urdf_gazebo car_move.launch
roslaunch demo5_navigation nav4_slam_auto.launch
- 取消posearray(获得更好的视觉效果)
- 添加本地地图map,订阅话题选择local那个,配色选raw
- 添加全局地图,订阅话题选择glabal那个,配色选costmap
- 添加本地路径,path,订阅话题带local
- 添加全局路径,path 订阅话题带global,更改颜色和线束以获得更好的观测效果
- 设置目标点,开始自动导航和建图
- 保存rviz,并更改launch文件
保存rviz,命名为nav4_2map.rviz
因为一个rviz不能存在导入两份rviz配置的操作,而我们的slam有对应rviz配置,所以我们应该重写slam文件代码到我们自己的launch文件中,并且在最后一句加入我们自己的rviz环境.而不是简单的文件调用.
更改之后的源码如下:
<launch>
<param name="use_sim_time" value="true"/>
<node pkg="gmapping" type="slam_gmapping" name="slam_gmapping" output="screen">
<remap from="scan" to="scan"/>
<param name="base_frame" value="base_footprint" />
<param name="map_frame" value="map" />
<param name="odom_frame" value="odom" />
<param name="map_update_interval" value="5.0"/>
<param name="maxUrange" value="16.0"/>
<param name="sigma" value="0.05"/>
<param name="kernelSize" value="1"/>
<param name="lstep" value="0.05"/>
<param name="astep" value="0.05"/>
<param name="iterations" value="5"/>
<param name="lsigma" value="0.075"/>
<param name="ogain" value="3.0"/>
<param name="lskip" value="0"/>
<param name="srr" value="0.1"/>
<param name="srt" value="0.2"/>
<param name="str" value="0.1"/>
<param name="stt" value="0.2"/>
<param name="linearUpdate" value="1.0"/>
<param name="angularUpdate" value="0.5"/>
<param name="temporalUpdate" value="3.0"/>
<param name="resampleThreshold" value="0.5"/>
<param name="particles" value="30"/>
<param name="xmin" value="-50.0"/>
<param name="ymin" value="-50.0"/>
<param name="xmax" value="50.0"/>
<param name="ymax" value="50.0"/>
<param name="delta" value="0.05"/>
<param name="llsamplerange" value="0.01"/>
<param name="llsamplestep" value="0.01"/>
<param name="lasamplerange" value="0.005"/>
<param name="lasamplestep" value="0.005"/>
node>
<node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" />
<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" />
<node pkg="rviz" type="rviz" name="rviz" args="-d $(find demo5_navigation)/config/rviz/nav4_2map.rviz" />
<include file="$(find demo5_navigation)/launch/nav3_set_yaml.launch" />
launch>
前几天忙了下校验的事,从今天开始回归挚爱的车.
Original: https://blog.csdn.net/Eric_Sober/article/details/124096475
Author: 终问鼎
Title: 【ROS机器人】 — 2-5.自主导航并slam建图
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/559362/
转载文章受原作者版权保护。转载请注明原作者出处!