赞
踩
gmapping可以建图,同时也定位
基本上所有的参数都先默认就行
<launch> <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="base_frame" value="base_link"/> <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> <!-- 可以保存 rviz 配置并后期直接使用--> <!-- <node pkg="rviz" type="rviz" name="rviz" args="-d $(find my_nav_sum)/rviz/gmapping.rviz"/> --> </launch>
move_base功能包订阅传感器话题以及地图tf信息,在路径规划器中规划,发布速度
move_base 插件:
base_local_planner插件:
base_local_planner: 实现了Trajectory Rollout和DWA两种局部规划算法
dwa_local_planner: 实现了DWA(动态窗口法)局部规划算法,可以看作是base_local_planner的改进版本
teb_local_planner:实现了一个在线优化的本地轨迹规划器
base_global_planner插件:
parrot_planner: 实现了较简单的全局规划算法
navfn: 实现了Dijkstra和A*全局规划算法
global_planner: 重新实现了Dijkstra和A*全局规划算法,可以看作navfn的改进版
recovery_behavior插件:
clear_costmap_recovery: 实现了清除代价地图的恢复行为
rotate_recovery: 实现了旋转的恢复行为
move_slow_and_clear: 实现了缓慢移动的恢复行为
/-----------------------------------------------------------------------------------
包含:
(1)本地和全局的通用参数文件:
costmap_common_params.yaml (调用×2 )
(一些机器人的尺寸,膨胀半径,代价比例系数 等等)
/----------------------------------------------------------------------------------
(2)全局代价地图文件:
global_costmap_params.yaml
(3)本地代价地图文件:
local_costmap_params.yaml
(里程计坐标系,机器人坐标系,代价地图的发布频率
,等待坐标变换发布信息的超时时间等等)
/----------------------------------------------------------------------------------
(4)局部路径规划器文件:
base_local_planner_params.yaml
(方向最大速度,加速限制,目标公差,前进模拟参数)
/----------------------------------------------------------------------------------
move_base.launch文件的编写
<launch>
<node pkg="move_base" type="move_base" respawn="false" name="move_base" output="screen" clear_params="true">
<rosparam file="$(find nav)/param/costmap_common_params.yaml" command="load" ns="global_costmap" />
<rosparam file="$(find nav)/param/costmap_common_params.yaml" command="load" ns="local_costmap" />
<rosparam file="$(find nav)/param/local_costmap_params.yaml" command="load" />
<rosparam file="$(find nav)/param/global_costmap_params.yaml" command="load" />
<rosparam file="$(find nav)/param/base_local_planner_params.yaml" command="load" />
</node>
</launch>
新建slam.launch文件
再调用写的这两个launch文件
<launch>
<include file = "$(find 功能包)/launch/gmapping.launch" />
<include file = "$(find 功能包)/launch/move_base.launch" />
</launch>
start.launch
传感器与车的坐标变化
<node name ="rplidar2basefootprint" pkg = "tf2_ros" type = "static_transform_publisher" args = "0 0 0.1 0 0 0 /base_footprint /laser" />
arduino.launch
调用ros_arduino_brige功能包
(其中arduino_node.py 加载了 my_arduino_params.yaml)
<include file= "$(find ros_arduino_python)/launch/arduino.launch"/>
rplidar.launch
用rplidar_ros功能包
<include file= "$(find rplidar_ros)/launch/rplidar.launch" />
car.launch
加载rviz中的小车模型
<include file= "$(find 自定义功能包)/launch/car.launch" />
car.launch中编写
<param name="robot_description" command="$(find xacro)/xacro $(find mycar_description)/urdf/car.xacro" />
再编写urdf文件和xacro文件
..............
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。