Added size of message to rescue.py at mandrake. Testing against the kernel failed, because the kernel starts already after receiving a single message from the gis (the world).
The gis gives directly an error-message that it cannot open the specified tcp-port. The kernel sends a connection request to port 7001, which is never received. According to the specs the gis-port should be 6001.
Changing the gis-port in boot/config.txt from 7001 to 6001 solves the problem.
Downloaded rescue.py from faro. The kernel receives the message, and tries to acknowledge 'addressAck'. This fails, because no tcp connection to port 36748 could be opened.
The kernel listens to the OLD_CONSTANTS: AK_CONNECT 10 KA_CONNECT_OK 50 KA_CONNECT_ERROR 51 AK_ACKNOWLEDGE 11
rescue.py uploaded to faro again.
23 November 2005
Uploaded rescue.py to faro. Imported binascii, and use binascii.unhexlify.
Kernel responds with 'Unexpected EOF from 127.0.0.1:38860', after reading respectively 4, 20 and 0 bytes.
Uploaded simply_connect to faro. An AK_CONNECT message generates 4 and 24 bytes message.
Start gis with '0gis.sh -mapdir ../maps/Kobe/ -gisini ../maps//Kobe/gisini.txt'
Before a message first the size is sent. Simple_connect reports 'BFFFE8CC',
but the kernel interprets that as -1073747764 bytes, and crashes. '0000008F' gives 143 bytes (without crash). Sending '00000018' gives the expected 24 bytes.
11 November 2005
Compilation and linking of all examples of OpenThread works with gcc-3.3!
Compilation and linking of Producer/Test/KeyboardMouse now works. RenderSurface now fails, including reference to cout.
Added -print-multi-lib, and now rendersurface_test works (don't ask why).
Now Trackball, fails because it needs OSG, which is explicity set in the GNUmakefile. Pointing to /home/arnoud/packages repaires this. Running trackball fails, because it cannot find the cfg files (environment setting PRODUCER_CONFIG_FILE_PATH doesn't work).
All test are now compiled and linked!
Continued with OpenSceneGraph. INC_DIR and LIB_DIR definition in pkg descriptions of OpenThread and Producer.
Make of OpenSceneGraph was succesfull, make install INST_LOCATION=/home/arnoud/packages/OpenSceneGraph-0.9.8/ also. Not tested the examples.
~/projects/roboresc/rescue-GO2005/program/viewer/3Drescue -d ../../../boot/ was already compiled, and runs nicely, only complains about DISPLAY. Setting thedisplay gives 184.108.40.206:0.0 has no GLX extension.
Back to mandrake. The -print-multi-lib trick worked, installed Producer again. Also the OpenSceneGraph/applications linked with the -print-multi-lib trick.
The -print-multi-lib trick worked, because no executable was produced! Adding -L /usr/local/lib solved the trick for Producer/Test and 3Drescue.
3Drescue -d ../../boot works, although the city is displayed upside down.
Left button is rotate, middle is translate, right is zoom.
10 November 2005
Compilation and linking of Producer/Test/KeyboardMouse with gcc-3.4.4 succeeded(/usr/bin/gcc, gcc-3.2 was asked).
Linking of Producer/Test/RenderSurface fails with gcc-3.4.4 in the same way as mandrake.
kernel responds with 'AK_CONNECT', followed by a warning that
the connection is closed before a OK could be sent.
Looked at the differences between the different librescue libraries that
are running around. The librescue of the kernel is completely different,
but defines the input, output and tcp/udp connections to make a connection.
The librescue directories of 3Dviewer and UvA are more in sync. Agent is
a concept only available in the UvA lib, and could probably better move
to libadk. basic.h differs on the value of VK_CONNECT and KA_HEAR. input only differs on a printf, objectPool on an assert. Config, Param, and enum have many differences. Strange enough output and LongUDP also differ considerably.
Sending the same bytes with python is difficult:
TypeError: sendall() argument 1 must be string or read-only buffer, not long
9 November 2005
At faro.science.uva.nl the source code of version 0.9.8-2 available. Compilation of Producer/Test/KeyboardMouse failed with gcc-2.95.3.
4 November 2005
Downloaded source-code from version 0.9.9 from openscenegraph.org. OpenThreads en Producer compiled and installed without problem.
The plugins had a dependency to libgif and libtiff. Installed the suggested packages by Mandrake. Compilation continued, until the applications.
Application osgconv complained about an undefined reference to Producer::CameraGroup.
Producer/test/RenderSurface complained about undefined reference to OpenThread::Barrier. Same complain with g++-3.4.3.
Did 'make install' to install libraries and plugins, leaving the problem with the application for the moment.
Tried to compile 3Dviewer again. draw.cpp and window.cpp complained about the enumeration ReferencePlane. Solved it in window.cpp with replacing ABSOLUTE with (osg::Transform::ReferenceFrame)1. Both files talk about OSG version 0.9.8, not 0.9.9. Source compiles, but many linking errors: osg::Node, osg::Referenced, etc.
4 November 2005
Downloaded viewer3D from http://kaspar.informatik.uni-freiburg.de/~rescue3D/.
Installed binary from openscenegraph on mandrake-decis. Version was compiled with gcc3, so conflict with gcc4. Running ./configure with CXX=/usr/bin/g++-3.4.3 solved the conflict.
Openscenegraph:Array had a problem with g++-3.4. Installed patch from http://openscenegraph.org/archiver/osg-users/2004-May/0622.html.
Openscenegraph:Array had an empty template. Adding -fpermissive to the CXXFLAGS solved the confict.
draw.cpp uses Vec3f, which is not part of the installed version 0.9.8, but can be found in version 0.9.9. Version 0.9.9 (May 2005) can be downloaded from http://openscenegraph.org/downloads/developer/OpenSceneGraph-0.9.9-1.tar.gz.
2 November 2005
Downloaded our rescue code from http://staff.fnwi.uva.nl/a.visser/research/roboresc/UvArescueC2004code.tgz. After small update (removing brackets in Memory.cxx) the code compiled, but didn't link due to a bug in gcc3 (solved gcc3.4.4).
Upgrading the decis-mandrake with gcc4.0.2 solved the problem, the code now links. The connection to the kernel is setup in the main.cpp via the libadk/Controller. Default the port 7000 is used, but the config.txt also defines kernel_udp_port 8000.
Our code works with port 8000 (udp), while sampleagents only works with port 7000 (tcp). Our code only works from the commandline, not from a script (!?). Only the police-agents move, the ambulance-agent crash because they think with behaviors:
min x: 22748000, max x: 23165400, min y: 3506100, max y: 3822600
Warning: object 266622301 assigned to 0 sectors
Warning: object 196821123 assigned to 0 sectors
AGENT ,t=4 Tell: "(243133949,264234665,)"
AGENT ,t=4 Tell: "(263167138,163426848,)"
Doing random task for agent 263167138 (886 < 2647)
Predicting Patrol without an Actor
Predicting Patrol with a SituationModel
The fire-agents crash much later:
AGENT ,t=7 Say: "PP_SAY MSG=agent 200790679 solve conflicts at position 133762882
AGENT ,t=7 Tell: "PP_TELL"
Started with many seperate fireagents, each with a different loglevel. Unfortunally, the rest of the agents with previous loglevel 7 crashed, and the other agents stopped moving (while the pathplanning still gave messages). Ambulance agent also crashed with a teammember in its behavior.
Debugged fireagent, segmentation fault is in Rescue::Object::inputAllProperty, called with an empty object from sense. Ambulance still crashes in the first timestep, even with all behaviours and strategies flagged out.
Protected sense_object against empty objects. Warning appears for 2/10 agents 4 times after a Tell. Also many times the warnings 'Ignoring say or tell message' and 'Heard say message from another platoon'. Some BasicCenter 'hearAgent SYnc error' warnings. Yet, the agents could save the whole city, although they had to extinguish some building several times because of the heat.
28 Oktober 2005
Spyse spython and seqpar demos also work.
Downloaded http://siahe.com/saviour/yab/yabapi-1.00-tcp-1.tar.gz, and now sampleagents.sh 127.0.0.1 7000 works in combination with no_civ.sh KobeNoCiv.
Only the viewer fails, at viewer.Main.main -> viewer.Main.parseArgs -> viewer.Util.myassert (Util.java:8), because now you have to select the port or logfile, but not both. Solved by a new script viewlog.sh.
Also the Civilians now work (no overrun error anymore, although they complain about 'Unknown header2. 0x54'.
26 Oktober 2005
Installed spyse-01 from http://spyse.sf.net in /Programs/Python234/Lib/site-packages/spyse on nb-avmovie.'Import spyse' works, and starts AMS and DF Agents as specified in __init__.py.
Was not able to start demo. spyse.demo.comm calls something like
spyse.getAMS().createAgent('Red', 'ReceiverAgent', locals()), but the ReceiverAgent class is not known to the Agent.
Starting the demo from the command-line (in the spyse directory) works better: python.exe demo/comm.py -v starts the agents, but Chili and Pepper create an exception.
Starting the demo FSM seems to work (in the spyse/demo directory from the command-line): python.exe fsm.py -v starts the agents, and Hot and Red are started, initialised, unregistered and died.
Starting the bookTrading demo pops up three windows, but typing a title results in Barnes&Noble making endless proposals.
Starting the trafficJam demo fails due to dependencies between OpenGl and Numeric packages.
Finally the Subscription demo works perfect, with an extensive discussion between the agents.
11 Oktober 2005
Installed rescue-0_48 on decis-machine with clean Mandrake installation. Civilians and SampleAgents didn't work. Civilians give LibRescue::Overrun, and no yabapi is included in the distribution any more.
Installed rescue-0_44 on same decis-machine. SampleAgents did work. Cleaned many problems with deprecated Civilians-code with the aid of the 0_48 distribution. On the end the code compiled, but didn't link. Using the 0_48 Civilian gave the same LibRescue::Overrun error.