Ways to control the T-Bot
- Android - T-Bot Controller - with automatic reconnection (requires the latest T-Bot.ino)
- Python - This is the recommended option if you don't have a generic wireless controller. The T-Bot Keyboard Controller allows you to use your computer keyboard to control the T-Bot. This works on Linux, Windows and Mac and has been developed on the Raspberry Pi 4.
- Python - This is the recommended option. The T-Bot Joystick bridge allows you to use a PS3, PS4 or generic wireless controller to control the T-Bot. This works on Linux, Windows and Mac and has been developed on the Raspberry Pi 4.
- Python - Using the T-Bot Controller for PC included in the downloaded software (Linux, Windows, Mac). This controller allows you to use your keyboard arrow keys to control the T-Bot. You can also record macros and remotely receive data for plotting.
- Writing your own Apps
The T-Bot Controller for Android
The simplest way to control your T-Bot is the use the T-Bot Controller.
Connect your android device to you T-Bot
Close Joystick bluetooth Commander and pair your Android device with your T-Bot
Open the T-Bot Controller, switch on your T-Bot and press connect. Select your T-Bot from the list. Once connected, the controller will monitor the connection and automatically reconnect if the connection is lost.
Adjusting the Trim Initially, the most important thing you will have to change on your T-Bot is the trim. Once you're connected to the T-Bot, hold it in the upright position and press the autotrim button (blue icon on the bottom left of the screen). You will see the third value in blue change as the T-Bot auto adjusts its trim. You might have to do this two or three times. You can refine the value using the - and + trim buttons. Once you're happy, you can hard code the trim value into the TBot.ino file. Look for the following lines and set gtrim to the value showing in the Trim datafield (3.0 in the example above). You can now upload the T-Bot.ino code to the T-Bot to make the change persistent.
//////////////////// Speed and Stability tunings ///////////////////////// float gtrim = -1.25; // Compensated for drift in forward or reverse direction. float rtrim = -0.0; // Compensated for rotational drift.
Controlling the T-Bot using Python
Note when you have paired the T-Bot with your computer, the connection will drop. This is normal because the computer doesn't know what to do with it yet.
Python Keyboard Controller
Use:
- j/k to adjust kps (proportional gain coefficient for the outer part of the cascading PID loop)
- r/t to adjust trim and Y for auto-trim
- s/w to adjust Speed Factor (Controller response)
- a/d to adjust Speed Limit
Linux Users
Edit KeyboardController.py as follows:
#------------------------------------------------------------------ # For Linux / Raspberry Pi #------------------------------------------------------------------ bd_addr = '98:D3:51:FD:81:AC' # use: 'hcitool scan' to scan for your T-Bot address port = 1 btcom = tbt.bt_connect(bd_addr,port,'PyBluez') #btcom = tbt.bt_connect(bd_addr,port,'Socket') #------------------------------------------------------------------ # For Windows and Mac #------------------------------------------------------------------ #port = 'COM5' # Windows Port #port = '/dev/tty.T-Bot-DevB' # Mac Port #baudrate = 38400 #bd_addr = 'Empty' #btcom = tbt.bt_connect(bd_addr,port,'PySerial',baudrate) #------------------------------------------------------------------
Windows Users
Switch on your T-Bot. Open 'Bluetooth and other device'. Click on 'Add Bluetooth or other devices'. When the dialogue window opens, click on Bluetooth. Your T-Bot should show up as Unknown Device which will change to HC-05 or the name you chose. The PIN is 1234 if you haven't changed it. Now open the Control Panel > Hardware and Sound > Devices and Printers. You should now see your T-Bot under Unspecified. Right click and select properties. Click on the Hardware tab. You will see two device functions in the list. The second one will have the port number eg. COM5. Take note of this and edit KeyboardController.py as follows.
#------------------------------------------------------------------ # For Linux / Raspberry Pi #------------------------------------------------------------------ #bd_addr = '98:D3:51:FD:81:AC' # use: 'hcitool scan' to scan for your T-Bot address #port = 1 #btcom = tbt.bt_connect(bd_addr,port,'PyBluez') #btcom = tbt.bt_connect(bd_addr,port,'Socket') #------------------------------------------------------------------ # For Windows and Mac #------------------------------------------------------------------ port = 'COM5' # Windows Port #port = '/dev/tty.T-Bot-DevB' # Mac Port baudrate = 38400 bd_addr = 'Empty' btcom = tbt.bt_connect(bd_addr,port,'PySerial',baudrate) #------------------------------------------------------------------
Mac Users
Install Pygame and pySerial
sudo easy_install pip sudo pip install pygame sudo pip install pyserial
Open System Preferences > Bluetooth. Pair your T-Bot. Open a terminal and type:
ls /dev/*NameOfYourTbot*
The result should look like this:
cu.NameOfYourTbot-DevB tty.NameOfYourTbot-DevB
Now update KeyboardController.py with the port name including the path.
port = '/dev/tty.NameOfYourTbot-DevB'
USB or Wireless to Bluetooth Bridge
The Joystick Bridge allows you to use your computer to convert the USB signal from a PS3 or PS4 controller, or the wireless signal form a generic wireless controller to a Bluetooth signal compatible with the T-Bot. If you prefer to use your PS controller wirelessly, you can follow these instructions for PS3 or these for PS4 to setup the Bluetooth connection (Raspberry Pi).
Software Dependencies
- T-Bot Joystick Controller
- Pygame
- PySerial (Mac or Windows)
- PyBluez or Socket (Linux)
For Raspberry Pi users. Pair your T-Bot by clicking on the Bluetooth icon and selecting Add Device. Enter 1234 when your T-Bot is found. Type the following in a terminal:
hcitool scan Scanning ... 98:D3:32:21:3D:77 MazeRunner 98:D3:51:FD:81:AC T-Bot
Find the following line in joystick.py and enter your T-Bot's mac address:
bd_addr = '98:D3:51:FD:81:AC'
Now run in the command line using:
python joystick.py
Windows or mac users can use the PySerial version: joystick_WinMac.py. There are more instructions for setting up connections in the next section (Python T-Bot Controller).
Note, different controllers may have different button configurations so you might have to update the code to make it compatible with the T-Bot. Even if the configuration is different, you will still be able to see which buttons are pressed on the display window.
Python T-Bot Controller
There are three versions of the Python controller bundled with your T-Bot software. The Pybluez and Socket versions are for Linux and the PySerial version is for windows and Mac.
PyBluez Version
You can allow the software to search for your T-Bot or if you know the mac address, you can hard code it in to the software to speed up the connection process.
search = False
bd_addr = '98:D3:32:11:4C:CF' # put the bluetooth address of your T-Bot here.
Then launch a command terminal type the following to launch the Joystick:
python Controller.py
Socket Version
The socket version does not have the search function so you need to know the mac address. This can be stored as a python dictionary in the MAC_Adresses file. Multiple address can be stored if you have more than one T-Bot
{'George': '98:d3:32:11:4c:cf'}
Launch with:
python3 Controller.py
pySerial Version (Windows 10)
Switch on your T-Bot. Open 'Bluetooth and other device'. Click on 'Add Bluetooth or other devices'. When the dialogue window opens, click on Bluetooth. Your T-Bot should show up as Unknown Device which will change to HC-05 or the name you chose. The PIN is 1234 if you haven't changed it. Now open Control Panel > Hardware and Sound > Devices and Printers. You should now see your T-Bot under Unspecified. Right click and select properties. Click on the Hardware tab. You will see two device functions in the list. The second one will have the port number eg. COM6. Take note of this and edit Controller.py
port = 'COM6' sock = serial.Serial(port, baudrate)
Now launch Controller.py. Spyder is good for this. You might have to run it as administrater.
pySerial Version (Mac)
Install Pygame and pySerial
sudo easy_install pip sudo pip install pygame sudo pip install pyserial
Open System Preferences > Bluetooth. Pair your T-Bot. Open a terminal and type:
ls /dev/*NameOfYourTbot*
The result should look like this:
cu.NameOfYourTbot-DevB tty.NameOfYourTbot-DevB
Now update Controller.py with the port name including the path.
port = '/dev/tty.NameOfYourTbot-DevB' sock = serial.Serial(port, baudrate)
The key menu will be displayed in the terminal window and will look like this:
----------------------------------------------------------------- Controls: Click and drag joystick to drive the T-Bot Use up, down, left, right arrow keys to drive the T-Bot Press w or s to change the speed factor for arrow controls. Click on plot or press c to clear plots Press q or Esc to quit or Ctrl c in this window -----------------------------------------------------------------
Have fun and feel free to change the code according to your needs.