源码:https://github.com/rst-tu-dortmund/teb_local_planner.git

以husky为例子:

1.在gazebo里面配置好机器人底盘的环境

roslaunch husky_gazebo husky_playpen.launch

https://github.com/husky/husky/tree/kinetic-devel/husky_gazebo

2.配置teb

launch文件的内容

<launch>
<master auto = "start"/>
<!--Run footprint laser filter-->
<!--node name="laser_filter" pkg="tfrbt_navigation" type="laser_footprint_filter"--> <!--Run the map server-->
<!--arg name = "map_file" default = "$(find tfrbt_navigation)/maps/tfrbt_map.yaml"/-->
<!--arg name = "map_file" default = "$(env TFRBT_MAP_FILE)"/-->
<node name = "map_server" pkg = "map_server" type = "map_server" args = "$(find tfrbt_navigation)/maps/tfrbt_map.yaml">
<param name="frame_id" value="/map"/>
</node> <!--Run AMCL-->
<arg name = "custom_amcl_launch_file" default = "$(find tfrbt_navigation)/launch/includes/amcl/front_back_lasers.launch.xml"/>
<arg name = "initial_pose_x" default = "0.0"/>
<arg name = "initial_pose_y" default = "0.0"/>
<arg name = "initial_pose_a" default = "0.0"/>
<include file = "$(arg custom_amcl_launch_file)">
<arg name = "initial_pose_x" value = "arg initial_pose_x"/>
<arg name = "initial_pose_y" value = "arg initial_pose_y"/>
<arg name = "initial_pose_a" value = "arg initial_pose_a"/>
</include> <!--Run Move Base-->
<arg name = "custom_param_file" default = "$(find tfrbt_navigation)/param/laser_costmap_params.yaml"/>
<include file = "$(find tfrbt_navigation)/launch/includes/move_base_teb.launch.xml"> <!--move_base_dwa.launch.xml-->
<arg name = "custom_param_file" value = "$(arg custom_param_file)"/>
</include> <!--node name="rviz" pkg="rviz" type="rviz" args="-d $(find teb_local_planner_tutorials)/cfg/rviz_navigation.rviz"/-->
</launch>

主要是文件move_base_teb.launch.xml的配置,查看其内容

<launch>
<!--include file = "$(find tfrbt_navigation)/launch/includes/velocity_smoother.launch.xml"/-->
<!--include file = "$(find tfrbt_navigation)/launch/includes/safety_controller.launch.xml"/-->
<arg name = "odom_frame_id" default = "odom"/>
<arg name = "base_frame_id" default = "base_link"/>
<arg name = "global_frame_id" default = "map"/>
<arg name = "odom_topic" default = "odom"/>
<arg name = "laser_topic" default = "scan"/>
<arg name = "custom_param_file" default = "$(find tfrbt_navigation)/param/dummy.yaml"/> <node pkg = "move_base" type = "move_base" respawn = "false" name = "move_base" output = "screen">
<rosparam file = "$(find tfrbt_navigation)/param/teb/costmap_common_params.yaml" command = "load" ns = "global_costmap"/>
<rosparam file = "$(find tfrbt_navigation)/param/teb/costmap_common_params.yaml" command = "load" ns = "local_costmap"/>
<rosparam file = "$(find tfrbt_navigation)/param/teb/local_costmap_params.yaml" command = "load"/>
<rosparam file = "$(find tfrbt_navigation)/param/teb/global_costmap_params.yaml" command = "load"/>
<rosparam file = "$(find tfrbt_navigation)/param/teb/teb_local_planner_params.yaml" command = "load"/>
<!--rosparam file = "$(find tfrbt_navigation)/param/teb/move_base_params.yaml" command = "load"/-->
<!--rosparam file = "$(find tfrbt_navigation)/param/teb/global_planner_params.yaml" command = "load"/-->
<!--rosparam file = "$(find tfrbt_navigation)/param/teb/navfn_global_planner_params.yaml" command = "load"/-->
<rosparam file = "$(arg custom_param_file)" command = "load"/> <param name="base_global_planner" value="global_planner/GlobalPlanner" />
<param name="planner_frequency" value="1.0" />
<param name="planner_patience" value="5.0" /> <param name="base_local_planner" value="teb_local_planner/TebLocalPlannerROS" />
<param name="controller_frequency" value="5.0" />
<param name="controller_patience" value="15.0" /> <param name = "global_costmap/global_frame" value = "$(arg global_frame_id)"/>
<param name = "global_costmap/robot_base_frame" value = "$(arg base_frame_id)"/>
<param name = "local_costmap/global_frame" value = "$(arg odom_frame_id)"/>
<param name = "local_costmap/robot_base_frame" value = "$(arg base_frame_id)"/>
<!--param name = "DWAPlannerROS/global_frame_id" value = "$(arg odom_frame_id)"/--> <!--remap from = "cmd_vel" to = "navigation_velocity_smoother/raw_cmd_vel"/-->
<remap from = "odom" to = "$(arg odom_topic)"/>
<remap from = "scan" to = "$(arg laser_topic)"/>
</node> </launch>

