当前位置: 首页 > wzjs >正文

关于php动态网站开发的书籍app推广方式有哪些

关于php动态网站开发的书籍,app推广方式有哪些,dedecms 5.7 通用企业网站模板,安徽企业网站制作【ROS】TEB 规划器 前言TEB 规划器概述如何使用 TEB 规划器安装 TEB 规划器启用 TEB 规划器示例:配置 TEB 规划器的启动文件 TEB 参数说明TEB 参数文件示例 teb_local_planner_params.yaml TEB 规划器快速调参在 RViz 中显示 TEB 的轨迹路径 前言 TEB 规划器是 ROS…

【ROS】TEB 规划器

  • 前言
  • TEB 规划器概述
  • 如何使用 TEB 规划器
    • 安装 TEB 规划器
    • 启用 TEB 规划器
    • 示例:配置 TEB 规划器的启动文件
  • TEB 参数说明
    • TEB 参数文件示例 `teb_local_planner_params.yaml`
  • TEB 规划器快速调参
  • 在 RViz 中显示 TEB 的轨迹路径

前言

TEB 规划器是 ROS 导航中常用的一个局部路径规划器,它的名字叫“时间弹力带”。简单来说,它会在机器人前方的一小段路径上进行优化,让路径尽量避开障碍物、贴近全局路径,并考虑走这条路要花多少时间。

“弹力带”就像一根橡皮筋,全局路径把它拉住,障碍物推开它,TEB 就在这些力的作用下调整路径形状;而“时间”则代表它还会选择最快能走完的路径。

所以,TEB 规划器能让机器人走得既安全又高效,特别适合速度要求高的场景,比如竞速比赛。

我的环境:
本教程使用的环境是:实体 ROS 小车,Ubuntu 18.04,ROS1 Melodic

参考资料:

  • ROS导航系统 | TEB规划器 | TEB Planner
  • ROS Wiki - teb_local_planner

TEB 规划器概述

TEB(Timed Elastic Band)规划器是一种常用的第三方局部路径规划器,相比 DWA,它的优势在于考虑了时间因素,规划出的路径通常更快。它的核心思想是:在机器人当前局部范围内的全局路径基础上,综合考虑三个因素——障碍物的避让力(推开路径)、全局路径的引导力(拉近路径)以及通过路径所需的时间。就像一根“时间弹力带”,在推拉和时间的共同作用下,动态优化出一条既安全又高效的执行轨迹。


如何使用 TEB 规划器

安装 TEB 规划器

首先需要注意,TEB 规划器并不是 ROS 官方自带的局部规划器,它是一个第三方插件,因此在使用前需要手动安装。你可以使用以下命令进行安装(请根据你的 ROS 版本进行替换):

sudo apt install ros-<你的ROS版本>-teb-local-planner

例如,如果你使用的是 ROS Noetic,则命令为:

sudo apt install ros-noetic-teb-local-planner

启用 TEB 规划器

在 move_base 中启用 TEB(Timed Elastic Band)规划器同样非常简单,只需完成以下两步配置:

1. 指定使用 TEB 规划器

<param name="base_local_planner" value="teb_local_planner/TebLocalPlannerROS" />

这行代码告诉 move_base 使用 TEB 作为局部路径规划器。

2. 加载 TEB 规划器的参数文件

<rosparam file="$(find your_robot_navigation)/config/dwa_local_planner_params.yaml" command="load" />

这会将你设置好的 TEB 参数加载进 ROS 参数服务器中,确保规划器按照你的配置运行。


示例:配置 TEB 规划器的启动文件

下面是一个完整的 launch 文件示例,展示如何在 move_base 中集成 TEB 规划器:

<launch><node name="move_base" pkg="move_base" type="move_base" output="screen"><param name="base_global_planner" value="global_planner/GlobalPlanner" /><!-- 局部规划器配置:使用 TEB Planner--><param name="base_local_planner" value="teb_local_planner/TebLocalPlannerROS" /><rosparam file="$(find your_robot_navigation)/config/costmap_common_params.yaml" command="load" /><rosparam file="$(find your_robot_navigation)/config/global_costmap.yaml" command="load" /><rosparam file="$(find your_robot_navigation)/config/local_costmap.yaml" command="load" /><!-- 加载 TEB 规划器的参数文件 --><rosparam file="$(find your_robot_navigation)/config/teb_local_planner_params.yaml" command="load" /></node>
</launch>

配置完成后,move_base 就会使用你设定的 TEB 规划器参数进行本地路径规划和避障控制了。


TEB 参数说明

TEB 规划器包含大量可调参数,用于控制机器人轨迹生成、避障行为和路径优化效果。
完整参数解释可参考官方文档:ROS Wiki - teb_local_planner 的第 3.2 小节。

如果你想真正掌握如何调参,建议先大致了解 TEB 的算法原理。可以阅读该 Wiki 页首提到的论文,对规划器的工作方式有个整体认识,调参才会更有方向、更高效。

TEB 主要有以下几类参数:

  1. 轨迹生成策略
    👉 控制“怎么生成一条轨迹”
  • 设置轨迹带上的点数、时间间隔、允许倒车吗?
  • 决定机器人是怎么在地图上“计划”一步一步走的。

