Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SI2020発表・・・データ変換指向ミドルウェアの紹介

ysuga
December 14, 2020

 SI2020発表・・・データ変換指向ミドルウェアの紹介

コンポーネント指向ミドルウェアはモジュール設計が困難な結果として再利用性が低いと考え,より小さなモジュールとして,データの入出力変換に着目したロボット等の実体システム用ミドルウェアを開発しています.

デモ動画 https://youtu.be/uJBAAEBUtt8

ysuga

December 14, 2020
Tweet

More Decks by ysuga

Other Decks in Technology

Transcript

  1. ૣҴాେֶɾגࣜձࣾSUGAR SWEET ROBOTICS ɹੁ ༎थ ૣҴాେֶɹ৿ ༟ل ૣҴాେֶɾ࢈ۀٕज़૯߹ݚڀॴɹඌܗ ఩໵ σʔλม׵ʹண໨ͨ͠ϛυϧ΢ΣΞϞσϧʹ͓͚ΔσόΠεྨͷҐஔͷѻ͍ʹؔ͢Δٞ࿦

    σʔλม׵ʹண໨ͨ͠ϛυϧ΢ΣΞϞσϧʹ͓͚ΔσόΠεྨͷҐஔ ͷѻ͍ʹؔ͢Δٞ࿦ ิ଍ࢿྉɿ OBMͷجૅ 4*" εϙοτϥΠτd ΠϯλϥΫςΟϒd
  2. എܠɿίϯϙʔωϯτܕϩϘοτϛυϧ΢ΣΞ͸࠶ར༻ੑ͕௿͍ • ίϯϙʔωϯτͱ͸ɾɾɾঢ়ଶΛΧϓηϧԽ͠ɼΠϯλʔϑ ΣʔεΛհͯ͠ঢ়ଶΞΫηεɾมߋ • OpenRTM-aist … RT-Component (Configuration, DataPort,

    ServicePort) • ROS … Node (Parameter, Topic, Service, Action) • ΠϯλʔϑΣʔεͷ඼࣭ʹΑͬͯ࠶ར༻ੑ͕௿Լ • ࢖ΘΕํΛҙࣝͨ͠ઃܭ͸ࠔ೉ • ޙʑͷγεςϜվमΛݟӽͯ͠ઃܭ͕ඞཁ • ಉ͡σʔλͷ΍ΓऔΓͰ͋Γͳ͕Βෳ਺ͷํ͕ࣜ͋Γ৑௕ • ಺෦ঢ়ଶ͕؍ଌͰ͖ͳ͍৔߹͸ίʔυฤू͕ඞཁ ঢ়ଶ ม׵ ೖྗ Πϯλʔ ϑΣʔε ग़ྗ Πϯλʔ ϑΣʔε
  3. σʔλม׵ࢦ޲ܕϩϘοτ༻ϛυϧ΢ΣΞ • ίϯϙʔωϯτΛঢ়ଶͱσʔλม׵ʹ෼ղ • σʔλม׵ΛγεςϜͷߏ੒ཁૉͷҰͭͱ͢Δ • σʔλม׵͸ೖྗͱग़ྗͷؒͷม׵ͷΈɽঢ়ଶͳ͠ • ঢ়ଶ͸ม׵ʹೖྗͤͨ͞Γɼग़ྗͤͨ͞ΓͰ͖Δ •

    ʮม׵ʯ͕ओ໾ͷϛυϧ΢ΣΞͳͷͰɼม׵ࢦ޲ܕϛ υϧ΢ΣΞ (Operation Based Middleware) ͱ໊෇͚ͨ • ม׵Λ͜͜Ͱ͸ʮOperationʯͱݺͿ͜ͱʹ͢Δ ঢ়ଶ ม׵ ೖྗ ग़ྗ ม׵ ม׵ ೖྗ ग़ྗ
  4. σʔλม׵ (Operation) ͱ͸ঢ়ଶΛ࣋ͨͳ͍ೖग़ྗαʔϏε • ม׵͸γεςϜۭؒʹଘࡏ͢ΔαʔϏε • Callૢ࡞ • Ҿ਺σʔλΛ༩͑Δͱग़ྗΛฦ٫ •

    Executeૢ࡞ • ม׵͸૬ޓʹ઀ଓͰ͖Δ • Executeૢ࡞Λ͢Δͱ઀ଓݩ͔ΒσʔλΛड͚औ ΓɼσʔλΛ઀ଓઌʹૹ৴͢Δ • ઀ଓ “Connection” • Pullܕ : Execute͞ΕΔͱσʔλΛཁٻ • Pushܕ : Executeͨ͠ޙσʔλΛૹ৴ • Eventܕ : Pushಉ༷σʔλૹ৴ޙɼExecuteΛ࿈࠯ Joystick Get Data ପԁ͸OperationΛද͢ 2. ฦ٫஋ 1. Call (Ҿ਺Λ͢΂ͯ౉͢) JoyStick Data (Axis, Buttons) Velocity2D (vx, vy, vth) JoyToVel Vehicle Set Vel Joystick Get Data Configuration Data (gains) ۣܗ͸઀ଓ͞ΕͨσʔλܕΛ ද͢ϥϕϧ ໰୊఺: I/O΁ͷΞΫηε͸ঢ়ଶͷอ͕࣋ෆՄܽ 1.Execute 1.Execute
  5. Containerͱ͸σʔλ֨ೲثͰContainerOperationͷΈΞΫηεՄೳ • ঢ়ଶΛอ࣋͢ΔContainerΛಋೖ • Container͸ͨͩͷσʔλɽCݴޠͷStructɽ • Container͸ࣗ਎ͷ഑Լʹઐ༻OperationΛ΋ͭ • ͜ΕΛContainerOperationͱݺͿɽ •

    Containerͷத਎ʹΞΫηεͰ͖Δͷ͸ ContainerOperationͷΈ • ୈ̍Ҿ਺ʹContainerΛ෦෼ద༻ͤͨ͞Operation • ContainerOperation͸OperationͳͷͰɼCall΍઀ ଓɼExecute͕Մೳ • ContainerҎ֎ͷҾ਺ʹΑͬͯContainer಺෦ঢ়ଶΛ มߋͨ͠Γɼग़ྗͱͯ͠Container಺෦ঢ়ଶΛऔΓ ग़͠Մೳ Vehicle Container Joystick Container JoyStick Data (Axis, Buttons) Velocity2D (vx, vy, vth) JoyToVel Vehicle Set Vel Joystick Get Data Configuration Data (gains) Vehicle Get Odom Vehicle Initialize Joystick Initialize ੺ͷۣܗ͸Container ͜ΕΒͷػೳΛݺͼग़͢ओମ͸Կ͔
  6. ExecutionContext͸OperationΛExecute͢Δओମ • OperationΛExecute͢Δओମͱͯ͠ ExecutionContext (EC) Λಋೖ • EC͸START/STOPͷঢ়ଶΛ࣋ͭ • γεςϜͷ։࢝͸ECͷSTARTʹରԠ

    • EC͸छྨΛ࣋ͭɽਤதͷEC͸TimerEC • TimerEC͸ঢ়ଶ”rate”Λ࣋ͭ • TimerEC͸STARTঢ়ଶͰSTARTঢ়ଶ ʹBind͞ΕͨOperationΛઃఆ͞Εͨ पظతʹExecute͢Δ Vehicle Container Joystick Container JoyStick Data (Axis, Buttons) Velocity2D (vx, vy, vth) JoyToVel Vehicle Set Vel Joystick Get Data Configuration Data (gains) Vehicle Get Odom Vehicle Initialize Joystick Initialize Timer Execution Context START STOP Vehicle Container Joystick Container ྘ͷۣܗ͸Execution Context Eventܕ઀ଓͰExecute͕࿈࠯ͯ͠σʔλ͕Vehicle·Ͱಧ͘ σόΠεͷॳظԽ΍ɼΞϓϦέʔγϣϯશମͷঢ়ଶભҠΛ؅ཧ ͢Δʹ͸Ͳ͏͢Δ͔
  7. GenericFSMಋೖʹΑͬͯγεςϜશମͷৼΔ෣͍Λγϯϓϧʹఆٛ • ঢ়ଶϚγϯGenericFSMΛಋೖ͢Δ • JSONͳͲͷઃఆϑΝΠϧͰঢ়ଶϚγϯͱભҠΛఆٛ • ঢ়ଶʹBind͞ΕͨOperationΛon_entry࣌ʹexecute ͢Δ (FSMঢ়ଶભҠͰॳظԽॲཧɼΤϥʔରԠɼऴྃ ॲཧͳͲ͕Մೳ)

    • Bind͞ΕͨECͷঢ়ଶʹରͯ͠on_entry࣌ʹભҠΛཁ ٻՄೳ (FSMঢ়ଶભҠͰECΛStartՄೳ) • Bind͞ΕͨFSMͷঢ়ଶʹରͯ͠on_entry࣌ʹભҠΛ ཁٻ (FSMͷ֊૚Խ͕Մೳ) Vehicle Container Joystick Container JoyStick Data (Axis, Buttons) Velocity2D (vx, vy, vth) JoyToVel Vehicle Set Vel Joystick Get Data Configuration Data (gains) Vehicle Get Odom Vehicle Initialize Joystick Initialize Timer Execution Context START STOP Generic Finite State Machine RUNNING STOPPED Vehicle Container Joystick Container GFSM͕STOPPED͔ΒRUNNINGʹભҠ͢ΔͱॳظԽ͕ߦΘ ΕͯTimerEC͕START͢Δ ੨ͷۣܗ͸Generic FSMΛදݱ
  8. ϞδϡʔϧͷίϯϑΟάϨʔγϣϯػೳ͸Ҿ਺ͷ෦෼ద༻ • ίϯϑΟάϨʔγϣϯ͸Ͳ͜΁ߦͬͨʁ • OperationͷೖྗόοϑΝΛ࢖͏ • πʔϧ΍ىಈ࣌ͷεΫϦϓτ͔Βೖྗό οϑΝͷ஋ΛมߋͰ͖ΔΑ͏ʹ࣮૷ • ઀ଓ͕ͳ͚Ε͹όοϑΝ಺ͷσʔλΛ࢖

    ͏ͷͰɼ͜ΕΛίϯϑΟάϨʔγϣϯͱ ͢Ε͹ྑ͍ Vehicle Container Joystick Container JoyStick Data (Axis, Buttons) Velocity2D (vx, vy, vth) JoyToVel Vehicle Set Vel Joystick Get Data Configuration Data (gains) Vehicle Get Odom Vehicle Initialize Joystick Initialize Timer Execution Context START STOP Generic Finite State Machine RUNNING STOPPED Vehicle Container Joystick Container ग़ྗOperation͕ແ͍ೖྗ΋JoyToVel͸ೖྗόοϑΝΛ࣋ ͪɼͦͷ஋ΛExecute࣌ʹ࢖͏ͷͰ͜ΕΛίϯϑΟάʹ͢Δ
  9. ϝϦοτɾσϝϦοτ • Ϟδϡʔϧͷઃܭ͕γϯϓϧʹ (Operation͸୯७ͳIn-Out) • ಉ͡σʔλ௨৴ͰσʔλϑϩʔܕɼϦϞʔτݺग़ܕɼίϯϑΟάϨʔγϣϯͷΑ͏ͳ৑௕ͳߏ͑͸ෆཁͰ͸ͳ͍͔ʁ • ࢖ΘΕํΛҙࣝͨ͠ઃܭ͕ඞཁʹͳ͍ͬͯΔ͕ɼຊ౰ʹඞཁ͔ʁ • ContainerͰঢ়ଶ؅ཧ

    • ঢ়ଶมߋ౳͸Ӆṭ͠ͳͯ͘΋௥੻Ͱ͖Ε͹ྑ͍ͷͰ͸ͳ͍͔ʁ • ContainerOperation͸ޙ͔Β௥ՃՄೳʹ͢Ε͹࠶ར༻ੑ͕૿͢ • Operation͸ςετ͕͠΍͍͢ • ೖग़ྗηοτ͚ͩͰςετΛੜ੒Ͱ͖ΔɽConfiguration΍؍ଌෆՄೳͳঢ়ଶ͕͋Δͱͦ͏͸ߦ͔ͳ͍ • Ϟδϡʔϧͷཻ౓͕খ͘͞ͳΓӡ༻͕൥ࡶʹ • ؅ཧɾӡ༻πʔϧͰΧόʔͰ͖Δ͸ͣ • ྫ͑͹ɼγεςϜϨϕϧͰͷ࠶ར༻ੑͷ޲্ɽOpenRTM-aistͰ͸CompositeRTCɼROSͰ͸roslauncͷ<include>