costmap_common_params.yaml内容

#max_obstacle_height: 2.5 #assume something like an arm is mounted on top of the robot

robot_radius: 0.63
footprint: [[-0.50, -0.38], [-0.50, 0.38], [0.50, 0.38], [0.50, -0.38]]
footprint_padding: 0.02
transform_tolerance: 0.2
#map_type: voxel
map_type: costmap
always_send_full_costmap: true obstacle_layer:
enabled: true
obstacle_range: 3.0
raytrace_range: 4.0
inflation_radius: 0.4
track_unknown_space: true
combination_method: observation_sources: laser_scan_sensor
laser_scan_sensor: {data_type: LaserScan, topic: scan, marking: true, clearing: true} inflation_layer:
enabled: true
cost_scaling_factor: 10.0 # exponential rate at which the obstacle cost drops off (default: )
inflation_radius: 0.65 # max. distance from an obstacle at which costs are incurred for planning paths. static_layer:
enabled: true
map_topic: "map"

local_costmap_params.yaml内容

local_costmap:
global_frame: map
robot_base_frame: base_link
update_frequency: 5.0
publish_frequency: 2.0
static_map: false
rolling_window: true
width:
height:
resolution: 0.05
transform_tolerance: 0.5 inflation_layer:
enabled: true
cost_scaling_factor: 10.0 # exponential rate at which the obstacle cost drops off (default: )
inflation_radius: 0.65 # max. distance from an obstacle at which costs are incurred for planning paths. plugins:
- {name: static_layer, type: "costmap_2d::StaticLayer"}
- {name: obstacle_layer, type: "costmap_2d::ObstacleLayer"}
- {name: inflation_layer, type: "costmap_2d::InflationLayer"}

global_costmap_params.yaml内容

global_costmap:
global_frame: map
robot_base_frame: base_link
update_frequency: 1.0
publish_frequency: 0.5
static_map: true transform_tolerance: 0.5
plugins:
- {name: static_layer, type: "costmap_2d::StaticLayer"}
- {name: obstacle_layer, type: "costmap_2d::VoxelLayer"}
- {name: inflation_layer, type: "costmap_2d::InflationLayer"}
~

teb_local_planner_params.yaml内容

TebLocalPlannerROS:

 odom_topic: odom

 # Trajectory

 teb_autosize: True
dt_ref: 0.3
dt_hysteresis: 0.1
global_plan_overwrite_orientation: True
allow_init_with_backwards_motion: False
max_global_plan_lookahead_dist: 3.0
feasibility_check_no_poses: # Robot max_vel_x: 0.5
max_vel_x_backwards: 0.5
max_vel_y: 0.0
max_vel_theta: 1.5
acc_lim_x: 0.5
acc_lim_theta: 0.5
min_turning_radius: 0.0 # diff-drive robot (can turn on place!) footprint_model:
type: "point" # GoalTolerance xy_goal_tolerance: 0.2
yaw_goal_tolerance: 0.1
free_goal_vel: False # Obstacles min_obstacle_dist: 0.65 # This value must also include our robot radius, since footprint_model is set to "point".
inflation_dist: 0.65
include_costmap_obstacles: True
costmap_obstacles_behind_robot_dist: 1.5
obstacle_poses_affected:
costmap_converter_plugin: ""
costmap_converter_spin_thread: True
costmap_converter_rate: # Optimization no_inner_iterations:
no_outer_iterations:
optimization_activate: True
optimization_verbose: False
penalty_epsilon: 0.01
weight_max_vel_x:
weight_max_vel_theta:
weight_acc_lim_x:
weight_acc_lim_theta:
weight_kinematics_nh:
weight_kinematics_forward_drive:
weight_kinematics_turning_radius:
weight_optimaltime:
weight_obstacle:
weight_dynamic_obstacle: # not in use yet
weight_adapt_factor: # Homotopy Class Planner enable_homotopy_class_planning: True
enable_multithreading: True
simple_exploration: False
max_number_classes:
selection_cost_hysteresis: 1.0
selection_obst_cost_scale: 1.0
selection_alternative_time_cost: False roadmap_graph_no_samples:
roadmap_graph_area_width:
h_signature_prescaler: 0.5
h_signature_threshold: 0.1
obstacle_keypoint_offset: 0.1
obstacle_heading_threshold: 0.45
visualize_hc_graph: False

