- We now have Endstops for the rotation and the translation of our axis. Writing this down, it sounds not as impressive anymore, but it is an important thing for the controller to know where the motors are, especially for the linear movement. With that we can get not only the relative position via the steps of the motor, but also the absolute position of the axis. Otherwise, after each "startup" of the system the motor would not know where it is and if it is told to go somewhere, that somewhere might be out of physical bounds. These end stops also do a surprisingly good job in compensating lost steps (at least for the rotation)
- For the translation a simple switch does the trick.
- For the rotation however, we could not use a switch. By that we would limit our movement to < 360°. So instead we went for a simple "light barrier" which gets interrupted by a pin attached to the axis.
- The whole thing looks like this
- But one rather big problem remains:
- Even we are about to loose overview of what is what in this mess ... we definitively need to design a pcb ... but for now, i might do some cleaning up using a "perfboard"
The firts milestone has reached:
- adjustments on the table (new feet, and a little bit higher)
- design of more 3d parts to mount the rails in the right height
- designing and printing a decoupling which should take care of the remaining inaccuracies of the alignment
- final physical setup of one axis
Integrating the Camera is the next step in our project: It is required for the computer driven players to know where the ball is.
- We built a mount for the camera
- Fight with nvidia:
We originally planed to use a nvidia jetsion for this project. An arm-based computer platform with some of nvidias CUDA cores for graphics acceleration. But nvidia really has it's way of making things unnecessary complicated. Due to this extremely closed source and hardware, everything needs to be at an exact version provided by nvidia. So we couldn't even install a recent Linux which lead to more problems with ROS and camera drivers and so on. Long story short: after spending loads of time, we decided to go with an x86 based mini computer with a dedicated graphics-card, yet to be bought. Another benefit, as the university completely closed forstudents, we can continue his development at home with some prerecorded footage of the camera and the camera itself attached to his computer.
So far everything is working, our prototype is good and complete, but here is a to-do-list what we need to improve:
- the stepper library we used is not interrupt driven
- implement our own interrupt driven library with acceleration and all the good stuff
- we've got a better stepper driver with way more sub steps for smoother movement
- make that thing work
- a real pulley instead of that hacked 3d printed not really fitting
- Arduino is too slow
- introducing STM32F103 → 72 Mhz (9 times as fast and with way more features) ... much better
- actual brackets instead of hot glue ... so that it then qualifies as production ready ^^ !!
- mount it to our awesome table
Now that we can move the motors, we have the first prototype of the general idea of how we want to move the players!
All what we need:
- an Arduino
- next best stepper library we could find
- a huge stepper driver
- a linear movement device
- custom 3d- printed mount
- some other 3d-printer parts (as the belt n stuff)
- some super hacky printed pulley
- loads of random cables
- and of course ... loads of hot-glue holding everything together
At the end this prototype shows, that our plan might actually work:
We decided to use Stepper Motors. NEMA23 sized motors for the translation and smaller NEMA17 sized stepper motors for the rotation.
In order to be able to work on the AI part and add motors, the first step was to extend the table football:
We are starting a blog about our new Robotic Game AI platform "CIcker". In this blog, we will regularly post about this project, which we call it CIcker Season 1.
The goal of this project is to let AI play against a human player. This project is initiated by three students (Jonathan Beckhaus, Nico Winkelsträter and Ruben Ortlam) who visited the robotic activities at SwarmLab and visited the course Computational Intelligence in Games.
This blog is based on the blog notes written by Jonathan Beckhaus.
This is called Season 1, since in this season we will have AI against human. In Season 2, we aim to have AI against AI.