lunes, 28 de septiembre de 2015

Mini-Sumo Robot: How to Build from 0!

Introduction

First of all I'll introduce you what is a Mini Sumo Robot.
Similar to Japanese Sumo Battles, when two fat guys must push the other away the ring (called there "tatami"), the Mini Sumo battles consist of matches where two autonomous robots must drop the other. Why autonomous? Because they are not radio-controlled outside, they must have their own sensors to decide themselves how to win the battle.

As every single sport, each of the robots has physical maximum specifications, that are


  • Max Weight of 500 g (aproximately 17.6 oz)
  • Max Size of 10cm x 10cm (aproximately 3.9 in)
 The robot can extend its maximum size deploying structures that must be always attached always when the round has already started.
By the other hand, the pitch used in the competition has also standard sizes and colors that also can vary little on each tournament. Usually looks like this:


There are other rules such as activation mode or robot starting placement, but these are the elemental ones that are in every mini sumo competition.

Our approach
The rules and understanding of what to make are absolutely easy as the interesting and more tricky part is the knowledge need to build a successful and competitive robot. 

There are things every robot must own always to work, that are:
  • Motors and wheels (to move)
  • Battery (to supply energy to motors and sensors)
  • Ramp (optional, but you need it to defend your frontal side)
  • Enemy detection sensors (to detect other robots in the distance)
  • White ground sensors (to detect the end of the pitch)
And the most important things robot's skills we'd like to remark are
  • The wheels traction
  • The edge of the ramp (that must own the best ground contact)
  • The robot speed
  • The sensors distance range (how far away they can detect the others)
  • The robot's strategy
Other things such as battery duration or motors torque are important, but are not determinant on the moment of the match.


We'll try to make all of them the best as possible while making it affordable.

Robot's components that are needed to but in the internet:
  • LiPo rechargable Battery 7,4v 1320 mah: The mili-Ampere-hour (mah) are excessively high, and could be lower (and we would have a smaller battery), but we managed to make it fit in the robot. The MiliAmperHour unity defines how long a battery will last. Higher value means more time the robot can work without charging (formally speaking, 1320 mah means that if the battery is used at 1320 mili-ampere power consumption, it will last for 1 hour). NOTE: If you want cheaper battery you can use a standard 9v battery, but in the long run as it can not be recharged you will spend more money. 
  • Pololu Micro-Metal Gearmotors HP,  We used a 30:1 reduction stage that given us a really high speed although that makes our robot to have a lower reaction to inertia. Also as our wheels' diameter is as low as 28 mm so if your robot has a higher value you should consider the 50:1 and 75:1 stages. Consider that a bigger wheel means more speed but lower torque while lower gear stage means higher speed but lower torque. You should compensate a small wheel with a low gear stage, and a big wheel with a high gear stage.
  • Solarbotics High Traction Wheels, that 28 mm diammeter high traction wheels are compatible with pololu motors (you'll need a Allen Wrench to stick them. 
Robot's components that are needed to buy (but that are easy to find in any electronic shop:
  • Robot ramp: There are several materials you can test, pololu and finger-tech sells a version, but we currently used a standard putty plate {image} that was found in a ironmongery store. It works well. This topic is really open and you should try what you think that works better.
  • Electronic Universal PCB 5cm x 10cm. There's no need to make a normal; PCB, and in our case we preferred to use that kind of circuit as it costs less space than a though hole PCB (we currently don't own the SMT technology so we think that this is the easiest way to lower the small space of a minisumo robot
  • PIC18F4550 Microcontroller, 
  • IRM8601 Infrared receiver 
  • Infrared emitters, 
  • ULN2803
  • L298 H-Bridge
  • 7805 tension regulator
  • resistors 10k ohm, 47 ohm, 330 ohm
  • Diodes 1N5819
  • 100 nf ceramic capacitors
  • 47 uf electrolytic capacitors
  • Wires of two kinds, single-core wire for the universal PCB bridges and multi-core wire for the external connections (we crimped the wire terminals)


Total Robot Price

PartAmountUnit PriceTotal Price
Pololu Motors HP415.95$63.8$
LiPo Battery114.36$14.36$
High traction Wheels43.56$14.24$
PIC18F45501$5.75$5.75
L298 H bridge2$4.29$8.58
Rest<20$
Total126.73$

miércoles, 25 de marzo de 2015

Head Soccer 06 Released

Hi and welcome to all! We are proud to announce we've just released the version 0.6.3 of the head soccer game we're creating. We added lots of features such as

  • Current ping sensor, with colors that show how big is the client/server delay  in ms

Ping Comment
0-100 Ideal
100-150 Almost perfect
150-200 Very good
200-250 Good
250-300 Playable
300-400 Slow reaction
400-500 Laggy
+500 Unplayable
  • Chat Added, so as lots of multiplayer games when you press the "T" key you are able to speak to the room chat
  • The game performance in general has been increased by replacing the old system that used to update al the screen all the time with the new system that only updates the frames that changes, it means the players area, the ball area *plus* the scoreboard, clock, chat, and etc.
  • Restore last room joined: with this feature when you disconnect from a server without the leave button, when you connect again you're able to go to the last room you were by only clicking one button. Currently you are not able to continue a match, as it is declared as W.O, but maybe in the future this will change
  • Sign in, sign up, play as a guest. Currently you can use them but being a registered player has no benefit, up to now, in the future it would be used to register player achievements and much more.
  • Now the server program puts your ip in a internet server with the objective of making all people that play able to see the server from their Head Soccer Clients. As far as I know the game does not crash if there is no internet connection to post there the information, so you can still use that way but you'll need to check manually the ip to select the server to connect (for example in a local network with no internet connection available). When you open a server you'll be asked for your ip, that will be sent to head soccer clients to make them known your server ip address.
  • Also, the only port used is 9999, in the future probably we will extend the game to have the configuration to elect a port



Now some pictures!








As always



Feel free to post any questions or ideas to improve our project! Also if you'd like to join our team you're welcome :)