常见参数:

  • teb_autosize: 自动调整轨迹点数量;
  • dt_ref: 时间间隔参考值;
  • allow_init_with_backwards_motion: 允许初始方向倒车。
  1. 运动性能相关
    👉 告诉规划器你这个机器人能跑多快、能转多快
  • 设置速度、加速度、转弯半径这些;
  • 太高的话轨迹太激进,太低就拖拉。

常见参数:

  • max_vel_x: 最大前进速度;
  • acc_lim_theta: 最大角加速度;
  • min_turning_radius: 最小转弯半径。
  1. 车底轮廓描述
    👉 告诉规划器你机器人长啥样,用来避障
  • 是圆的、长方形还是多边形?
  • 设置好了才知道碰没碰到障碍物。

常见参数:

  • footprint_model: 设置机器人外形;
  • 可选类型包括 point, circular, line, polygon
  1. 到达目标点的判断容差
    👉 多近才算“到了目标点”
  • 不可能精确 0 cm 到达,设置个容差,省得原地打转;
  • 还能设置“到了目标后要不要停下来”。

常见参数:

  • xy_goal_tolerance: x、y 方向的误差范围;
  • yaw_goal_tolerance: 角度的误差范围;
  • free_goal_vel: 允许到了目标点继续移动。
  1. 障碍物避障相关
    👉 告诉机器人:看到障碍要避开,保持距离
  • 设置安全距离;
  • 要不要考虑代价地图里的障碍。

常见参数:

  • min_obstacle_dist: 离障碍物最少多远;
  • inflation_dist: 周围“膨胀”区域;
  • include_costmap_obstacles: 是否考虑代价地图里的障碍物。
  1. 路径优化相关
    👉 怎么给路径“打分”然后不断优化
  • 想让路径更快、更安全,还是更顺滑?用权重控制;
  • 这个部分调得好不好,直接影响规划质量。

常见参数:

  • weight_time: 时间越短越好;
  • weight_obstacle: 尽量远离障碍;
  • weight_kinematics_nh: 考虑非完整性运动学(差速车就要开这个);
  • weight_viapoint: 优先贴近你设定的关键路径点。
  1. 多线规划相关(同伦类规划)
    👉 不只规划一条路径,尝试多种“走法”然后挑个最优的
  • 适合障碍复杂、岔路多的场景;
  • 比如前面有个大障碍,你可以左绕、右绕、原地掉头,不止一条路线。

常见参数:

  • enable_homotopy_class_planning: 开启多线规划;
  • enable_multithreading: 开多线程,提高效率;
  • selection_cost_hysteresis: 设置路径切换的“犹豫度”。

调参建议:
不要一开始就改很多参数,建议先用默认参数跑通基本导航。之后每次只调整一两个参数,观察机器的实际表现,再继续优化。
调参是一个逐步试错、反复微调的过程,慢慢来,效果更好也更稳。


TEB 参数文件示例 teb_local_planner_params.yaml

