Asynkron multi-body ramverk

AMBF
Utvecklare Adnan Munawar
Initial release 2019 ; 4 år sedan ( 2019 )
Förvar github .com /WPI-AIM /ambf
Skrivet i C++ , Python
Operativ system Linux , macOS
Typ Robotsimulator

Asynchronous multi-body framework ( AMBF ) är en mångsidig 3D-simulator för robotar med öppen källkod utvecklad i april 2019. Detta multi-body-ramverk ger en dynamisk simulering i realtid av flera kroppar som robotar, fria kroppar och multi-länkar pussel, parat med haptisk interaktion i realtid med olika inmatningsenheter. Ramverket integrerar en riktig kirurgmästarkonsol, haptisk eller inte, för att styra simulerade robotar i realtid. Denna funktion resulterar i att simulatorn används i realtidsträningsapplikationer för kirurgiska och icke-kirurgiska uppgifter. Det erbjuder möjligheten att interagera med mjuka kroppar för att simulera kirurgiska uppgifter där vävnader är föremål för deformationer. Det tillhandahåller också en Python-klient för att enkelt interagera med de simulerade kropparna och träna neurala nätverk på realtidsdata med in-loop-simulering. Den innehåller ett brett utbud av robotar, gripdon, sensorer, pussel och mjuka kroppar. Varje simulerat objekt representeras som ett afObject; likaså representeras simuleringsvärlden som en afWorld . Båda använder två kommunikationsgränssnitt: tillstånd och kommando. Genom kommandot State kan objektet skicka data utanför simuleringsmiljön, medan kommandot tillåter att använda kommandon till det underliggande afObject.

AMBF-simulatorn använder flera externa paket inklusive CHAI-3D för integration av inmatningsenheter, Bullet Physics för simulering av stela och mjuka kroppar, Open-GL , GLFW .

Den är kompatibel med Ubuntu 16.04 och Ubuntu 18.04 men den har även testats på macOs Maverick och macOS Mojave.

Simulatorn hittar tillämpningar inom många områden som simulering av flera kroppar, manipulering av robotmanipulatorer, träning i realtid för kirurgiska och icke-kirurgiska uppgifter och förstärkningsinlärning.

AMBF filformat

Det asynkrona multi-body-ramverket introducerar ett nytt robotbeskrivningsfilformat: AMBF-beskrivningsformatet eller ADF. Beskrivningsformatet är baserat på YAML som gör det möjligt att modifiera, skapa eller testa multikroppar på ett enkelt sätt tack vare dess mänskliga läsbarhet. Tanken är att en robot är ett rumsligt träd av kroppar där lederna är delar av länkar. AMBF-beskrivningsfilen kan ses som sammansatt av block. Vart och ett av dessa block innehåller data för ett enda oberoende organ så att det kan modifieras eller tas bort utan att påverka de andra blocken. Rubriklistan finns i början av filen och den innehåller globala parametrar och alla element som definierar den specifika beskrivningsfilen såsom kroppar, visuella element och begränsningar.

Detta filformat gör det också möjligt att definiera olika multi-kroppar eller multi-robotar i samma beskrivningsfil.

Funktioner

Förenklad struktur för Asynchronous Framework

ROS kommunikation

Simulatorn är integrerad med ROS (Robot Operating System), ett mellanprogram som hanterar kommunikationen med robotar. ROS gör det möjligt att styra den simulerade roboten genom externa koder, och den erbjuder också användbara plottning (RQT Plot) och loggning (ROS Bag) verktyg. Asynchronous Framework förblir isolerat från ROS-baserad körtidsmekanik samtidigt som det kan utnyttja dess verktyg. Höghastighets asynkron kommunikation implementeras via ROS-topic i AMBF ramverksbibliotek. Både C++ och Python kan användas för att interagera med simulerade robotar, multikroppar, kinematiska och visuella objekt i simulatorn.

Python-klient

Python-klienten ger möjlighet att styra olika afObject samtidigt som man håller en hög kommunikationshastighet. Detta gör det möjligt att hantera ROS-kommunikationen vilket gör processen att kontrollera simulerade kroppar mycket enklare jämfört med vilken annan simulator som helst. Kommunikationen mellan klienten och AMBF-simulatorn hanteras genom ROS som mellanprogram . Klienten använder dubbelriktad kommunikation så att det är möjligt att ställa in kommandon till kropparna och samtidigt läsa deras tillstånd med hjälp av ett bibliotek med Python-funktioner. Dessa funktioner används till exempel för att ställa in eller få kroppars position och orientering samt styra skiftnyckeln som verkar på en kropp eller få antalet leder kopplade till den. När den används skapas en instans av klienten och den kopplas till simuleringen. Detta skapar anropsbara objekt från ROS -ämnen och initierar en delad pool av trådar för dubbelriktad kommunikation. Varje anropsbart objekt har en WatchDog- timer som återställer kommandon om tidsvillkoret misslyckas.

Dessutom används Python-klienten för utbildning av förstärkningsinlärningsagenter på realtidsdata.

Ingångsgränssnittsenhet

Ramverket gör det möjligt att integrera den verkliga huvudkonsolen för att manipulera simulerade kroppar i realtid. Dessa gränssnitt kallas också för Input Interface Device eller IID och kan vara haptiska eller inte. Flera ingångsgränssnitt ingår redan i simulatorn som Geomagic Phantom, Falcon Novint, Razer Hydra och dVRK MTM. Andra kan enkelt inkluderas i simulatorn genom att definiera dem i filen input_device.yaml . Varje ingångsgränssnitt simuleras som en dynamisk sluteffektor (SDE) som kan bindas eller inte till någon simulerad kropp. Den simulerade sluteffektorn styrs med hjälp av en dynamisk styrlag baserad på rörelsen hos inmatningsanordningarna. Rotlänken är basen för den simulerade sluteffektorn som inmatningsenheten är ansluten till . Vanligtvis är tillståndet för ingångsgränssnittet i referensramen för själva enheten medan sluteffektorn är i förhållande till världsramen, därför behövs en transformmappning för att få tillstånden omvandlade till en gemensam ram. För varje element kan vissa egenskaper specificeras inklusive följande:

  • Skalning av arbetsyta : den skalar inmatningsenhetens rörelse i simulering.
  • Simulerad multikropp : den specificerar multikroppen som emulerar den externa enheten inom den simulerade AMBF-scenen. Olika beskrivningsfiler såsom gripdon kan väljas för att implementeras i simuleringen.
  • Haptisk förstärkning: det är en uppsättning förstärkningar för att styra kraftåterkopplingen som appliceras på ingångsgränssnittsenheten.
  • Controller gain : den används för att skala skiftnyckeln för den simulerade sluteffektorn.
  • Koppla ihop kameror : den används för att ställa in en eller flera kameror som ska paras med IID-SDE-paret.

Mjuka kroppar

Förutom stela kroppar ger AMBF stöd för mjuka kroppar. Mjuka kroppar definieras som stela kroppar med ytterligare parametrar som kan ställas in för att definiera beteendet hos den mjuka kroppen. Interaktionen mellan kroppar tillhandahålls av Bullets lösare, som hanterar dynamiken hos både stela och mjuka kroppar.

Mjuka kroppar representeras som en samling sammankopplade tröghetsnoder som kan kollidera med andra objekt i scenen. Sammankopplingen är generaliserad som en tredimensionell fjäder som står för spänningen, vridningen och böjningen. Positionen för varje nod beräknas med hjälp av symplectit Euler-metoden vid varje tidssteg. Ett högkvalitativt nät för visualisering och ett nät med lägre upplösning för att representera den mjuka kroppen kan specificeras för varje mjuk kropp.

Blender-tillägg

AMBF inkluderar ett tillägg med Blender som låter användaren skapa nya modeller eller modifiera befintliga modeller enligt deras syfte. Blender har stort community-stöd för grafiska designers och representerar ett omedelbart och intuitivt gränssnitt för användaren att skapa eller ändra kroppar. Blender-to-AMBF-tillägget är dubbelriktat vilket innebär att användaren både kan importera objekt som definierats genom AMBF-filformatet och skapa både hög- och lågupplösta filer och därefter AMBF YAML-konfigurationsfiler för komplexa robotar och multi-kroppar. Detta verktyg underlättar skapandet av nya element genom att tillåta användaren att trimma stela och mjuka kroppar med visuell feedback i realtid.

  1. ^ "WPI-AIM/ambf" . GitHub . Arkiverad från originalet 2020-11-03.
  2. ^ a b    Munawar, Adnan; Wang, Yan; Gondokaryono, Radian; Fischer, Gregory (4–8 november 2019). "En dynamisk simulator i realtid och ett tillhörande front-end-representationsformat för simulering av komplexa robotar och miljöer" . IEEE/RSJ Internationell konferens om intelligenta robotar och system (IROS) : 1875–1882. doi : 10.1109/IROS40897.2019.8968568 . ISBN 978-1-7281-4004-9 . S2CID 210971054 . {{ citera journal }} : CS1 underhåll: datumformat ( länk )
  3. ^ "CHAI-3D" . Arkiverad från originalet 2003-10-11.
  4. ^ "Python-klient" . GitHub . Arkiverad från originalet 2020-11-03.
  5. ^    Munawar, Adnan; Fischer, Gregory (november 2019). "Ett asynkront multikroppssimuleringsramverk för realtidsdynamik, haptik och lärande med tillämpning på kirurgiska robotar" . IEEE/RSJ Internationell konferens om intelligenta robotar och system (IROS) : 6268–6275. doi : 10.1109/IROS40897.2019.8968594 . ISBN 978-1-7281-4004-9 . S2CID 210972445 .
  6. ^ "Indataenheter" . GitHub . {{ citera webben }} : CS1 underhåll: url-status ( länk )
  7. ^ Adnan Munawar, december 2019, "An Asynchronous Simulation Framework for Multi-User Interactive Collaboration: Application to Robot-Assisted Surgery".
  8. ^ "Blender" . Arkiverad från originalet 2002-11-24.

externa länkar