robocup-ss13
Building the most awesome robot-soccer-team in existence.
Building the most awesome robot-soccer-team in existence.
Building the most awesome robot-soccer-team in existence.
pseudo code
and look-at direction / see vector
keyframes for stand ups
-from front
-from back
finish last pending tasks of the scenegraph group (eg. add a possibility to use the agents monitor socket instead of creating an own one upon calling scene.getInstance()).
While working with the monitor protocol I recognized that our parser splits floating point numbers. If a number like (1.37654e-005) occurs it will give me a list of two elements: [1.37654 , "e-005"] instead of a list containing the float (like [1.37654e-005] or at least ["1.37654e-005"]).
I'll write a quick fix for my scene graph class, so it's not really urgent, but I'd really appreciate if someone who knows how the parser works could fix this issue.
0 = no clue
0.5 = seen before
1 = seeing
to run soberly
Gyro / Accelerometer info -> nao class
movements for some kicks, perhaps there would be a kick for short and long distances
the goalie has to make a parry to keep the ball
When I want the Nao to run with the run()
function, it indeterministically is beamed to various locations on the field.
But it doesn't move to the location provided.
When your agents show weird behavior or suddenly start to fly you can enable synchronous mode of simspark
I added the (syn)
command is added to every packet in the socket.
To configure the server to run in agent sync mode, set agentSyncMode
in the file ~/.simspark/spark.rb
to true
.
$agentSyncMode = true
Now the server waits until every agent has finished his duty.
Compare the timestamps of the data that we receive if we first call monitor-socket.receive() and then agent-socket.receive() and vice versa.
The communication section for the presentation is too long. It would be nice if somebody could shorten it a little (or a lot). Otherwise we will have to shorten it.
Right now we can't fall while moving because a beam command adjustes the torso.
This is unfair, someone solve this somehow!
If the Nao only see one static entity he can't locate his position.
Solve this problem.
My idea:
In this case run_tactics() returns:
(('run',False), ('stand_up',False), ('kick',false), ('say',False), ('head',True))
to take a look around.
If tactics returns this, stop the head movement after each key frame until the server sends a see message. If tactics still returns the upper tuple save all static entities from the see message, put them to the next incoming see list and proceed the next key frame.
Give this 'bigger' see list to self.perception.process_vision().
pls ask jan about this ^^
Every Nao we tried was only connected to the Goal and left corner (when looking straight into enemies' half). The other corner is not connected (Side of Team Right. The Corner on the right of the goal).
Is it a perception bug or is the line just not drawn?
Movement buggy, running to (0, 0) crashes agent due to division by zero.
I added an if-else clause to check the condition, but now simply nothing happens when you call run(0, 0)
.
If I run agent.py it runs through a few iterations but then crashes after a few seconds because the server just stops transmitting data in the middle:
For examle it sends the following data and then just stops in the middle:
(time (now 2289.95))(GS (t 0.00) (pm BeforeKickOff))(GYR (n torso) (rt 0.00 -0.00 0.00))(ACC (n torso) (a -0.00 0.00 0.00))(HJ (n hj1) (ax 0.00))(HJ (n hj2) (ax -0.00))(See (G2R (pol 26.04 1.26 0.61)) (G1R (pol 26.13 5.85 0.35)) (F1R (pol 28.48 23.93 -1.02)) (F2R (pol 27.39 -17.77 -0.98)) (B (pol 11.14 8.28 -2.59)) (P (team DAI-Labor) (id 1) (rlowerarm (pol 0.19 -34.21 -21.48)) (llowerarm (pol 0.19 35.37 -21.29))) (L (pol 13.84 -37.23 -2.26) (pol 16.00 46.65 -1.79)) (L (pol 27.37 -17.82 -1.10) (pol 28.43 24.01 -0.93)) (L (pol 28.49 24.07 -1.06) (pol 13.43 60.24 -2.19)) (L (pol 27.34 -17.89 -1.19) (pol 9.71 -59.63 -3.26)) (L (pol 24.65 10.77 -1.42) (pol 24.23 -3.44 -1.32)) (L (pol 24.65 10.70 -1.21) (pol 26.43 10.10 -1.02)) (L (pol 24.21 -3.70 -1.31) (pol 26.05 -2.89 -1.08)) (L (pol 13.11 7.35 -2.51) (pol 12.94 12.54 -2.41)) (L (pol 12.92 12.43 -2.53) (pol 12.16 16.73 -2.44)) (L (pol 12.16 16.76 -2.57) (pol 10.94 18.85 -3.05)) (L (pol 10.96 18.59 -2.75) (pol 9.80 16.39 -3.26)) (L (pol 9.79 16.24 -3.33) (pol 9.17 10.16 -3.40)) (L (pol 9.16 10.09 -3.48) (pol 9.41 2.68 -3.30)) (L (pol 9.42 2.44 -3.41) (pol 10.39 -1.76 -3.06)) (L (pol 10.41 -1.57 -2.95) (pol 11.65 -1.46 -2.68)) (L (pol 11.64 -1.22 -2.56) (pol 12.65 1.96 -2.38)) (L (pol 12.64 1.77 -2.43) (pol 13.10 7.15 -2.35)))(HJ (n raj1) (ax 0.00))(HJ (n raj2) (ax -0.00))(HJ (n raj3) (ax 0.00))(HJ (n raj4) (ax 0.00))(HJ (n laj1) (ax 0.00))(HJ (n laj2) (ax 0.00))(HJ (n laj3) (ax 0.00))(
Mit diesem Fehler:
Traceback (most recent call last):
File "./agent.py", line 30, in <module>
Agent()
File "./agent.py", line 12, in __init__
self.start()
File "./agent.py", line 22, in start
parsed = parser.parse_sexp(msg)
File "/Users/max/Documents/Studium/robocup-ss13.git/src/parser.py", line 63, in parse_sexp
assert not stack, "Trouble with nesting of brackets"
AssertionError: Trouble with nesting of brackets
I tried to fix this for quite a long time but no success :/
loop that pops first parser block from list and gives it to the responsible processing method.
Easier function calls and moar Comments to come.
we need some statistics/ graphics to check weather we can use it for crash detection with other entities
... so it only sends one packet per cycle.
We get new informations from the server every 20 ms. So we have 20 ms to process erverything.
If we constantly fail to do our stuff in time we will inevitable work with outdated information and send the server commands for game situations long gone.
No need to tell but that wouldn't look good ^^
After some seconds in a 1-vs-1 match against a UTA agent:
Traceback (most recent call last):
File "./agent.py", line 253, in <module>
a.start()
File "./agent.py", line 111, in start
self.hearObj = self.communication.hear(current_preceptor)
File "/home/jan/Dropbox/Uni/2013 SoSe/MPGI 3 Pr/robocup-ss13/src/communication.py", line 22, in hear
return t.translate(h[3])
File "/home/jan/Dropbox/Uni/2013 SoSe/MPGI 3 Pr/robocup-ss13/src/translator.py", line 20, in translate
if len(msg) < 3:
TypeError: object of type 'int' has no len()
When the player has an ID other than 1 distance calculation doesn't work.
This is connected to the error that at the beginning there are 6 players in world.players
but these magically vanish during each turn from the list. In the end of the cycle there are typically only 1 or 2 left in the array.
movements for look around or look to a special point
Somehow our agent does not register itself properly anymore since lots of commits. I was not able to find the commit in question.
Strange things are:
Magma Offenburg mention a strange Simspark bug in their code comments, which causes problems when packets are sent too frequently to the server.
I built a workaround for this, but still the registration fails.
So this still needs to get fixed.
As an exercise for the final presentation near the end of the semester:
Prepare a presentation (read as: one coherent, single set of slides) that describes the current state and the applied methods, if relevant.
This should include a general overview of your architecture, a 'feature list' of the implemented components, and maybe interdependencies.
What has been finished, and how well does it work?
On a side-note: What has been developed and is not being used?
What were the difficulties faced in the process?
Also think of a means of showing (in a structured way) this state in a live-demonstration and/or in recorded form.
cProfile is a standard performance analyzer/profiler for python.
http://www.vrplumber.com/programming/runsnakerun/ is a GUI that displays cProfile's results as pretty as this:
Since our agent's performance is quite poor, we should take look at this.
It's really easy. You just need to:
sudo pip install SquareMap RunSnakeRun
and then you can:
python -m cProfile -o <outputfilename> agent.py 1
python runsnake.py <inputfilename>
exchanging info
Current self-localiziation only uses the goals & flags, but if the nao does not see any, he does not know where he is.
Processing the lines on the field should solve this problem.
since we're going to present other people's work, everyone shall make his/her own wiki site shiny.
I'd like to know the range of player IDs as received in a vision perceptor block:
(P (team ) (id ) +( (pol )))
And we need to know the own player ID, so the agent can access itself in the world's player list.
So when someone knows... share your wisdom.
At the moment there is no way to determine where the robot is standing,
there needs to be a class that takes care of providing position and rotation of the robot.
keeps the head standing still in the normal keyframes, the joints from the head are only used in the head-frames
Someone shall start some matches with UT Austin Villa and count their goals against a dead team / without another team, so we can measure our agent's quality.
It's rather a private issue but I think I am not the only one:
I have the problem that Simspark is broken after an update.
Concretely the binary rcsoccersim3d
is not included in the new packet after the update and I wasn't able to install the old package manually.
Has anyone the same problem?
When a bot try to kick the ball and fall down and stand up again, but fall down immediately again.
It is not really clear to me whether it's because of to soon kick try or a general stand up bug.
He always fall on back when I tried.
Create a buffer which saves the last n (maybe 10) world objects and add it to agent.py.
Give it to the constructor of tactics_main and put all calculated distance lists/dicts in it (in run_tactics()).
Maybe it would be good to create a new data structur for this buffer so that we don't have to respect a special order (like f. e. in a list) and can call the data we need by name and index.
Please organize subtasks so we can distribute this big job to people without a task and speed up the process of 'building the most awesome robot-soccer-team in existence'.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.