Pulsar124 Wikia

This is a work in progress. The idea is to build an autonomous mobile robot (most likely a quadruped) which would use deep learning (AI) to figure out how to accomplish tasks, without any pre-training (so-called "deep reinforcement learning"). The trick is to make it fully autonomous - no external power or computer, everything it needs it carries on itself.

In a simple case, each leg would have two joints (two servos), so there would be 8 servos in total. Also, the simplest case would have a 3-axis accellerometer as the only source of data. This can be used to figure out the current speed and perhaps even the location, detect falls and bumping into obstacles. In the future other sensors could be added (like a supersonic distance sensor). No vision planned at this point, to minimize the data stream (and make self-learning more realistic).

Parts[]

Testing[]

ADXL345 accelerometer[]

  • Connected ADXL345 to Jetson using I2C interface.
  • Did the following on Jetson Nano:
sudo apt-get update
sudo apt-get upgrade
i2cdetect -r -y 1  -> address 53 
sudo apt-get install python3-pip
pip3 install adafruit-circuitpython-adxl34x
import time
import board
import busio
import adafruit_adxl34x
i2c = busio.I2C(board.SCL, board.SDA)
accelerometer = adafruit_adxl34x.ADXL345(i2c)
while True:
   print("%f %f %f"%accelerometer.acceleration)
  • I discovered that I am getting ~100 unique measurements per second. Trying to figure out how to increase the number using the adxl34x library.
  • More importantly, Python produces maximum 1000 measurements per second. I need many more for accurate velocity/coordinates integration.
  • Trying to find C/C++ support for either I2C or SPI. This should produce much higher speed.