teb-安装的更多相关文章

  1. teb教程3

    配置和运行机器人导航 简介:配置teb_local_planner作为navigation中local planner的插件 参考teb安装 由于局部代价地图的大小和分辨率对优化性能影响很大,因为占据 ...

  2. Auty自动化测试框架第五篇——框架内部的调用支持、自动化安装库与配置说明

    [本文出自天外归云的博客园] 本次对Auty自动化测试框架做些收尾工作,由于在scripts文件夹中的脚本会需要调用其他包结构文件夹中的脚本,所以这里需要添加一下框架对于内部脚本间互相调用的支持,这里 ...

  3. Linux 上安装 weblogic12C (远程图形界面安装) (二)

    上一篇Linux 上安装 weblogic12C (静默安装)介绍了静默方式安装weblogic12C的方式,这一篇主要介绍在windows主机上通过远程图形界面的方式安装weblogic的方式 一. ...

  4. teb教程1

    http://wiki.ros.org/teb_local_planner/Tutorials/Setup%20and%20test%20Optimization 简介:本部分关于teb怎样优化轨迹以 ...

  5. docker——容器安装tomcat

    写在前面: 继续docker的学习,学习了docker的基本常用命令之后,我在docker上安装jdk,tomcat两个基本的java web工具,这里对操作流程记录一下. 软件准备: 1.jdk-7 ...

  6. 网络原因导致 npm 软件包 node-sass / gulp-sass 安装失败的处理办法

    如果你正在构建一个基于 gulp 的前端自动化开发环境,那么极有可能会用到 gulp-sass ,由于网络原因你可能会安装失败,因为安装过程中部分细节会到亚马逊云服务器上获取文件.本文主要讨论在不变更 ...

  7. Sublime Text3安装JsHint

    介绍 Sublime Text3使用jshint依赖Nodejs,SublimeLinter和Sublimelinter-jshint. NodeJs的安装省略. 安装SublimeLinter Su ...

  8. Fabio 安装和简单使用

    Fabio(Go 语言):https://github.com/eBay/fabio Fabio 是一个快速.现代.zero-conf 负载均衡 HTTP(S) 路由器,用于部署 Consul 管理的 ...

  9. gentoo 安装

    加载完光驱后 1进行ping命令查看网络是否通畅 2设置硬盘的标识为GPT(主要用于64位且启动模式为UEFI,还有一个是MBR,主要用于32位且启动模式为bois) parted -a optima ...

  10. Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级

    Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 5.安装Database软件 5. ...

随机推荐

  1. Python之字符串转换为日期、结合时区的日期操作

    一.字符串转换为日期 方法一 s = '2019-01-20' print(datetime.strptime(s, '%Y-%m-%d')) # 2019-01-20 00:00:00 方法二 de ...

  2. 2018-8-29-win2d-渐变颜色

    title author date CreateTime categories win2d 渐变颜色 lindexi 2018-08-29 08:58:14 +0800 2018-7-7 20:5:3 ...

  3. go语言从例子开始之Example26.通道选择器

    Go 的通道选择器 让你可以同时等待多个通道操作.Go 协程和通道以及选择器的结合是 Go 的一个强大特性. Example: package main import "time" ...

  4. StarUML 破解方法2.X(转)

    下载地址:https://www.jb51.net/softs/558248.html#download 在安装目录的:StarUML\www\license\node 找到LicenseManage ...

  5. mysql-alter语句常用操作

    删除列 alter table table-name drop col-name 增加列(多列) alter table table-name add col-name col-type commen ...

  6. git 初始化提交项目

    Git初始化本地已有项目,并推送到远端Git仓库操作1. 创建本地项目,在项目根目录执行git init命令git init 2. 在git服务器上创建一个仓库,这里使用GitHub创建一个仓库.例如 ...

  7. Nginx是什么?为什么选择Nginx做服务器软件?有什么优势?

    代理服务器基础知识 Nginx是什么? 为什么选择Nginx 1.代理服务器基础知识 a.代理服务器 一般是指局域网内部的机器通过代理服务器发送请求到互联网上的服务器,代理服务器一般作用在客户端.应用 ...

  8. python 在图像上写中文字体 (python write Chinese in image)

    本人处理图像的时候经常使用opencv的包,但是 cv2.putText 显示不了中文,所以查找了如何在python在图像上写中文的方法,在伟大的Stack Overflow上面找到一个方法,分享给大 ...

  9. JavaSE---环境配置

    1.概述 1.1 PATH环境变量 a,Java程序   编译.运行时   需要用到java.javac命令,虽然计算机中已经安装了JDK,但是计算机不知道去哪里找这个命令: b,计算机如何查找命令呢 ...

  10. Ubuntu备份与恢复

    在使用Ubuntu之前,相信很多人都有过使用Windows系统的经历.如果你备份过Windows系统,那么你一定记忆犹新:首先需要找到一个备份工具(通常都是私有软件),然后重启电脑进入备份工具提供的软 ...