Skip to content

Instantly share code, notes, and snippets.

@danaibrilli
Last active September 11, 2022 09:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save danaibrilli/5907d5b43d7a6e358526899bfe2b20e9 to your computer and use it in GitHub Desktop.
Save danaibrilli/5907d5b43d7a6e358526899bfe2b20e9 to your computer and use it in GitHub Desktop.
Gist of final evaluations for the work I have done for the project "DIY Robot" of GFOSS organisation during Google Summer of Code 2022.

!GSOC 2022 - DIY Robot!

About the project

The goal of this project is to develop a low-cost 3d-printed assembled DIY robot kit for educators that uses basic electronic circuits and sensors. This project started in GSoC 2019 in collaboration with Open Technologies Alliance (GFOSS) and will soon be comparable to alternative commercial robots! It plans on doing it by providing all the necessary instructions for the printing, assembly and programming for all types of users. One can use the DIY Robot functionalities either by using the Google Blockly front-end or by running a jupyter notebook and experimenting directly on some python code. My main focus during Google Summer of Code 2022 was the back-end code and more specifically, the improvement of the core library that controls the robot, its motors and all its connected sensors and providing the more experienced users with a jupyter interface option. You can find the project here

Deliverables

As mentioned before, the main goal for this project was to improve the backend control of the robot, robot_lib. Robot_lib containes all the necessary classes for controlling the robot and interacting with its sensors. Part of this goal was rewriting a large part of the robot_lib to incorporate sensors and control systems, but also provide a more precise movement. Also, we wanted to create an interface for more experienced users in programming, thus we used a jupyter-server that runs jupyter-notebooks and has direct access to all robot_lib files. Even more experienced users can make changes to robot_lib classes and functions and customize even further the DIY Robot.

A more comprehensive list of the goals that were achieved follows:

  1. Precise Movement see more
  • updating the IMU class
  • creating & tuning a gyro - PID controller for following the same direction based on the angle speed of the robot
  • updating the Motor & MotorEncoder Class
  • creating a state-machine to detect motor encoder ticks more precisely
  • using Motor Encoder Ticks to calculate traveled distance
  • added a gyro - PID controller and a ticks control to turn more precisely
  1. Motor PID-Controllers see more
  • creating and tuning a PID controller for adjusting voltage according to a PID Controller's correction based on detected motor speed (ticks/second)
  • creating MotorPID class that combines the Motor and the MotorEncoder class using the above PID controller to update Motor's voltage and target speed at each step
  • adding a gyro-PID Controller on top of the Motor PID Controller to adjust the target speed
  • rewriting master_robot, a class to control the whole robot and include all new changes
  • changing blockly function arguments to match current robot_lib version
  1. Jupyter Notebook Container see more
  • creating Dockerfile for a Jupyter Notebook Container based on basic_image
  • creating a pip package out of robot_lib to make its access more user friendly
  • testing all together

Future Plans

Working on this project has been very inspiring to me, so I will continue working on it after the end of the GSoC program. I will work on further testing and implementing some learning scenarios and coding examples. In order to make the project accessible to everyone, I plan on writing detailed documentation and guidelines with images addressing both educators and students.

People & Organisation

It has been an amazing opportunity to use my skills in python, robotics and control to contribute to a project with such impact! As a kid, I was lucky enough to go to a Model High-School that had a tradition with Robotics Competitions and so I developed a passion in Robotics, acknowledging that it is a very expensive sport for most schools. This project will give the opportunity to every educator in Greece to create and use this DIY Robot at school, promoting STEM in Education! I am very grateful to have been given the opportunity to work on this project and help make robotics accessible to everyone!!!!

I would like to thank my mentors for assisting and supporting me:

Iraklis Varlamis

Christos Chronis

Student:

Danai Brilli

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment