teb教程7
融合自定义的障碍物
简介:本部分讲解怎样考虑其他节点发布的多边形的障碍物。
1.在一些应用当中,可能不想依赖于代价地图或者想添加其他的除了点状的障碍物。你可以发送你自己的障碍物列表到teb_local_planner包里面,通过指定话题/obstacles.
下面的消息类型costmap_converter/ObstacleArrayMsg是costmap_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的更多相关文章
- teb教程1
http://wiki.ros.org/teb_local_planner/Tutorials/Setup%20and%20test%20Optimization 简介:本部分关于teb怎样优化轨迹以 ...
- teb教程8
融合动态障碍物 简介:考虑怎样把其他节点发布的动态障碍物考虑进来 1.本部分演示了动态障碍物该如何被包含到teb_local_planner中. 2.写一个简单的动态障碍物的发布器publish_dy ...
- 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教程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 检查优化反馈 简介:怎样检查优化的轨 ...
随机推荐
- (转)收集 Spring Boot 相关的学习资料,Spring Cloud点这里 重点推荐:Spring Boot 中文索引
推荐博客 纯洁的微笑-Spring Boot系列文章 林祥纤-从零开始学Spring Boot Mkyong-Spring Boot教程(国外) baeldung-Spring Boot教程(国外) ...
- ab(http)与abs(https)压测工具
在学习ab工具之前,我们需了解几个关于压力测试的概念 吞吐率(Requests per second) 概念:服务器并发处理能力的量化描述,单位是reqs/s,指的是某个并发用户数下单位时间内处理的请 ...
- java web项目的https配置
1.进入到jdk下的bin目录 keytool -v -genkey -alias tomcat -keyalg RSA -keystore d:/tomcat.keystore -validity ...
- 【Flutter学习】基本组件之BottomNavigationBar底部导航栏
一,概述 BottomNavigationBar即是底部导航栏控件,显示在页面底部的设计控件,用于在试图切换,底部导航栏包含多个标签.图标或者两者搭配的形式,简而言之提供了顶级视图之间的快速导航. 二 ...
- spring boot中读取配置文件的两种方式
application.properties test.name=测试 test.url=www.test.com 1.@Value注解 在controller里可以这样直接调用 @Value(&qu ...
- AcWing 232. 守卫者的挑战 (期望DP)打卡
题目:https://www.acwing.com/problem/content/description/234/ 题意:有n次挑战,每次挑战获胜可以得到一个地图碎片值为-1 或者 可以得到一个 ...
- POJ 3904 (莫比乌斯反演)
Stancu likes space travels but he is a poor software developer and will never be able to buy his own ...
- springboot-redis相关配置整理
1.pom.xml引入对应数据文件 <dependency> <groupId>org.springframework.boot</groupId> <art ...
- P1476 休息中的小呆
P1476 休息中的小呆 题目描述 当大家在考场中接受考验(折磨?)的时候,小呆正在悠闲(欠扁)地玩一个叫“最初梦想”的游戏.游戏描述的是一个叫pass的有志少年在不同的时空穿越对抗传说中的大魔王ch ...
- C++之前置自增与后置自增
关于前置自增与后置自增的区别我是参考这里:http://bbs.bccn.net/thread-454977-1-1.html 简单复述下,比如++x; 与 x++; 在C中,++x这个表达式的值为原 ...