jueves, 19 de febrero de 2015

An Incredible proyect, now with source code released!

This game we have made long time ago, called free kick, has now it's source code released. It is a game where you must score a goal beating a goalkeeper giving the ball the correct serve and power amount. It is inspired in the fifa and pes shooting system, and we have made a version where you could record a goal but, unfortunately it is lost that version. However maybe it the future we could create that option again, and maybe create a real game based on this idea, couldn't we?

It only uses python-pygame, it doesn't need pybox2d, it these ages I wasn't so lazy

Now a video of the game


And the source code!!

Source code (git)

jueves, 12 de febrero de 2015

Head Soccer Network!

We have just released our first game, that is a Network version of the popular Head sports Soccer games. Currently it is a simplified version as you can not kick the ball, only hit it with your head but what makes it funny is that you can play with other rivals in a local network or in internet.
We're sorry we currently have no rented server you could connect but sometimes we open a i7 powerful computer as a server, to make tests, maybe you could be lucky to join that time?

The game supports only a friendly mode because of its early development but we plan to add lots of features like tournaments, login system, statistics and more, be ready because it is only the start!

Now some pictures






And here some binary executables, plus the source code, for windows and Linux, however in order to play source code version you'll need to install python, pygame, box2d and our modified version of podsixnet. We'll include it in the download. Also remember download contains both server and client versions, so you can play with friends using your own server








Welcome to our projects blog!

Hi and welcome to all!, this blog will contain all the development made by our programmers community, "GND python dev".
As our name says, the majority of our projects will be made using the python programming languaje , that in our opinion is the programming language that let you to program the most with less lines of code, and it's easy to install, if you contrast with c++ that requires you to install several complex things in order to create a graphic game and the depend of the operative system, always you'll need to change things if you want a program to work both in Linux, windows and Mac OS.

Our projects will be open source, that means that the source code will be public and anyone who wants to help can join. There is a big list of old projects that in our team we have made in the past that will be published in the future, and there is also an old blog in Spanish with some of them, if you are curious.

Currently we are developing graphic games made with the well-known pygame games graphics library , plus other not so common libraries to use network features. That is another reason we have elected python instead of c++, it's really difficult to deal with connections, and in python there are at least 3 or more libraries that make network working trivial. Our network library is called podsixnet, but as that library does not support UDP network protocol we have made a modified version that does. In the next post we will give you a link if you want to download that version of podsixnet that supports both UDP and TCP protocols.

In future also we have plans of working on mobile versions of our games that could be compatible with PC server so the games could become more popular, but there is still a lot of work to be done.


See you in next post!