close-circle
Close
0%
0%

BowlerStudio: A robotics development platform

Make cooler robots, faster and with less effort.

Similar projects worth following
BowlerStudio is a robot development application that combines scripting and device management with powerful control and processing features.

The goal is to create a full-stack robotics development environment. I wish to unify the design process of kinematics, CAD, control-law, firmware, CAM and simulation into a single skill set applied across the disciplines. That single skill set is programming. Through the perspective of programming all the tasks and relationships of the interconnected disciplines that make up robotics engineering. You can express relationships and interactions as functions and libraries. The purpose for this re-defining of the development process is to speed up robotics development, lower the skill barrier for new developers, and increase the capabilities of the state of the art in robotics engineering.

BowlerStudio assists you in every step of a robotics project from concept to completion. Tools enable users to:

  • Interface with motors, sensors, and other electronics hardware.
  • Create 3d models for fabrication, and for simulating the motions of your project.
  • Give your robot sight with image processing on camera feeds and Kinect data.
  • Operate 3d printers and other CNC machines.
  • Create custom graphical user interfaces to control yours robots.
  • Create and control animations.

The Nitty-Gritty Version

BowlerStudio Robotics development IDE is based on

  • JCSG A 3d cad engine for Java
  • Java-Bowler A robotics command, kinematics and control system
  • OpenCV A computer vision and image processing system
  • CHDK-PTP-Java A image provider for CHDK Canon DSLR cameras
  • Jinput Provides Joysticks and xbox controllers
  • motej Provides Wiimotes
  • Usb4Java A direct USB access system
  • NrJavaSerial A Serial port interface
  • BlueCove provides raw Bluetooth access.
  • JavaFX 8 3d engine.
  • WalnutIQ AI library based on neural modeling
  • JALSE and AI library based on node modeling
  • FreeTTS an open source Text-to-speech library
  • JBullet physics engine

BowlerStudio is a device manager, scripting engine, CAD package, and simulation tool all in one application. A user can develop the kinematic of an robot arm using the D-H parameters-based automatic kinematics engine. With this kinematics model, the user can then generate the CAD for new unique parts to match the kinematic model. The user can then export the model to an STL, and connect a Bowler 3d printer to BowlerStudio. The printer can print out the part (using the newly generated STL) while the user connects a DyIO and begins testing the servos with the kinematics model. When the print is done, the user can assemble the arm with the tested servos and run the model again to control the arm with Cartesian instructions. Once this is complete, the user can then attach a wiimote to train the robot arm through a set of tasks, recording them with the animation framework built into BowlerStudio. To be sure the arm is moving to the right place, the user can attach a webcam to the end and use OpenCV to verify the arm's position, or use the arm (in conjunction with the webcam with OpenCV enabled) to track and grab objects (IE "eye-in-hand" tracking).

Every step of this task can be performed from within BowlerStudio!

Let's go through the main features:

Scripting With Git

About scripts and Git

Scripts are bits of code that BowlerStudio can load and run. BowlerStudio allows you to open a local file and run it, but BowlerStudio is most powerful when the code lives on Github Gist (a code snippet hosting service from Github). Simply give BowlerStudio the URL for a Gist you want to load and execute. Gists can be selected and edited using the built in browser, or inline in another script using the Gist ID.

Java and Groovy

BowlerStudio can load and run scripts written in Java, Groovy, and Python. Which parser is used is determined by the file extension. Files that end in .java or .groovy will be run through the Groovy compiler. These Groovy scripts are compiled fully and run directly in the JVM. This means they will execute at full speed, just like a regular application.

Python

Python, on the other hand, by virtue of its structure, will generally execute much slower then Java. With the reduction in speed you get lots of flexibility and a clean and easy to understand syntax. The python code can also create and return objects to BowlerStudio (such as CAD CSG objects, or UI Tabs).

Return Objects

A script can return a few object types that will be handled by BowlerStudio: Objects of type "CSG" and "MeshView" will be added to the 3d display. If a transform is added to either of these and updated by a script the user can move an object in the 3d view. Objects of type "Tab" will be added to the Tabmanager and displayed in BowlerStudio. This is an easy way to make control panels or state displays and monitors. Objects of type "BowlerAbstractDevice"...

