Skip to content

Latest commit

 

History

History

RockPaperScissors

Rock Paper Scissors

I developed "Rock Paper Scissors" game machine on Nucleo L401RE board with Panasonic AMG8833 in January 2019, just after the first relase of STM32Cube.AI (December 2018) became available for developers: the demo in on YouTube. I remember my excitement on STM32Cube.AI -- AI can run on such a tiny device!

In this project, I improve the past project.

Note: STMicroelectronics also developed a toy similar to mine, but with VL53L5CX.

Step 1: Data collection of 8x8 matrix temperature data.

[AMG8833]--I2C-->[NUCLEO-L476RG] ----UART----> [Thermography GUI] --> CSV files of 8x8 matrix data saved in "/data" folder

Step 2: Training DNN and generate a Keras model in HDF format.

Step 3: Generate code with the HDF file.

Keras model (.h5) --> CubeIDE with STM32Cube.AI --> Generated code

Step 4: Add code to the generated one to make it a "Rock Paper Scissors" game machine.

Step 5: Run the code on the device to play "Rock Paper Scissors".

Step 1: Data collection of 8x8 matrix temperature data

=> Thermography

Step 2: Training DNN and generate Keras model

=> Training DNN with DCT Type-II coefficients as heatmap feature

The DNN model's recognition performance is much better than that of my old project in 2019: overfitting occured in the old model. The performance has been improved by dropping DCT coefficients of higher frequencies drastically and adding another dense layer.

Step 3 ~ Step 5: Edge AI implementation and experiment

=> RockPaperScissors with CubeIDE and STM32Cube.AI

The hardware part of "RockPaperScissors" on STMicroelectronics NUCLEO-L476RG board with the latest version of CubeIDE/CubeMX and STM32Cube.AI.

Extra: 3DCG animation

I have been actively using Blender since the COVID19 pandemic for prototyping something in a virtual world. This time I use Blender and GIMP to make a digital twin of my "Rock Paper Scissors" game machine.

Animations of the digital twin on YouTube:

=> Blender files

I used Python to animate text on the LCD in the 3DCG scene. The script must be run just once after the blender file is opened.

I also used Python to generate DNN programatically.