ROS
文章平均质量分 72
csshell2002
这个作者很懒,什么都没留下…
展开
-
增加超声波传感器
1.首先要定义urdf。定义好要使用的sensor的角度,位置,和frame名字。2.然后将sensor数据在kobuki底座中读取出来,发送到一个topic上。3.给costmap2d中增加一个layer监听上述topic.move_base package包含了planner,用于指定一个目的地,规划路径。他含有两个costmap,一个global的,一个local的。原创 2015-09-29 18:18:13 · 527 阅读 · 0 评论 -
movebase导航和地图数据的使用 - 10 static layer数据的生成和使用
Static layer的数据来源方式两种:1. staticLayer可以从mapserver的maptopic直接接受数据。StaticLayer::incomingMap是callback.这种情况是直接使用已有的map数据。2. 还有一种得到map数据的方法是从gmapping拿到实时发现的地图数据:navigation/map_server/src/main.cpp:174:原创 2015-11-10 17:50:35 · 873 阅读 · 0 评论 -
movebase导航和地图数据的使用 - 7 global costmap和local costmap的区别和用途
两份costmap如下:planner_costmap_ros_ = newcostmap_2d::Costmap2DROS("global_costmap", tf_);controller_costmap_ros_ = newcostmap_2d::Costmap2DROS("local_costmap", tf_);看看区别:他们的参数分别如下;local_costmap原创 2015-11-10 17:47:17 · 3500 阅读 · 0 评论 -
movebase导航和地图数据的使用 - 1 move base overview
The move_base package provides an implementation of an action (seethe actionlibpackage) that, given a goal in theworld, will attempt to reach it with a mobile base. Themove_base node links together原创 2015-11-10 17:37:06 · 763 阅读 · 0 评论 -
movebase导航和地图数据的使用 - 6 local planner如何使用global planner计算出的路径规划和自己的local costmap数据完成避障
具体需要看看一下localplanner如何循环控制底座移动。Globalplanner会使用dijkstra算法找到一条最短路径plan叫做globalplan,因为planthread一直在运行,所以这个plan一直在更新,所以只要globalcostmap一直在变化,那么这个globalplan也会一直变化。有了globalplan,就可以把他设置给localplanner.原创 2015-11-10 17:44:48 · 2363 阅读 · 0 评论 -
movebase导航和地图数据的使用 - 11 voxel layer数据的生成和使用
Voxel layer包含在localcostmap和globalcost map里面。是obstaclelayer的一个子类。目前voxellayer数据来源于雷达扫描。我们增加的超声波数据也成为一种voxellayer.我们看看costmap_common_params.yaml的内容:obstacle_layer: enabled: true max_obstacle原创 2015-11-10 17:52:02 · 1888 阅读 · 0 评论 -
movebase导航和地图数据的使用 - 3 movebase的初始化分析
MoveBase::MoveBase(tf::TransformListener& tf) : tf_(tf), as_(NULL), planner_costmap_ros_(NULL), controller_costmap_ros_(NULL), bgp_loader_("nav_core","nav_core::BaseGlobalPlanner"), blp_load原创 2015-11-10 17:40:19 · 1258 阅读 · 0 评论 -
movebase导航和地图数据的使用 - 9 地图数据的构成
rviz中能看到map,global map, local map.三种地图,其实map就是fastslam建立的地图,数据来自雷达。globalmap和localmap都是costmap,他们都由各自的layers合并而成。1. rviz中的map来自gamapping发送的/maptopic数据,或者也可以是来自mapserver发送的/maptopic数据,具体看是在建图还是在导原创 2015-11-10 17:49:39 · 1046 阅读 · 0 评论 -
movebase导航和地图数据的使用 - 5 actionlib在movebase中的使用
http://wiki.ros.org/actionlibhttp://wiki.ros.org/actionlib/TutorialsSimpleActionServer和SimpleActionClient基于actionlib实现。client和server之间靠ros的topic或者service机制通讯。actionServer向client提供了一种可以发送reques原创 2015-11-10 17:42:20 · 2045 阅读 · 0 评论 -
movebase导航和地图数据的使用 - 4 movebase 如何处理target请求
1. 第三方向/move_base_simple/goaltopic发送消息,消息包含一个新的目标=》MoveBase::goalCB函数响应。2. MoveBase::goalCB向/move_base/goal转发消息。我们有理由相信。向/move_base/goal发送的消息会导致actionserver的相应callback被调用因为movebase建立了一个act原创 2015-11-10 17:41:41 · 1180 阅读 · 1 评论 -
movebase导航和地图数据的使用 - 2 turtlebot中Move base的launch文件分析
ROS navigation stack with velocity smoother and safety(reactive) controller --> velocity_smoother.launch.xml"/>safety_controller.launch.xml"/> //所有参数都会默认位于nodename “mo原创 2015-11-10 17:39:02 · 1069 阅读 · 0 评论 -
movebase导航和地图数据的使用 - 12 为传感器增加一个layer
1.需要修改./src/navigation-full/turtlebot_apps/turtlebot_navigation/param/costmap_common_params.yaml文件。模仿obstaclelayer,增加一个ultrasoniclayer,定义如下.ultrasonic_layer:enabled: truemax_obstacle_heigh原创 2015-11-10 17:52:59 · 982 阅读 · 0 评论 -
movebase导航和地图数据的使用 - 8 导航中recovery的逻辑
什么时候会触发recovery?enum RecoveryTrigger{PLANNING_R, //无法算出planCONTROLLING_R, //local planner无法利用localcostmap算出一个localplan,从而无法得到速度命令OSCILLATION_R,//机器人在不断抖动};1. planthread里,如果发现无法算出最新原创 2015-11-10 17:48:34 · 834 阅读 · 0 评论 -
urdf的例子分析
//一个圆柱在正中间。 //一个box. //此leg先沿着自己的原点,也就是base_to_right_leg的坐标沿y轴旋转1.5...,然后沿z轴负方向移动0.3. //链接点,这个链接的位置是从原点向x(左边)偏移0.22,向z(上方)偏移0.25,这个链接点的位置就成了right_leg的原点原创 2015-10-08 11:38:45 · 315 阅读 · 0 评论 -
给local map增加超声波传感器数据的各个步骤
1.首先要定义urdf。定义好要使用的sensor的角度,位置,和frame名字。2.然后将sensor数据在kobuki底座中读取出来,发送到一个topic上。3.给costmap2d中增加一个layer监听上述topic.一些修改配置文件的资料可见:http://wiki.ros.org/navigation/Tutorials/RobotSetupcostma原创 2015-10-08 10:20:56 · 1344 阅读 · 0 评论 -
rosnode中使用xmlrpc建立topic之间链接的一些知识点
rosmaster是一个中转。每个node都是从roscpp中继承了一堆东西。1. topic的消息如何来的当一个nodesubscribe一个topic时,该node就会建立一个subscription结构。含有一个subscriptionQueue,用来保存收到的msg.谁往queue里面填冲消息?首先了解一下TransportPublisherLink,对原创 2015-10-13 18:52:12 · 1251 阅读 · 1 评论