Read more »

  • Mac support is Back! and also high DPI

    Kevin Harrington07/21/2017 at 16:03 0 comments

    I have made a new release 0.22.0 that finally fixes the issues we were having with the binary release of the Mac stand alone. It turns out that when you run the code using gradle, it has already loaded all files into memory, so accessing the files is fast enough to be done in a UI thread, even though this is discouraged. In the Jar form, the timing overran, and Mac UI managed froze the program. I have now made (further) sure that file access takes place in a normal system thread, and UI access is managed by a tiny Platform.runlater code snippet.  This took months to fix because the way Mac breaks is totally opaque to the user and developer. It just hangs, no errors, no exceptions. 

    I really hate macs...

    Anyway, i also added High DPI screen support by making the font of the text window changeable. Ok, in fairness, all the UI text is still tiny, but the editor is nice and readable.  This will also help with projecting code on a projector for teaching.  

  • New introduction video

    Kevin Harrington04/15/2017 at 20:40 0 comments

    I am proud to show you a brand new introduction video for BowlerStudio!

  • Seeking Input

    Kevin Harrington02/03/2017 at 21:29 0 comments

    I have a solid Alpha version that has been released for coming up on 6 months now. The feature list is more or less complete, and the major bugs are mostly worked out. I am looking for feedback from anyone that has been using BowlerStudio. What sort of things annoy you? What things do you expect to happen that don't? What sort of things happen despite you not expecting it? Are there any things you think it should actually do that it doesn't? Let me know in the comments here.

  • Free BowlerStudio class! (as a weekly google Hangout)

    Kevin Harrington01/13/2017 at 16:10 0 comments

    I am hoping to get a bunch of people up to speed with BowlerStudio so I am offering an introduction to BowlerStudio. This will be a set of classes where i will walk you through the process of building robots with BowlerStudio. I will be recording these sessions for anyone that comes later, but if you want to ask questions and get help you will need to attend the final class time. I have posted a when2meet to gather interest, and when a time is selected i will post back here.

    http://when2meet.com/?5958587-1PWB2

    As for prerequisites, this is *not* an introduction to programming class, so the ability to read and write object oriented (or functional) code is a must. I will be instructing using Groovy (Java) in most of the classes for the sake of consistency. I will briefly introduce using Python, Clojure and creating a custom Domain Specific Language. We will cover the scripting system, the git-as-filesystem architecture, the kinematics framework, the CAD engine, the physics engine, Arduino code and Bowler Protocol integration, offline headless deployment all while exploring the BowlerStudio Integrated Development Environment for full-stack robotics.

  • 0.20.2 Rotations, cameras and deep copy, oh my!

    Kevin Harrington12/31/2016 at 16:49 0 comments

    OK! I just pushed a new release with a very important fix. The rotation library i was relying on (mine) was giving errors sometimes and causing a whole bunch of other bugs. Should have done this all along:

    and while i was in there I made a few Ui navigation updates, namely when you click on stuff the camera smoothly pans to it, rahter than jumping all around. and when the mouse goes idle for 10 seconds, it begins to auto-spin around the object (video game UI trick). you cna disable that with a checkbox, btw. and a small issue i keep running into, when you make a copy of a creature it attempts to maintain the hyperlinked connection to the scripts, now the copy does a deep copy into a single repo with all the scripts. if the script calls a script, that stays as a hyperlink, but things like the walking script, since if i copy a robot i geta hyperlink to my esisting walking script and if i edit it i mess up another robot

  • Big update in CAD engine!

    Kevin Harrington12/29/2016 at 16:59 0 comments

    I have added 3 components to the CAD engine, Text extrude with fonts, SVG loading and extrusion, and extrusion along a Bezier path.

    In version 0.20.0+ you can use all of these new API's. I have also changed the name of the dependent library to JavaCad from JCSG to avoid looping dependency conflicts (long story, trying to work it out with the upstream developer).

    I have also discovered exactly WHY the Curiosity rover and any other powered wheel thing doesn't work, there seems to be some issue in Jbullet HingeConstraint that causes angles of -180 or 180 to snap to 0 degrees instead of continuing to roll over. instantaneously, causing control loop governing them to go nuts. I am working on implementing the driving vehicle physics engine example for wheeled devices, but that will make molecularity a problem down the line :/ Passive wheels such as the cart do not seem to suffer from this, which is curious, or maybe they do and it doesn't matter because there is no control loop driving it out of control.

  • Animatronic head becomes its own project

    Kevin Harrington10/10/2016 at 20:55 0 comments

    I have decided that the animatronic head is sufficantly awesome that it deservers its own proect, not just an example script for BowlerStudio. https://hackaday.io/project/16193-open-animatronics

    I ran a class this summer teaching robotics to a bunch of high school kids. They each built an animatronic head, and programmed it using the arduino. They had a blast and used the robot as a reason to learn to program and engage with engineering.

    During the month of october i am hosting a free costume build day every sunday at my makerspace, Technocopia. A group of us are making wearable anamatronic heads and we are doing a "where the wild things are" group costume!

  • A full vitamins library

    Kevin Harrington08/13/2016 at 01:03 0 comments

    I have finally gone through an made cad generation scripts for all of the hardware defined in:

    https://github.com/madhephaestus/Hardware-Dimensions

    You can see an example of how to load real dimensioned hardware easily using the Vitamins API demonstrated here:

    http://neuronrobotics.com/JavaCAD/Vitamins/


    Coming soon is my first CNC machine designed in BowlerStudio...



  • Arduino in BowlerStudio: A whole new perspective on 'full stack'

    Kevin Harrington08/01/2016 at 14:18 0 comments

    BowlerStudio is a neat runtime for bootstrapping files out of git repos and quickly putting them to use. I have used this trick for CAD, for AI, and for kinematics control. Now i have finally added a new domain: Microcontroller code!. You can now push arduino firmwares as *part of your normal code flow* inside any bowler studio language. The trick is treading .ino files as a scripting language like any other, and then pushing it through the normal arduino command line interface.

    I also ported over the DyIO firmware to arduino (fair warning it needs a Mega or Curie for the full IO controller code at the moment). I did get the standard bowler communication stack working on a standard arduino Uno, as well as extending it with arbitrary processing on the arduino called from a groovy script, loaded at runtime, and then called by the same script. Pretty trippy when you think about it...

    I have added a few examples of this here: http://neuronrobotics.com/BowlerFullStack/C-Server/ These work in BowlerStudio 0.18.11 and up and need Arduino 1.5 or greater installed (all done by the ppa now, linux is the easy one)

  • Animatronics! I made a slide-bar parametric animatronics head

    Kevin Harrington07/01/2016 at 16:04 0 comments

    So this is a neat way to use BowlerStudio. One of my biggest frustrations with downloading a laser cut design is having a different thickness material then they used, a different servo, different bolt and so on. I started with slide bars to control those so anyone could make this with whatever parts they had laying around. I then noticed that i could parameterize all the aesthetic choices too. You can change the snout length, the head diameter, the eye distance, even the size of the eyes independently. I may need to make a new project just for this.

    Oh, and its just 990 lines of code in total to do all that!

    https://twitter.com/pjlangloi/status/748692603521163264

    and the source for anyone with BowlerStudio that wants to play with it themselves:

    https://gist.github.com/e67b5f75f23c134af5d5054106e3ec40.git

