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.
  • FreeTTS an open source Text-to-speech library
  • MuJoCo 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, 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" (or any subclass) will be added to the connections manager and made available to all other scripts. These...

Read more »

  • Blender, FreeCAD and External Editors

    Kevin Harrington07/10/2024 at 19:39 0 comments

    Today I announce a major update to BowlerStudio!

    With release 2.34.0 I have added across all platforms the "Advanced Editors" suit. This suit consists of a set of applications that provide additional features to BowlerStudio. Some files need a more advanced aditor, or a special editor entirely, but are files that can be used in BowlerStudio.
    * Eclipse - An IDE for Groovy scripts that provides debugging

    * ArduinoIDE v2 - Compile and upload microcontoroller code

    * Inkscape - 2d Vector graphics editor. THe vectors are extruded in BowlerStudio into shapes

    * Blender - Provides artistic mesh modeling and advanced mesh repair tools

    * FreeCAD - Paraametric Sketch and Extrude style CAD modeler

    These tools can be launched as needed, and will be downloaded on-the-fly from a curated list of download links. The download targets are json files in the users directory and can be edited by the user if need be.
    Blender files and FreeCAD files are now treated as first class file formats by bowlerstudio. They cna be opened and managed in git, and when "run" they are passed to the editor to generate a CSG object. You can use links to FreeCAD or Blender files in any code and manipulate them like any other mesh generating file.
    ModileBases and VItalimins UI now accepts scripts as vitamins. For each base and each link there is a list of vitamins and thier locations withing the frame. Now you can hang any script on a mobileBase frame and jog it around. You can finally design an entire robot without using code for any of it!.

  • HiDPI support added

    Kevin Harrington04/22/2024 at 18:22 0 comments

    I have finally managed to add support for HiDPI monitors. User just needs to use the menu to select a font size, and all the text in the application and all the Icons will resize to match the new size. The main window will also detect the font size setting to set the initial size of the window. Font size is stored in the applications configuration so it is persistent from opening to opening and across work stations.

  • Major Update adding Mujoco Physics and Vitamins

    Kevin Harrington04/17/2024 at 16:18 0 comments

    As of v2.19.9 BowlerStudio has added 2 brand new subsystems.

    First is MuJoCo Physics Engine. Bowlerstudio will now generate MuJoCo xml models from a given robot or from items either free or fixed in the scene. That means that any scene of robots and terrain can be simulated in Physics. Mujoco is an extremely  fast multi contact jointed system modeler.

    In addition to physics, a system of Vitamins has been added. Vitamins are models of the void in a printed part into which an off the shelf component must fit. Users can add vitamins to any link or mobilebase. They can use a game controller to fly the part around in 3d to place it withing the given frame.

  • Added branches and Commit history viewing

    Kevin Harrington01/04/2020 at 14:54 0 comments

    I added commits and branches to the BowlerStudio menu. You can switch between branches, look at all the commits, and if you select a commit, you create a branch from that commit. Merging and deleting branches all happens in the github PR's still. Now having all the commits availible to view and switch back to is usable by users of BowlerStudio. 

  • BowlerStudio is out of Beta with 1.0.2 release!

    Kevin Harrington12/23/2019 at 15:54 0 comments

    There had been a single bug that caused BowlerStudio to sometimes become unstable and freeze, potentially losing user data. I finally found that bug and eliminated it! With that there are no known bugs that affect user data or cause the application to become unusable. 

    As always i aim to make BowlerStudio an excellent tool for designing robots. It has been a long road to get out of Beta testing but I am glad to say it was all worth it. 

    I look forward to seeing what people use BowlerStudio for, and look forward to continuing to provide an excellent tool for free and with open source, well into the future. 

    Thank you all for your support,  go make cool robots!

  • 2 factor auth added upstream, coming soon!

    Kevin Harrington11/25/2019 at 14:51 0 comments

    I just got my PR merged into github-api to add 2 factor authentication! As soon as its released, i will update BowlerStudio to support 2fa (Finally!)

    See the feature add PR here:

    I will add it to GithubPasswordManager, then upstream into the kernel and BowlerStudio. I am just waiting for the official release to go out!

  • Added a new intro walk through

    Kevin Harrington10/16/2019 at 19:53 1 comment

  • Offline loading is now fast and stable Release 0.32.7

    Kevin Harrington07/23/2019 at 01:00 0 comments

    I fixed the issue in BowlerStudio when it tries to open and there is no internet, it used to crash and hang, now it loads normally, AND your workspace is loaded so you still have quick access to your local files. This is a long-standing usability bug in network-denied situations. Now the application loads quickly and it easily ignores all the network operations.


  • Release 0.31.7 Lots of bugfixes and one new feature!

    Kevin Harrington06/21/2019 at 16:50 0 comments

    I spent the week doing bigfixes on BowlerStudio!

    The big ones fixed:

    * Re-docking windows sometimes results in frozen text windows

    * Cold-start on windows was buggy

    * Slide bars for robot link limits is MUCH improved

    * Adding files to empty repos works now

    * Git pull, and update repos menu item, now work

    * Dropped the OpenCV deps, makes cross platform easier and binaries smaller

    New Features:

    * A workspace menu, populated with the 15 most recently used Git repos

    * Bundled JVM on windows and Macos, no more separate Java dependency!

    * Ubuntu 18.04 PPA

  • 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.  

View all 44 project logs

  • 1
    Step 1

    For Binary installers, go to:

    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
    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?



tommaso.saracco2007 wrote 09/09/2021 at 19:57 point

it can be installed on raspberry pi 4 8gb

  Are you sure? yes | no

AVR 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

AVR 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?

  Are you sure? yes | no


[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: 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:

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