teb教程8
融合动态障碍物
简介:考虑怎样把其他节点发布的动态障碍物考虑进来
1.本部分演示了动态障碍物该如何被包含到teb_local_planner中。
2.写一个简单的动态障碍物的发布器publish_dynamic_obstacles.py
#!/usr/bin/env python
import rospy, math, tf
from costmap_converter.msg import ObstacleArrayMsg, ObstacleMsg
from geometry_msgs.msg import Point32, QuaternionStamped, Quaternion, TwistWithCovariance
from tf.transformations import quaternion_from_euler
def publish_obstacle_msg():
pub = rospy.Publisher('/test_optim_node/obstacles', ObstacleArrayMsg, queue_size=)
rospy.init_node("test_obstacle_msg")
y_0 = -3.0
vel_x = 0.0
vel_y = 0.3
range_y = 6.0
obstacle_msg = ObstacleArrayMsg()
obstacle_msg.header.stamp = rospy.Time.now()
obstacle_msg.header.frame_id = "odom" # CHANGE HERE: odom/map
# Add point obstacle
obstacle_msg.obstacles.append(ObstacleMsg())
obstacle_msg.obstacles[].id =
obstacle_msg.obstacles[].polygon.points = [Point32()]
obstacle_msg.obstacles[].polygon.points[].x = -1.5
obstacle_msg.obstacles[].polygon.points[].y =
obstacle_msg.obstacles[].polygon.points[].z =
yaw = math.atan2(vel_y, vel_x)
q = tf.transformations.quaternion_from_euler(,,yaw)
obstacle_msg.obstacles[].orientation = Quaternion(*q)
obstacle_msg.obstacles[].velocities.twist.linear.x = vel_x
obstacle_msg.obstacles[].velocities.twist.linear.y = vel_y
obstacle_msg.obstacles[].velocities.twist.linear.z =
obstacle_msg.obstacles[].velocities.twist.angular.x =
obstacle_msg.obstacles[].velocities.twist.angular.y =
obstacle_msg.obstacles[].velocities.twist.angular.z =
r = rospy.Rate() # 10hz
t = 0.0
while not rospy.is_shutdown():
# Vary y component of the point obstacle
if (vel_y >= ):
obstacle_msg.obstacles[].polygon.points[].y = y_0 + (vel_y*t)%range_y
else:
obstacle_msg.obstacles[].polygon.points[].y = y_0 + (vel_y*t)%range_y - range_y
t = t + 0.1
pub.publish(obstacle_msg)
r.sleep()
if __name__ == '__main__':
try:
publish_obstacle_msg()
except rospy.ROSInterruptException:
pass
运行:
roslaunch teb_local_planner test_optim_node.launch
roslaunch mypublisher publish_dynamic_obstacles.py

3.设置规划器来考虑动态障碍物
启动rosrun rqt_reconfigure rqt_reconfigure;选中参数include_dynamic_obstacles,teb local planner使用一个常速度模型来预测障碍物将来的行为。现在的轨迹是根据时间和空间来避免障碍物而不是仅仅考当前障碍物的位置来避免。对于速度模型的估计精确性是很重要的,常速度假设是合理且满足的。

如果调节参数visualize_with_time_as_z_axis,可以可视化规划的和预测的速度的时间变化。设置该参数值为0.1。在rviz中的z轴被解释为时间轴,且可被扩展。也可以看到homotopy-class-planning把动态障碍物的预测考虑进去。

