Marty has two main different modes of operation - remotely controlled with just a Rick in the head (how Marty is normally when you first get one), and an extended mode where a Raspberry Pi, Arduino or other serial or I2C enabled microcontroller or mini-pc is inside the head with Rick.
Some of our APIs and Integrations work with only one of these modes, some with both so we've split them into groups below. Martys can also be simulated using V-REP without needing a physical robot, also detailed below.
For Tutorials and Guides instead, and sourcecode, check out:
Learning Portal Robotical on GitHub Marty Calibration Tool Calibration Troubleshooting
Scratch is the simplest way to program a Marty if you're a complete beginner. It has a simple graphical interface and blocks you can combine to build up a program, and is very popular with kids & educators.
Python is an easy to learn real-world programming language used by hundreds of thousands of people, with a strong online community and thousands of libraries.
Our Python API is probably the best pick for most people.
Connecting a RaspberryPi to a Marty is pretty simple, and adds a whole load of power and new possibilities.
Python can also be used to control Marty from within the head. If you've also got ROS installed, then you have full access to rospy, otherwise you can use martypy.
ROS, the Robot Operating System is an incredible framework and collection of tools and libraries for building robotics applications. Marty is fully integrated into ROS, with the ros_marty API.
V-REP is a popular robot simulator with a whole load of ways to integrate with it. Marty is natively supported and packaged with V-REP.
(Note that V-REP is licensed according to Coppelia Robotics' licensing restrictions and condition)
This set of articles cover the sensors and physical aspects of Marty, as well as the more nitty-gritty technical details of Rick, Marty's control board and the associated electronics they come with. Also covered are complete connection details for interfacing with Rick's GPIOs and interface connectors.
Additionally our lowest level APIs are documented here, so if there's a language or system you want to use that's not currently supported, you may still be able to implement your control through these bare-metal APIs.