WHAT IS BOTTANGO?
A little background
I’ve been a professional game developer for over a decade, and one of the most important lessons I’ve learned is that nothing supercharges development and product creation more than creating tools and processes that empower people to build what is in their mind’s eye. When an individual has the tools and power to visualize, quickly iterate, and autonomously build their vision, the investment in the tools to do so often has a far greater return than hard- coded rules and behaviors.
When I first started building robots in my spare time, the magic of making something move in real life was intoxicating. A single line of code to change the PWM value on a servo had immediate real world impact. However, quickly my game developer instincts kicked in. I didn’t just want the servo to move. I wanted to be able to control how the servo moved: How long did it take? How fast did it move? What curve did the servo take to get from start to finish? Was it slow at the start? Did it bounce a little past the destination and move back?
The traditional answer to these desires in robotics is to write the code that creates the behavior you want, then examine the results. If you’re not happy, write new code. However, in game development, I knew that I’d take a different approach. I’d advocate for a tool that allowed for easy, visual iteration on robotic movement, with all the tools and controls needed to express exactly what I envision for my robot.
What is Bottango? - The short version
Bottango is a visual tool for intuitive robot control, with high levels of control and precision . It is meant to replace line upon line of special case behavior and hard coded movements with a WYSIWYG editor, so that an individual’s intent can be more quickly and accurately expressed.
Bottango operates in real time. If you move the eyebrow of an animatronic face in Bottango, the eyebrow of your robot moves too. If you scrub an animation of your robot arm in Bottango, your robot arm plays the animation at the same time.
Bottango is robot agnostic. It’s not supposed to work with only this robot from that manufacturer. It is intended to allow you to define the parameters of your robot, and iterate on the machine itself, not just its behavior.
What can Bottango do now?
In this version of Bottango, you can:
Define the basic structure of your robot.
Create and configure motors (Servos and Stepper Motors currently supported).
Control those motors with hardware drivers (for example, an Arduino).
Create virtual joints to move with motors.
Animate those joints on a visual timeline with keyframes.
Control the interpolation curve of your keyframes
Synchronize an animation to audio.
Import 3D models to use as the structure of your robot.
Play back an animation on your robot.
Control the movement of your robot in real time.
Save and load a project.
Cross Platform Support
What will Bottango someday do?
This is an extremely early version of Bottango. There are a lot of things I have on the development roadmap; here are some of the highlights:
Additional motor types such as brushless DC motors, etc.
Animating lights, including RGB LEDs.
Sending arbitrary, user-defined events from Bottango to hardware drivers on the animation timeline.
Baking animations to code that can be run on hardware without Bottango driving the animation via serial.
Supporting multiple animations on a robot, including blending them so that a robot can smoothly move from one animation to another.
Creating animations via IK chains.
Ultimately, I see Bottango behaving like a “state machine.” In this mode, I envision the user defining state machine logic for a robot, and then controlling the expressed state of that state machine via commands from both the user and the hardware driver. In a state machine, the robot blends between animations as the state changes.
As an example, imagine a robot that cycles through blends of a few different idle animations, and then smoothly blends to a surprise animation when a capacitive sensor on the hardware driver detects touch, and then blends back to its idle animation as defined in the state machine.
Who is Bottango for?
Bottango is for anyone who wants to move or control real life things. If you want to inspire an emotional response when someone sees your robot move, Bottango is the tool to allow for that kind of expression by providing tools for rapid creative iteration on robotic movement. If you want to quickly and intuitively create trajectories and motion plans for your robot, without writing line upon line of custom code, Bottango is the tool to allow you to intuitively craft those movements with a visual editor.
You don’t need to know how to code to use Bottango, but you should be pretty computer savvy. There will be problem solving and general computer tom-foolery. Bottango runs on Windows, Linux, and Macintosh computers.
The more you’re familiar with the concepts of 3D animation and robotics, the more Bottango will come naturally to you. You don’t need these concepts to be successful, but they will give you a leg up to understanding how Bottango thinks.
Keeping this documentation up to date
Bottango is in very early stages. A lot is changing, and fast. New features are being added, and I’m frequently iterating on existing features. Throughout this documentation, I’m trying to keep things up to date, but I can’t make any promises. Screenshots and images may show old versions of features not directly relevant to the subject at hand. If I had infinite time I’d replace all screenshots every time I update Bottango, but something has to give! However, I will try and make sure that at least the subject in question has accurate visualizations.