本篇为自定义四轮小车的ROS导航仿真,与前面自定义机器人导航类似。该篇源码非原创,特此说明,作者博客地址在这里:https://blog.csdn.net/wangchao7281/article/details/53691351,本想转载,但是没找到快捷键。。。所以再记录一下吧。
切换到catkin_ws/src目录下,如下:
catkin_create_pkg nav_sim urdf xacro
切换到catkin_ws目录下,编译该功能包,如下:
catkin_make nav_sim
在该功能包下创建include、src、launch、urdf文件夹,在urdf文件下创建urdf文件夹和xacro文件夹。
新建costmap_common_params.yaml配置文件(即共享文件配置),内容如下:
obstacle_range: 2.5
raytrace_range: 3.0
footprint: [[-0.2,-0.2],[-0.2,0.2], [0.2, 0.2], [0.2,-0.2]]
#robot_radius: ir_of_robot
inflation_radius: 0.6
cost_scaling_factor: 10.0
observation_sources: scan
scan: {sensor_frame: hokuyo_link, observation_persistence: 0.0, max_obstacle_height: 0.4, min_obstacle_height: 0.0, data_type: LaserScan, topic: /scan, marking: true, clearing: true}
新建global_costmap_params.yaml配置文件(即全局代价地图配置),内容如下:
global_costmap:
global_frame: /map
robot_base_frame: /base_footprint
update_frequency: 1.0
static_map: true
新建local_costmap_params.yaml配置文件(即局部代价地图配置),内容如下:
local_costmap:
global_frame: /map
robot_base_frame: /base_footprint
update_frequency: 5.0
publish_frequency: 1.0
static_map: false
rolling_window: true
width: 5.0
height: 5.0
resolution: 0.05
tranform_tolerance: 1.0
planner_frequency: 1.0
planner_patiente: 5.0
#plugins:
# {name: obstacles, type: "costmal_2d::ObstacleLayer",
# name: inflation, type: "costmal_2d::InflationLayer"}
新建base_local_planner_params.yaml配置文件(即本地代价地图配置),用于产生一个速度命令来移动机器人,内容如下:
TrajectoryPlannerROS:
controller_frequency: 3.0
max_vel_x: 0.3
min_vel_x: 0.05
max_rotational_vel: 0.5
min_in_place_rotational_vel: 0.01
min_in_place_vel_theta: 0.5
escape_vel: -0.1
max_vel_theta: 1.0
min_vel_theta: -1.0
acc_lim_theta: 3.2
acc_lim_x: 2.5
acc_lim_y: 2.5
yaw_goal_tolerance: 0.1
xy_goal_tolerance: 0.1
pdist_scale: 0.8
gdist_scale: 0.4
holonomic_robot: false
meter_scoring: true
新建myrobot_world.launch启动文件,内容如下:
新建move_base.launch启动文件,内容如下:
使用如下命令依次执行启动文件:
roslaunch nav_sim myrobot_world.launch
roslaunch nav_sim move_base.launch
单击2D Nav Goal按钮,设置导航目标,可以观察到路径规划,四轮小车向目标点移动,如图:
再次声明,本篇源码非原创,作者链接见前言,四轮小车成功移动到目标点。