View all 35 project logs

  • 1
    Step 1

    For Binary installers, go to:

    http://neuronrobotics.com/#downloads

    And run the installer for your platform. Even if you install from sources, you will need to run the installer to get the non-java binaries (OpenCV and drivers).

    To build from source:

    Bash (Linux/OS X/Cygwin/other Unix-like shell)Ubuntu Dependancies

    sudo add-apt-repository ppa:webupd8team/java
    
    sudo apt-get update
    
    sudo apt-get install git gradle oracle-java8-installer oracle-java8-set-default libopencv2.4-java libopencv2.4-jni
    
    All Unix
    git clone https://github.com/NeuronRobotics/BowlerStudio.git
    
    cd BowlerStudio
    
    git submodule init
    
    git submodule update
    
    gradle jar
    
    java -jar build/libs/BowlerStudio.jar
    

    Now you can use the Eclipse Marketplace to install the Gradle Plugin

    Windows (CMD)
     gradlew jar

View all instructions

Enjoy this project?

Share

Discussions

Adam Vadala-Roth wrote 03/08/2017 at 20:28 point

random though of the day: you should include the laser cuttable version of the hexapod you made several years ago as a configurable robot. 

  Are you sure? yes | no

Kevin Harrington wrote 03/08/2017 at 21:31 point

