Petoi Doc Center

Calibrator and Controller



Thanks for choosing Petoi's robot Bittle or Nybble. This guide will help you set up your robot buddy and provide a simpler UI to calibrate, control, and program it. For advanced users, we recommend you keep the robot updated with the OpenCat firmware on Github for the best compatibility and the newest features.

Download and installation

The app works on both Android and iOS devices.
You can also download the android APK and install it on your phone. You need to unzip it before installation.
We keep updating the newest version here
If the Bluetooth dongle blinks while the connection panel within the App shows a blank Bluetooth connection list, first check if you have given the Bluetooth and location permission to the App. If it still shows a blank list, you may try to install the previous stable version.
The latest stable version in case of compatibility issues

Connect to your robot

You need to plug the Bluetooth dongle into the 6-pin socket on the NyBoard. Pay attention to the Bluetooth dongle's pin order. Long-press the button on the battery to turn on the robot's power.
If the buzzer beeps repetitively after bootup or during use, it means the battery is low. Please charge it in time. The charging port is on one end of the battery.
The LED on the Bluetooth dongle should blink waiting for a connection. Open the app and scan available bluetooth devices. Don't connect the robot with the phone's system-wide Bluetooth settings! Connect the device with the name Bittle, Petoi, or OpenCat. Remember to open the Bluetooth service and grant the app access to the service. On some devices, you may also need to allow the location service for the app, though we are not using any of those information.
The app will send a greeting to the bluetooth device and expects a response from the OpenCat firmware. You need to have the full OpenCat code installed on your robot before connecting to the app. Otherwise the app will consider it's "not a Petoi device". A pre-assembled robot should already have the firmware installed. Otherwise, you need to configure it with Arduino IDE or the Desktop app.
If the Bluetooth is connected, its LED will light steady. The robot will play a three-tone melody. If the robot doesn't respond or malfunction later, press the reset button on the NyBoard to restart the program on the NyBoard.
The App should automatically detect Nybble or Bittle with the latest OpenCat firmware. Otherwise, it will show the selections for Nybble or Bittle. The option "Select a robot" also can be re-visited in the control panel.

Calibrate the joints


Calibration Interface


Calibration Interface
The above screen interface will be displayed when you calibrate for the first time. You can also click to open the upper-right menu in the control panel and select "Calibrate" to re-access.
The pre-assembled robot should already have the legs properly installed but not fine-tuned.
Make sure you have uploaded the OpenCat "Main function" firmware before calibrating.
If you are building the robot from a kit, do not install the leg components until calibration. You also need to install the battery and long-press the button on the battery to power the robot.
Enter the calibration interface, click the "Calibrate" button, and all servos will move to the calibration position immediately.
If you are building the robot from a kit, Install the servo-related components according to the second one in the Calibration Interface picture, and try to ensure that they are perpendicular to each other (the upper leg is perpendicular to the torso, and the lower leg is perpendicular to the upper leg). Please refer to the related chapter in the user manual for the details:
Use the included L-shaped tool as a reference!
When calibrating, first select the index number of the joint servo from the diagram(when adjusting the leg servo, adjust the thigh first, and then adjust the calf), and then click the "+" or "-" button to fine-tune the joint to the right angle state.
If the offset is more than +/- 9 degrees, you need to remove the corresponding part of the servo and re-install it by rotating one tooth, and then press the "+" or "-" button.
For example, if you have to use -10 as the calibration value, take the limb off, rotate by one tooth then attach it back. The new calibration value should be around 4, i.e., they sum up to 14. Avoid rotating the servo shaft during this adjustment.
You can switch between Rest, Stand, and Walk to test the calibration.
You may need to do a second round of calibrations to achieve optimal results.
After calibration, remember to click the "Save" button to save the calibration offset. Otherwise, click "<" in the upper left corner to abandon the calibration.

Use the control panel

In the control panel, you can use the pe-set buttons to control the robot.


The left panel sets both the robot's gaits and directions and send combined command, such as "walk left" and "trot forward". The robot will only move if an initial gait and direction are selected. The "step" has no direction, and "backward" has left and right directions. The pause button "||" will pause the robot's motion and turn off the servos, so that you can rotate the joints to any angle. The "Turbo" button (
) turns on/off the gyro, a sensor to detect the robot's body orientation. Turning it on will make the robot keep adjusting to body angles, and will know when it's upside down. Turning it off will reduce calculation and make it walk faster and more stable.

Postures and behaviors

The built-in postures and behaviors can be triggered by pressing the buttons. Don't press the button too frequently and repeatedly. Allow some time for the robot to finish its current tasks.

Customized buttons

You can also define customized commands by pressing the "+" button. Long-press a custom command button to edit it. There's a lite serial console to test the command and even configure the robot.
Custom commands to try:

* move head (move joint angle)

m0 45

* move head left and right (move joint1 angle1 joint2 angle2 .... The angle is -127~128)

m0 -70 0 70

* sit


* move joints one by one

m 0 -70 0 70 8 -30

* MOVE joints simutanuosly

i 0 -45 8 -30 12 -60
Below are the indexes of the joints for your reference. Observe the patterns of the ordering and try to remember them.

* show current joint angles


* long meow once

u0 1

* short meow three times

u2 20

* play a short tone (beep tone duration, duration is 0~256)

b12 100

* play a melody (beep tone1 duration1, tone2 duration2, tone3 duration3, .... only 64 characters are allowed, the actual duration is calculated as 1/duration)

b14 4 14 4 21 4 21 4
A more detailed command table can be found in the Serial Protocol.

Updates and support

We keep improving the app and will inform you of the updates when available. Please write to [email protected] if you have any questions about the app.