Skip to content

遅延のボトルネック解析

https://github.com/ibis-ssl/crane/issues/130

Timer/Callback駆動

まずは現状分析

graph TD
    LP["`Callback
    **Local Planner**
    Immediately`"]
    PS[Play Switcher]
    GA[Game Analyzer]

    subgraph interface
        VC["`100Hz
        **Vision Component**
        Immediately`"]
        GrC[GrSim Component]
        GCC[Game Controller Component]
        Receiver[Robot Receiver]
    end

    SC["`WorldModel Callback
    **Session Controller**
    Immediately`"]
    SS[Sim Sender]

    VT["`100Hz
        **Vision Tracker**
        Immediately`"]
    WP["`Callback
        **World Model Publisher**
        30Hz`"]

    subgraph software
        GrSim[GrSim]
        GC[Game Controller]
    end

    WP -- /world_model -->  SC
    WP -- /world_model -->  GA
    GA -- /game_analysis -->  SC


    GrC -. UDP .->  GrSim

    GrSim -. UDP .->  GrC
    GrC -- /geometry -->  WP

    GrSim -. UDP .->  VC


    VC -- /detection -->  VT
    VT -- /detection_tracked -->  WP

    GC -. UDP .->  GCC
    GCC -- /referee -->  PS
    PS -- /play_situation --> SC
    SC -- /control_targets --> LP
    LP -- /robot_commands -->  SS
    SS -- /commands -->  GrC

    Receiver -- /feedback -->  WP
  • 下流はほとんどコールバック駆動なので良し
  • Vision Component
    • 非同期で受け取ってUDPコールバックにしても良いかも
    • これは絶対に受け取った時刻を一緒に情報として持っておくべき
  • Vision Tracker
    • フィルター処理はタイマー駆動必要かも
    • これ以降の処理はコールバックで一気通貫したい
      • 柔軟性的にはフィルター処理コールバック周期と出力周期は変えたいかも
      • いい感じ補間処理入れたら出力周期変えてもpublish時の最新の情報を出せる?