heh, yeah i would need to sit down and do a new parametric link generator. Its totally possible, but would need a solid hackathon's worth of effort. Know of any hackathons coming up in the WPI area?

  Are you sure? yes | no

Adam Vadala-Roth wrote 08/25/2015 at 05:08 point

Congratulations on making the semi-finals! I am making a note on my project of my use of BowlerStudio within it!!!

  Are you sure? yes | no

MECHANICUS wrote 08/03/2015 at 05:58 point

Heck yeah, I just watched the video am downloading bowler right now, you are a visionary sir!

  Are you sure? yes | no

Kevin Harrington wrote 08/06/2015 at 12:42 point

Cool! tell me how it goes!

  Are you sure? yes | no

MECHANICUS wrote 08/09/2015 at 19:16 point

Eh its slow, I am not a programmer, but I will eventually figure it out its really cool regardless not sure why no one else has latched on to this.

It really needs linear actuators before I can make use of it, but I need to get these muscles finished first.

  Are you sure? yes | no

Kevin Harrington wrote 08/09/2015 at 19:22 point

Mind telling me the specs of the computer you ran it on? I am doing profiling on lots of systems trying to find pinch points and optimize it. Its very new so the speed will come with time. I get real-time motion on a 2.4ghz core i5 with 8gb of ram.  But thats just the cad generator and visualization, the kinemeatics that you are generating can run very fast. 

  Are you sure? yes | no

MECHANICUS wrote 08/09/2015 at 21:14 point

core 2 duo 3ghz OC to 3.6ghz, 4gb ddr2 800, gts 250 windows 7.  My femputer is aging, but by slow I meant that I haven't got it to run yet, by really cool I mean from your demonstration videos it looks cool.

I d/l java sdk, and gradle but I just haven't figured out how to run it yet. Might reinstall ubuntu as it looks easier from there.  I just don't have the time I have to finish my other projects first before I move into this area of learning.

  Are you sure? yes | no

Kevin Harrington wrote 08/10/2015 at 00:00 point

Did you try installing it from the installer? http://neuronrobotics.com/#downloads

  Are you sure? yes | no

[deleted]

[this comment has been deleted]

Kevin Harrington wrote 08/10/2015 at 14:03 point

The simple install needs no gradle or sources,  download this: https://github.com/NeuronRobotics/BowlerStudio/releases/download/0.4.2/Windows-BowlerStudio-0.4.2.exe and double click it to run the installer. When its done, a link to run it will be placed on your desktop. You will also need the latest Java to run it if you do not already have it found here:

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

If you have the wrong Java, the Neuron Robotics splash screen will flash and then disapear. 

  Are you sure? yes | no

MECHANICUS wrote 08/10/2015 at 18:52 point

For the love of Odin, not sure how I made that so hard, Im going to clean up your comment section, by deleting these blundering posts if it's cool with you.

  Are you sure? yes | no

Kevin Harrington wrote 08/10/2015 at 19:09 point

No worries, feel free to edit as you see fit. Did it run ok??

  Are you sure? yes | no

MECHANICUS wrote 08/10/2015 at 19:54 point

Yes thank you, it runs great. I am super excited to learn java/electronics and utilize this great tool.  Once I get up and running with production of artificial muscles I will send you some if you like. I think they will be the cow's jowls when it comes to bio mimicry robotics.

  Are you sure? yes | no

Kevin Harrington wrote 08/10/2015 at 19:56 point

Totally cool! i look forward to hearing about it!

  Are you sure? yes | no

MECHANICUS wrote 07/27/2015 at 16:35 point

I love it, mad props

  Are you sure? yes | no

Kevin Harrington wrote 08/03/2015 at 00:17 point

Thank you! I just posted the video of the printed robot walking...

  Are you sure? yes | no

Kevin Harrington wrote 07/27/2015 at 16:25 point

I just finished implementing the 3d printed CAD generation system. It uses scripts to generate cad kinda like OpenSCAD does, but they are Groovy/ Java scripts which makes them very powerful in terms of language features.  Here is a quick video of it generaating some parts for a walking robot and pulling them into Cura to print. 

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates