Skip to content

v0.1.0

Compare
Choose a tag to compare
@thias15 thias15 released this 30 Sep 14:43
· 1056 commits to master since this release
686b372

This is the first release. Several people were able to complete all parts of the project. The project is evolving and things may change a lot. The following summarizes current features and known issues for the different components.

Full Changelog: https://github.com/isl-org/OpenBot/commits/v0.1.0

3D-printed body

There are 3 different versions available, the regular body, the slim body and the glueable body. Depending on the build plate size of your 3D printer, at least one of those models should work. There are no known issues, but in the DIY version it is a bit challenging to fit all the wiring into the body.

Assembly

The repo includes instructions for a DIY build which is recommended for building a single robot to try out the project. In order to reduce the wiring and make assembly easier, a custom PCB is also available.

Custom PCB

There are two PCBs available, V1 and V2. Both versions of the PCB are supported by the Arduino firmware. However, there is no reason to order PCB V1 anymore, since PCB V2 has the same features and several (mostly minor) improvements:

  • Move the right speed sensor to pin D3 to enable interrupt functionality
  • Add Power LED for main battery
  • Update some components which are more commonly available
  • Update voltage divider to 20k/10k for better precision
  • Change motor connectors to upright version for easier access

Both PCBs have one known issue: When the ultrasonic sensor is used, the NewPing library causes an issue at pin 8. As a result, the right indicator light is very dim.

Firmware

The firmware has the following features:

  • support for three configurations: DIY, PCB_V1 and PCB_V2
  • receive control commands from Android application (USB serial)
  • produce low-level controls (PWM) for the vehicle
  • toggle left and right indicator signals
  • wheel odometry based on optical speed sensors
  • estimate battery voltage via voltage divider
  • estimate distance based on sonar sensor
  • send sensor readings to Android application (USB serial)

The firmware currently only supports the Arduino Nano microcontroller. However, porting it to other microcontrollers should be straight-forward. There are no known issues.

Android App

The app has the following features:

  • BT game controller interface for manual control of OpenBot
  • 3 different vehicle speeds (Slow - 50%, Normal - 75%, Fast - 100%)
  • Run neural network for person following
  • Run neural network for autonomous navigation
  • Data logger to collect datasets for training of autonomous driving policy

The app has the following known issues:

  • If the phone is mounted in the wrong orientation, the person following will drive in the opposite direction
  • On some phones (e.g. Asus Zenfone Max Pro (M2) ZB631KL) the front and rear camera are reversed (see issue #15)
  • Some users with very old smartphones have reported incorrect mapping of the game controller
  • Only BT controllers detected as gamepad work (e.g. Xbox, PS4, Nvidia Shield, etc.)

You can download the apk from the resources and install it on your phone directly. Note, that the app is signed only with a debug key. Alternatively, you can build the app yourself. If you want to deploy your own model, this is currently necessary.

The app was tested across 10 different smartphones from the past two years and works on all of them.

Jupyter Notebook

The notebook has the following features:

  • Data preprocessing and augmentation
  • Train neural networks for autonomous navigation (predefined models available)
  • Monitor training progress in tensorboard (live) and plot the evolution of several metrics (after training)
  • Visualize training data with labels and corresponding policy prediction
  • Convert the trained policy to a tflite model for deployment in the Android application

There are no known issues, but training a driving policy requires a lot of resources and may slow down or even freeze your machine. It is recommended to use a high-end laptop or workstation with large amount of RAM and dedicated GPU, especially when training with larger batch sizes. The documentation is currently also not very detailed.

What's Changed