{"thread":{"id":"42402","subject":"BowlerStudio: using GIT as a file system for distributed robots","startedAt":"2016-05-20T17:55:13Z","lastAt":"2016-05-20T17:55:13Z","messageCount":1,"participants":["Kevin Harrington"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"287115","messageId":"CAASPp8+x01E5W3cLiLNaXM6KMHVGTE0owZ4vFk97vKAZ3Z3yzw@mail.gmail.com","threadId":"42402","inReplyTo":null,"subject":"BowlerStudio: using GIT as a file system for distributed robots","fromName":"Kevin Harrington","fromEmail":"mad.hephaestus@gmail.com","sentAt":"2016-05-20T17:55:13Z","receivedAt":"2016-05-20T17:55:13Z","isPatch":false,"sender":{"key":"mad.hephaestus@gmail.com","avatar":null},"body":"I have spent the past year building an new open source robotics\ndevelopment platform and wanted to show you fine folks working on Git:\n\nBowlerStudio: https://github.com/NeuronRobotics/BowlerStudio\n\nI started working a set of robotics control libraries back in 2009 and\nhave deployed them as the control framework for MRI compatible robots.\n\nOver the past year i began developing a set of tutorials for building\nrobots using my framework. In this process i build a small scripting\nengine that uses Git as its file system. This allows scripts to\nhyperlink to each other based on the Git repository they live in.\n\nThe platform supports Java/Groovy, Clojure, and Python scripts, and\nthese scripts use an \"Object in Object out\" version of the Pipe\npattern for interfacing. Since the JVM provides the common runtime,\nthey can pass memory references back and forth in the pipe pattern as\nopposed to parsing and building stings. This lets any of the languages\ntrivially interoperate together. If a script you want is in a\ndifferent langauge hosted on a different Git repo, no problem just\ncall it in line and the compiled and typed object is returned.\n\nUnder the hood, JGIT, the same library eclipse uses to provide Git\nsupport, is the library that manages the local caches of files pulled\nfrom the Git repo. The scripting engine has features to commit changes\nand push them upstream. In the Tutorials, you look at spike examples\nin the WebBrowser (using GitHub Gist to JS embed the code), JGIT takes\nthe Git URL extracted from the Gist, caches the repo to the disk, and\nmakes it availible to the new user to run. From there the user can\nfork, modify, and publish changes to the demo code. In this way, all\nexamples are executable right out of the built in browser for the\nfastest startup time with new code examples.\n\nThe Application is used to connect cameras, robot controllers,\nkinematics libraries, CSG Cad engine, a physics engine and a few AI\nlibraries all in a common runtime with a shallow on-ramp for even\nnovice programmers.\n\nTL;DR Kerbal Space Program meets ROS on the JVM using Git as a filesystem\n"}]}