相关的参数
~<name>/min_obstacle_dist: Desired minimal distance from (static and dynamic) obstacles ~<name>/inflation_dist: Non-zero cost region around (static) obstacles ~<name>/include_dynamic_obstacles: Specify whether the motion of dynamic obstacles should be included (constant-velocity-model) or not. ~<name>/dynamic_obstacle_inflation_dist: Non-zero cost region around (dynamic) obstacles ~<name>/include_costmap_obstacles: Deactivate costmap obstacles completely ~<name>/costmap_obstacles_behind_robot_dist: Maximum distance behind the robot searched for occupied costmap cells. ~<name>/obstacle_poses_affected: Specify how many trajectory configurations/poses should be taken into account next to the closest one. ~<name>/weight_obstacle: Optimization weight for keeping a distance to static obstacles. ~<name>/weight_inflation: Optimization weight for inflation costs of static obstacles. ~<name>/weight_dynamic_obstacle: Optimization weight for keeping a distance to dynamic obstacles. ~<name>/weight_dynamic_obstacle_inflation: Optimization weight for inflation costs of dynamic obstacles. ~<name>/footprint_model: The robot footprint model
teb教程8的更多相关文章
- teb教程1
http://wiki.ros.org/teb_local_planner/Tutorials/Setup%20and%20test%20Optimization 简介:本部分关于teb怎样优化轨迹以 ...
- teb教程3
配置和运行机器人导航 简介:配置teb_local_planner作为navigation中local planner的插件 参考teb安装 由于局部代价地图的大小和分辨率对优化性能影响很大,因为占据 ...
- teb教程10 teb questions
http://wiki.ros.org/teb_local_planner/Tutorials/Frequently%20Asked%20Questions
- teb教程9
通过costmap_converter来跟踪和包含动态障碍物 简介:利用costmap_converter来很容易跟踪动态障碍物 1.costmap_converter中提供了一个插件称之为costm ...
- teb教程7
融合自定义的障碍物 简介:本部分讲解怎样考虑其他节点发布的多边形的障碍物. 1.在一些应用当中,可能不想依赖于代价地图或者想添加其他的除了点状的障碍物.你可以发送你自己的障碍物列表到teb_local ...
- teb教程6
代价地图的转换 简介:本部分关于怎样把代价地图转换插件应用到转换占据栅格costmap2d到几何形状来优化(测试阶段) teb_local_planner包支持costmap_converter插件, ...
- teb教程5
跟随全局规划器 简介:本部分是关于如何配置局部规划器严格跟随全局规划,也包括调节在时优和路径跟随上的权衡. 1.先看一下via-points当前的优化行为:启动下面节点 roslaunch teb_l ...
- teb教程4
障碍物避障以及机器人足迹模型 简介:障碍物避障的实现,以及必要参数的设置对于机器人足迹模型和其对应的影响 1.障碍物避障是怎样工作的 1.1 惩罚项 障碍物避障作为整个路径优化的一部分.显然,优化是找 ...
- teb教程2
http://wiki.ros.org/teb_local_planner/Tutorials/Inspect%20optimization%20feedback 检查优化反馈 简介:怎样检查优化的轨 ...
随机推荐
- NOIP后一波总结
我的山寨较为可靠分数为305(洛谷是真的水~显然不能用啊,果断换了一组合适的数据) 据大神们估计,得奖的分数在280, 我肯定是没有啥希望了.(我旁边的lxy同学从初二开始,每次以超分数线至少60分的 ...
- db2缓冲池
CREATE BUFFERPOOL DEMOBP IMMEDIATE SIZE 250 AUTOMATIC PAGESIZE 4 K ; CREATE BUFFERPOOL DEMOBP IMMED ...
- 支持跨域的html元素
image javascript iframe link
- linux c 链接详解4-共享库
4. 共享库 4.1. 编译.链接.运行 组成共享库的目标文件和一般的目标文件有所不同,在编译时要加-fPIC选项,例如: $ gcc -c -fPIC stack/stack.c stack/pus ...
- rsync nfs 实时同步,结合实战
目录 rsync nfs 实时同步,实战 一.部署rsync服务端(backup) 二.部署rsync客户端(nfs,web01) 三.部署web代码(web01) 四.NFS服务端部署(nfs) 五 ...
- 以python为例讲解闭包机制
以python为例讲解闭包机制 缘起 在学习JS的过程中,总是无可避免的接触到闭包机制,尤其是接触到react后,其函数式的编程思想更是将闭包发扬光大,作为函数式编程的重要语法结构,python自然也 ...
- ambari安装hadoop
前言 hadoop除了社区版之外,还有两个主流的分支,一个是cdh版本,一个是hdp版本,其中ambari是hdp版本的部署工具 1.ambari安装准备 https://docs.hortonwor ...
- iview下拉树组件
iview.vue.jq等自行引用 iview.js和iview.css版本是iview@3.4.2 <!DOCTYPE html> <html lang="en" ...
- 【leetcode】980. Unique Paths III
题目如下: On a 2-dimensional grid, there are 4 types of squares: 1 represents the starting square. Ther ...
- youlexuan父类配置
<!-- 集中定义依赖版本号 --> <properties> <junit.version>4.12</junit.version> ...