源码: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. js自增++与自减--运算符

    /** * 自增(++)与自减(--)运算符 */ // 自增示例 var a = 1, c, d, e; console.log(`a++ = ${a++}`); // a++ = 1 consol ...

  2. WPFの多屏幕问题

    public MainWindow(string sysName, int timeState) { InitializeComponent(); //查找当前屏幕数量 ) { Dispatcher. ...

  3. dotNET面试(三)

    1.简述 private. protected. public. internal 修饰符的访问权限.private : 私有成员, 在类的内部才可以访问 ,也就是类内部的函数等成员可以访问.prot ...

  4. 移动终端的GPU显卡介绍

    嵌入式领域里面,不同的SOC芯片往往喜欢采用不同的GPU,目前为止有4家公司提供移动端的GPU芯片:ARM.Imagination Technologies.Vivante和Nvidia (高通Adr ...

  5. RabbitMQ学习第三记:发布/订阅模式(Publish/Subscribe)

    工作队列模式是直接在生产者与消费者里声明好一个队列,这种情况下消息只会对应同类型的消费者. 举个用户注册的列子:用户在注册完后一般都会发送消息通知用户注册成功(失败).如果在一个系统中,用户注册信息有 ...

  6. 在迭代一个集合的时候,如何避免ConcurrentModificationException?

    在遍历一个集合的时候,我们可以使用并发集合类来避免ConcurrentModificationException,比如使用CopyOnWriteArrayList,而不是ArrayList.

  7. QML学习笔记(八)— QML实现列表侧滑覆盖按钮

    QML实现列表右边滑动删除按钮,并覆盖原有的操作按钮,点击可实现删除当前项 本文链接:QML实现列表侧滑覆盖按钮 作者:狐狸家的鱼 GitHub:八至 列表实现在另一篇博客已经提及,列表可选中.拖拽. ...

  8. OpenCV常用基本处理函数(3)颜色空间

    颜色空间转换 对图像进行颜色空间转换,比如从 BGR 到灰度图,或者从BGR 到 HSV 等 我们要用到的函数是:cv2.cvtColor(input_image ,flag),其中 flag就是转换 ...

  9. 【记录】Java NIO实现网络模块遇到的BUG

    1.背景 通过JavaNio实现一个简单的网络模块,有点像Netty的线程模型,一个线程(AcceptThread)建立新连接,把新连接绑定到某个SelectorThread,SelectorThre ...

  10. SQL语句计算经纬度距离

    二: SQL语句计算经纬度距离 SELECT id, ( 6371* acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( ...