TebLocalPlannerROS:odom_topic: odom# 策略相关teb_autosize: True # 是否允许改变轨迹的时域长度,也就是改变 dt_refdt_ref: 0.5 # 路径上的两个相邻姿态的默认距离dt_hysteresis: 0.1 # 允许改变的时域解析度的浮动范围global_plan_overwrite_orientation: True # 是否修正全局路径中的临时局部路径各点的朝向max_global_plan_lookahead_dist: 2.0 # 最大向前看距离feasibility_check_no_poses: 2 # 在判断生成的轨迹是否冲突时使用,此时设置为2,即从轨迹起点开始逐个检查。# 运动相关max_vel_x: 0.4 # 最大速度max_vel_x_backwards: 0.2 # 最大倒车速度, 设置为0或者负数将导致错误。减少倒车应该修改倒车权重,不改这里。max_vel_theta: 1.0 # 最大转向角速度, 跟 min_turning_radius 相关 (r = v / omega)acc_lim_x: 0.5 # 最大线加速度acc_lim_theta: 1.0 # 最大角加速度# ************************ 转向半径相关 ************************min_turning_radius: 0.5 # 小转弯半径。如果设为0,表示可以原地转弯。wheelbase: 0.31 # 只有在 cmd_angle_instead_rotvel为true时才有效cmd_angle_instead_rotvel: False # 是否将收到的角速度消息转换为操作上的角度变化。设置成 True 时,话题是 vel_msg# ***************************************************# 车体轮廓footprint_model: # types可选项: "point", "circular", "two_circles", "line", "polygon"type: "circular"# 对 type "circular" 有效的参数:radius: 0.17# 对 type "line" 有效的参数:# line_start: [0.0, 0.0]# line_end: [0.35, 0.0]# 对 type "two_circles" 有效的参数:# front_offset: 0.35# front_radius: 0.35# rear_offset: 0.35# rear_radius: 0.35# 对 type "polygon" 有效的参数:# vertices: [ [0.35, 0.0], [-0.2, -0.25], [-0.2, 0.25] ]# 到达目标的判断容差xy_goal_tolerance: 0.2yaw_goal_tolerance: 0.1# 障碍物相关min_obstacle_dist: 0.1 # 与障碍物的最小距离inflation_dist: 0.4 # 障碍物膨胀距离include_costmap_obstacles: True # 是否检测动态障碍物costmap_obstacles_behind_robot_dist: 1.0 # 身后多远距离内障碍物加入检测范围obstacle_poses_affected: 25 # 障碍物对附近多少个关键点产生影响costmap_converter_plugin: "" # costmap_converter 插件名称,这里不使用# 路径优化相关no_inner_iterations: 3 # 图优化optimizer的迭代次数no_outer_iterations: 3 # 外循环迭代次数penalty_epsilon: 0.1 # 为所有的惩罚项增加一个小的安全余量weight_max_vel_x: 2 # 平移速度的优化权重weight_max_vel_theta: 1 # 角速度的优化权重weight_acc_lim_x: 1 # 平移加速度的优化权重weight_acc_lim_theta: 1 # 角加速度的优化权重weight_kinematics_nh: 1000 # 非完整运动学的优化权重weight_kinematics_forward_drive: 1 # 向前移动的权重weight_optimaltime: 1 # 耗时权重weight_obstacle: 50 # 与障碍物保持距离的权重# 多线规划enable_homotopy_class_planning: True # 激活多线规划enable_multithreading: True # 多线程计算max_number_classes: 2 # 规划的路径线数上限selection_cost_hysteresis: 1.0 # 路径轨迹筛选入选的评价上限selection_obst_cost_scale: 1.0 # 障碍物成本在入选标准中的缩放倍率selection_alternative_time_cost: False # 时间成本是否要进行平方计算roadmap_graph_no_samples: 15 # 为创建 roadmap graph 而生成的样本数roadmap_graph_area_width: 5 # 关键点采样的宽度,单位为米。# 注意:示例文件省略了其他可能的TEB参数,例如关于同伦类规划的更多参数,# 调试参数 (如 publish_robot_conf, publish_traj_details, etc.)# 以及其他权重参数。此输出仅包含图像中可见的部分。

TEB 规划器快速调参

在运行 TEB 规划器进行导航时,可以通过启动一个 rqt_reconfigure 节点来快速调整参数。使用以下指令启动:

rosrun rqt_reconfigure rqt_reconfigure

启动后,左侧选择 move_base 并选中 TebLocalPlannerROS,在右侧即可动态调整参数。

调整完参数后,可以在 RViz 中观察导航效果,快速验证参数调整对导航的影响,提升调试效率。


在 RViz 中显示 TEB 的轨迹路径

为了在 RViz 中观察 TEB 规划器生成的实际执行的局部路径和想等,可以按照以下步骤进行设置:

1. 显示局部规划路径(即实际执行轨迹)

  • 点击左下角的 “Add” 按钮;
  • 添加 Path 类型;
  • 设置订阅话题为:/move_base/DWAPlannerROS/local_plan
  • 在样式中选择 Billboards(粗线条),这样轨迹显示更清晰。

2. 显示 TEB 预测的未来的位置

  • 再次点击 “Add”
  • 添加 PoseArray 类型;
  • 设置订阅话题为:/move_base/TebLocalPlannerROS/teb_poses

http://www.dtcms.com/wzjs/217685.html

相关文章:

  • 做外汇网站卖判刑多少年网络seo推广培训
  • 郑州seo规则seo搜索引擎优化就业前景
  • 河北seo网站开发什么是seo文章
  • 政府网站建设与管理规范淘宝推广工具
  • 重庆品牌网站建设公司苏州网站优化公司
  • php+mysql div+css网站建设 东莞域名查询seo
  • 阿里云网站建设 部署与发布考试百度论坛
  • 做网站哪个系统最好安卓优化大师手机版下载
  • 小型服务器做网站东莞排名优化团队
  • 网站建设的实验原理自助建站免费建站平台
  • 什么网站推广比较好建立网站步骤
  • 如何建立和设计公司的网站域名搜索引擎入口
  • 衡水网站建设服务沪深300指数基金
  • 都匀住房和城乡建设厅网站超链接友情外链查询
  • 百捷网站建设企业网站建设推广
  • 中央建设的最大未成年网站搜索引擎优化的流程是什么
  • 危机舆情公关公司苏州seo网络推广
  • 怎样访问简版网站台州网站建设
  • 东莞通汕头seo外包平台
  • 个体户经营范围网站建设怎样做企业宣传推广
  • 烟台网架公司河北seo平台
  • 中国东凤网站制作安全优化大师下载
  • 商城网站怎么做推广百度seo效果
  • 怎么把做的网站优化到百度小程序推广赚佣金平台
  • 网站建设使用技术企业seo如何优化
  • 莱特币做空国外网站软文兼职10元一篇
  • 在线做图表网站全媒体广告代理加盟靠谱吗
  • 南充商城网站建设搜索网页
  • 如何做解析网站百度官方网站登录
  • 黑龙江省建设教育协会网站百度问答一天能赚100块吗