融合自定义的障碍物

简介:本部分讲解怎样考虑其他节点发布的多边形的障碍物。

1.在一些应用当中,可能不想依赖于代价地图或者想添加其他的除了点状的障碍物。你可以发送你自己的障碍物列表到teb_local_planner包里面,通过指定话题/obstacles.

下面的消息类型costmap_converter/ObstacleArrayMsgcostmap_converter包的一部分。说明了以下障碍物的类型:

点状障碍物:提供了单个顶点的几何形状;

圆圈障碍物:提供了单个顶点且非零半径的几何形状;

线障碍物:提供了两个顶点的几何形状;

多边形障碍物:提供了不只2个顶点的多边形;

2.写一个简单的障碍物发不器

创建一个简单的python节点类发不一些障碍物;对于规划部分,会运行test_optim_node节点。如下publish_obstacles.py

    #!/usr/bin/env python
import rospy, math
from costmap_converter.msg import ObstacleArrayMsg, ObstacleMsg
from geometry_msgs.msg import PolygonStamped, Point32 def publish_obstacle_msg():
rospy.init_node("test_obstacle_msg") pub = rospy.Publisher('/test_optim_node/obstacles', ObstacleArrayMsg, queue_size=) 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 = # Add line obstacle
obstacle_msg.obstacles.append(ObstacleMsg())
obstacle_msg.obstacles[].id =
line_start = Point32()
line_start.x = -2.5
line_start.y = 0.5
line_end = Point32()
line_end.x = -2.5
line_end.y =
obstacle_msg.obstacles[].polygon.points = [line_start, line_end] # Add polygon obstacle
obstacle_msg.obstacles.append(ObstacleMsg())
obstacle_msg.obstacles[].id =
v1 = Point32()
v1.x = -
v1.y = -
v2 = Point32()
v2.x = -0.5
v2.y = -1.5
v3 = Point32()
v3.x =
v3.y = -
obstacle_msg.obstacles[].polygon.points = [v1, v2, v3] r = rospy.Rate() # 10hz
t = 0.0
while not rospy.is_shutdown(): # Vary y component of the point obstacle
obstacle_msg.obstacles[].polygon.points[].y = *math.sin(t)
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_obstacles.py

相关参数:

在规划中,与自定义障碍物相关的参数

~<name>/min_obstacle_dist: Desired minimal distance from 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 obstacles.

~<name>/footprint_model: The robot footprint model 

teb教程7的更多相关文章

  1. teb教程1

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

  2. teb教程8

    融合动态障碍物 简介:考虑怎样把其他节点发布的动态障碍物考虑进来 1.本部分演示了动态障碍物该如何被包含到teb_local_planner中. 2.写一个简单的动态障碍物的发布器publish_dy ...

  3. teb教程3

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

  4. teb教程10 teb questions

    http://wiki.ros.org/teb_local_planner/Tutorials/Frequently%20Asked%20Questions

  5. teb教程9

    通过costmap_converter来跟踪和包含动态障碍物 简介:利用costmap_converter来很容易跟踪动态障碍物 1.costmap_converter中提供了一个插件称之为costm ...

  6. teb教程6

    代价地图的转换 简介:本部分关于怎样把代价地图转换插件应用到转换占据栅格costmap2d到几何形状来优化(测试阶段) teb_local_planner包支持costmap_converter插件, ...

  7. teb教程5

    跟随全局规划器 简介:本部分是关于如何配置局部规划器严格跟随全局规划,也包括调节在时优和路径跟随上的权衡. 1.先看一下via-points当前的优化行为:启动下面节点 roslaunch teb_l ...

  8. teb教程4

    障碍物避障以及机器人足迹模型 简介:障碍物避障的实现,以及必要参数的设置对于机器人足迹模型和其对应的影响 1.障碍物避障是怎样工作的 1.1 惩罚项 障碍物避障作为整个路径优化的一部分.显然,优化是找 ...

  9. teb教程2

    http://wiki.ros.org/teb_local_planner/Tutorials/Inspect%20optimization%20feedback 检查优化反馈 简介:怎样检查优化的轨 ...

随机推荐

  1. keepalive+nginx

    1Nginx+keepAlived负载均衡高可用1.1Nginx+keepAlive架构图 1.1.1主机宕机 1.1.2主机恢复 1.1.3高可用环境 两台nginx,一主一备:192.168.10 ...

  2. Droppable(放置组件)

    一.class加载方式 <div id="pop" class="easyui-droppable" style="width: 400px;h ...

  3. 初始 vue

    1.js,jQuery编程范式:命令式编程 vue编程范式:声明式编程 v-for   遍历数组内容 v-on: click   监听点击事件,语法糖 @click el: 类型:string | H ...

  4. 三、bootstrap-treeview

    一.bootstrap-treeview 修饰标签为徽章 参考 https://www.cnblogs.com/bin521/p/8403588.html

  5. PROXY——代理模式

    代理,说白了就是中介.假设有俩对象A和B,A想访问B,但是根据迪米特法则,我们不能喝陌生人说话,简而言之就是A要减少知道B的相关情况,要降低A与B的耦合度.这时我们使用中介C,而C拥有B的相关情况,A ...

  6. The Preliminary Contest for ICPC Asia Xuzhou 2019 I J

    I. query 题意:给出n的一个排列,有m个询问[l,r],询问[l,r]直接有倍数关系的pair个数. 解法:比赛完之后听说是原题,但是我没做过呀,做题太少了qwq.首先因为数字是1-n的,所以 ...

  7. Failed to resolve com.android.support:support-compat:25.4.0

    3down votefavorite   I am trying to include this library to my project by adding compile 'jp.wasabee ...

  8. 三、Centos7安装Mysql

    1.到服务器下载的链接 wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm 2.执行命令 sudo r ...

  9. 微信小程序学习一 微信小程序的四个基本文件

    微信小程序有四种类型的文件 js 类型文件 小程序的逻辑代码文件 小程序对js es6的处理比较友好,基本上我们的es6语法都需要使用babel插件去转化成es5(具体是什么原因,自己可以去了解一下) ...

  10. mysql查询表的创建时间

    mysql查询表的创建时间 查询语句: SELECT table_name,create_time FROM information_schema.TABLES;