We manage the software on our fleet of Hiwonder TurboPi robots with this git repo.
Different behaviors are stored in git branches.
- Install this to a pi: Turbopi Git Syncing
Assembly Guide
Source Code + System Image
Assembly Video
App links | iOS direct link | Android direct link
├── boot/ # buttonman, battery checker, and lobot services
├── caspyan/ # python-based Spiking Neural Network processor
├── hiwonder-common/ # python package for common code
| drive.py # turn on the motors at a specific speed. see below for usage
| program1.sh # buttonman starter script. 1 click of button 2 will run this.
run with sudo python drive.py or sudo ./drive.py
By default, it runs the equivalent of mecanum.set_chassis(0, 90, 0), i.e. v, d, w = 0, 90, 0
sudo python drive.py -v 100 -d 90 -w 0.5Arguments:
-v: int ∈ [-100, 100], default: 0
Speed. Not linear, does not correspond to physical speed.-d: float ∈ [-360, 360], default: 90
Direction (deg). 0 degrees is strafing right, 90 forwards.-w: float ∈ [-2.0, 2.0], default: 0
Turning rate. Not linear, does not correspond to physical angular velocity.
If started simultaneously on 6 TurboPis arranged in a tight circle, the robots will mill in a circle.
Immediately start milling:
sudo python milling_controller.pyWait for a command or key1 press to actually start:
sudo python milling_controller.py --staRun the program without moving the wheels, and collect the logs in ~/logs/test_run:
sudo python milling_controller.py test_run --dryArguments:
project: string, default is of the format YYMMDD-hhmmss-MillingProgram-turbopi-nn
This will be the name of the folder used for logs.--root: string, default:'~/logs/'
This is where the project folder will be stored. If the directory does not exist, you will be prompted to create it.--dry_run: store_true flag
Wheel motors will not actuate if this is passed.--start_paused: store_true flag
The robot will start in a paused state. You can start the program with 1 click of key1 (towards the front of the robot) or by using the remote control broadcaster.--nolog: store_true flag
Logging of will be disabled if this is passed. By default, sensor and wheel movements are logged on each loop/frame of the program.