ROS Navigation源代码剖析(4)-move_base global planner 线程工作流程

4.2.2 global planner Thread工作过程

   Global planner的处理过程定义在函数 void MoveBase::planThread()中。

   工作流程如下:

       1 此线程启动之后,会处理等待状态,直到action server接收到goal请求或者自己等待时间到期后把它唤醒。

          两个线程之间通过runPlanner 变量进行同步,action server会把它置为true。

          

        2 获取goal信息,将路径规划的buffer清空

            

        3 调用makePlan()函数选择全局路径

           MoveBase::makePlan()函数最终会调用配置的全局路径规划器的makePlan()函数进行实际的全局路径计算

           

            bool MoveBase::makePlan()

            {  

                   

               }

       

       4 如果得到了全局路径规划,则

              赋值最新的路径规划到latest_plan_

              把new_global_plan_置为true

              state_ = CONTROLLING;

              

       

      5  如果没有得到全局路径,并且state_==PLANNING

              机器人此时没有处于运动中。

              如果planning_retries_没有超过配置值,则

                    回到步骤1,重新选路。

              如果超过了配置值,则

                    state_ = CLEARING;

                    runPlanner_ = false;

                    publishZeroVelocity();

       6  根据planner_frequency_做sleep

       回到步骤1,重新循环。

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值