- 3D user-interface (open)
- 3D-Mapping (open
- Joint Rescue Forces list of tasks
- small tasks
- Reconnect when in range
- Use status message to select view.
Started Labbook 2015
Split this Labbook in a Labbook about the Virtual Robot competition and one about the Agent Competition.
July 2, 2014
- Followed the instructions at wepupd8.org and installed Oracle JDK (version 1.7.0_60). Now the build is succesful.
June 30, 2014
June 18, 2014
- Checked rev 2289 from Victor. I get an image, but it seems that the AirRobot has no camera mounted. The AirRobot has a Camera, but of class AirRobotCamera. Don't see the robot, nor the camera. Tried position robot1, robot2 and robot3. rTried both AirRobot and P3AT.
- With a Kenaf on position robot4 + 0.1 I got an image (yet nothing in UDK). On the same position I saw the AirRobot fly by (but not the image from the camera). Changing the orientation of the fishEye had no effect :-).
June 17, 2014
- Checked the configuration in UT2004; Kurt3D uses JointParts for the PanTilt unit, while the P2AT uses MisPkg for the PanTilt. The JointParts is the same class also used for the wheels and joints of the walking robots. The actually configuration of the CameraPanTilt is in USARMisPkg.ini.
- UDK has an P3ATArm (based on the PioneerArm).
- Tried to test if I could control the AirRobot camera. Configured RoboCup2012-final, but UsarCommander failed on CameraData.vb:416 (out of memory). Checked my resources, but only using 5/8 Gb.
June 12, 2014
- Found the TDP from the Infrastructure winner of 2008: they proposed the introduction of emotions to the agents. That would have been a valuable addition when applied to the civilians, but they proposed it for the rescue agents.
- In 2010 Brave Circles proposed the flood simulator.
- Also found the TDP from the Infrastructure winner of 2011: they proposed an Online Rescue Simulation Launcher, which could be used to monitor the improvements of the teams during the year. Unfortunately, I never have seen this server online.
May 20, 2014
- Listen to a talk of Leo about a proof of the lineair convergence of ICP, and a variant which has quadratic convergence. In this article a comparison is made with what Pottmann called Tangent Distance Minimalization (TDM) of Chen and Medioni, which also show quadratic convergence when close. The variant of ICP which is used for comparison is the classic Besl92.
- The ICP in 3DTK seems to be derived from Greenspan 2001. This overview paper mentions GreenSpan01 (without k-d trees) and put Chen in a whole different family. The most promising ICP-version seems to be Zinsser03, which gets its robustness by outlier removal (Picky ICP). In the experimental comparison Chen and Zimsser have the best performance. Chen nor Zinsser are mentioned in the 3DTK code.
- The overview paper indicates about the idea of all points having the same weight (Besl92) versus giving them weight based on compatibility of normals (Godin1994), which is close to WSM.
- Chen92 was already mentioned in our Robust WSM paper.Pfister2002 doesn't compare with ICP, but with Lu and Milios (1997), unweighted least square matching (UWLS). We call this in our code Iterative dual correspondence (IDC) (which is a combination of ICP and matching-range-point rule).
April 17, 2014
- Debugged the CommLayer. When running with three agents, the Manifold is lost. With a single agent, I get the message No Patches yet (because the comstation is excluded).
- Made a small modification, to show the patches when an agent is alone. This works :-)
- Commited revision 2887.
April 15, 2014
- This IROS paper seems to have a comparable rendezvous strategy as our rescue robots. Essence of the article seems to be to switch halfway from a distinctiveness-based measure to a cost-reward model.
April 11, 2014
- The subview divides the screen in quadrants. Hardcoded it to 320x240, so that I am not longer dependent on resolution of the game. Tested it with a game in resolution 1280x720.
- With 3 robots, the AgentLayer updates a PoseUpdate 3 times.
- Removed a relay in BehaviorAgent, which sends relayedmessages while connected. Intention was to remove some unneeded communication, could be that I removed an essential link (didn't get many updates anymore when I switched to control three robots in the final).
- In the final I first steered robot2 through a number of doors. At the end I had to reach the door at the left corner. Because already 5 minutes where gone, I decided also to activate my other robots. Had trouble to be connected to all three, so tried to control them with Waypoints. That got them moving again, but also corrupted the map.
Before correction became to bad, I switched (at the 10min mark) to autonomous. Robot2 was able to get through the door in the large space behind it, but failed to cut the corner (while enough room was available). It showed a pathplanned path with many small curves. Robot1 managed later to get out of the room it was in and switched to a behavior which bounced off the walls, which was highly effective.
At the end it found a victim and run over it:
- The final paths were displayed on the screen in the hall:
- Commited reversion 2286.
- So the map they explored was actually much bigger than transmitted to the operator, as can be seen if the logfiles are processed (manifold crashed, probably because the operator was not spawned, solved it by giving it a fake logfile, but I couldn't find one). Should correct bug in CommsLayer:r106 first
April 10, 2014
- Wanted to test Kurt3D in the yellow arena, but start script fails on loading VictimRFIDs.
- Luckily, the DM-Mapping_250.bat was in DM-ElementaryTestWorlds_V3.11.zip
- Did some testing with two Kurt3D in the Mapping world. Was on battery, so interface responded really slowly. Interface was full screen, and could not be reduced (maybe this helps). Switched to Autonomous Exploration. Result seemed bad (Robot jumping back and forward, but actually the robot was driving quite smootly. Looks like that the PoseUpdates are received in a wrong order. Robot 2 was not evading victim. UsarClient only used 32 Mb, so memory leak is in the images. Should try to make logfile for slam6d.
li>After my presentation I did some test-runs on DutchOpen2012-semi, but most failed. Kenaf has a rangescanner of 30m, while the ini specifies 4m. Reducing the MaxRange in the code didn't help.
Decided to run with two P3ATs. Multiple waypoints showed up (choose the lowest!). Interface was slow, didn't get any pictures anymore. Revered to revision 2282 (bin9april is with double Kenaf-camera). Saved that version as bin10april.
Run with this version. Still the subviews were sligtly off, which made it difficult to get through the door. Tried Follow behavior to guide them through, but both robots failed. No victims found, but that was the same for MRL.
Received some points for the exploration:
Slam6d was able to process the logfiles, but the map of our algorithm does a better job (slam6d -m 500 -R 5 -d 25.0 just lays the walls behind each other).
- Found that the images are send to the operator with broadcast, even when there is a direct connection.
- Message is a custom class (not implemented as IDisposable), but CamReplMessage host a reference to a Bitmap, which could / should be disposed.
- To prevent multiple updates of the AgentLayer, I tried what happens when the Proxy has no longer a manifold. Hierarchy now Identity->Agent->ManifoldAgent->CommAgent->BehaviorAgent/OperatorAgent. Proxy inherits from Agent. Result is that the agents are not longer drawn on the screen.
- BehaviorAgents need a manifold for their pathplanning. Does an OperatorAgent need a manifold? Yes: at least for the function AddBaseStationPoseToCommLayer. Repaired by making ProxyAgent inherit from ManifoldAgent. Still no updates in AgentLayer. Reintroduced Invoke in ManifoldImage and it works again.
- ProxyAgent does not need a Manifold. AgentLayer is now updated only twice (instead of four times).
- Commited version 2284.
- Found the memory-leak in CameraData: the BitMap FullView was made but not Disposed. The UsarClient now stay on 40 Mb:
- Commited version 2285.
- Still, the interface is not that responsive. I submit many memento's with 0 elements. Should look if I Lock the Manifold for that. Maybe that frequency can go down. I see that Camera Request are sent, I don't see them received at the agent side. I also don't see all drive commands.
April 9, 2014
- Tried different swappings (y <-> z), (x <-> z), (x <-> y). Result is that the topview rotated 90 degrees, but still the map is seen from the side:
- Experimented with different configurations. With 4 robots the interface the interface becomes really slugish. Also tried three robots, but decided to run with only two in the Preliminary.
- Experimented with the right angle for the fishEyeCamera and selected an angle of 0.3 (both the horizon and the front of the robot is visible).
- The preliminary was a modified version of Robrechts outdoor map. My training with the AirRobot worked out, because I was able to enter the building on the far end and land my robot on the ridge next to the male victim.
- Had problems with Multiview. Tested the ini-file extensively on the test-server, yet on the competition machine I got the wrong quadrant.
- Commited the competition code as revision 2282.
- Added Kurt3D to UsarCommander. Have to add the code to control the Pan-Tilt (joint called ScannerSides):
Done; committed revision 2283.
- To Be Done: register the scans based on the angle of the joint ScannerSides.
April 8, 2014
- Tried to debug the scan_io_uos::ReadPose function, but breakpoints cannot be set for dynamic loaded libraries. Tried to access the function directly, but 'static member function cannot override virtual function 'void ScanIO::readPose(const char *,const char *,double *)'
2> override ignored, virtual function will be hidden'.
- Making a public copy of the function. Initially it failed, but on the end I was able to debug the function and found out that I needed to generate pose files. Format seems to be mm / or cm, with displacement in the z-direction. The angles are in degrees.
- Luckily there is some documentation about the file format and coordinate system. Inspected the example scan in show, and the displacement seems to be steps of a meter (which means that I should assume cm as units).
- The pose files are processed, still Slam6d has problems to process them. As output I receive 0* 1* no conversion performed in line 3 (2x). The no conversion performed seems to be the empty lines at the end. The 0* and 1* seem to indicate the first and second scan. On the example scans in the directory dat the result of the 1st to last iteration is shown (with a decreasing PQUAT RMS point-to-point error and an increase in the number of points).
- The 0* is printed in ipc6D::doICP. I use meta_scans (as specified in the command-line). First run to the loop only the previous scan is loaded. I use the multi-threaded solution (-D _OPENMP) with 4 threads. The program fails inside the pragma, so I will try again without OPENMP defined. Yet, _OPENMP is still defined. Switched it off. Still, the software fails on Scan::getSearchTree. It fails on creating a new kd-tree.
- Switched off the metascan and changed from cached k-d tree to simple kd-tree.
- Warning about conversion is coming from DataXYZ xyz_orig(get("xyz reduced original"));
- Removing the comments solved the issue, without comments (and header) I got my first PQUAT RMS point-to-point error of 11.208 using 39 points.
- Could analyze all 75 frames for attempt19. There are some holes in the logfile, but the path is much bigger than the datapoints. I have the feeling that the scanpoints are also in cm instead om meters.
- Should try to make a dataset with Kurt-3D (in UT2004).
- Changed three things at a time. Added a header, changed the coordinate system and the factor. No complains with the header, but empty kd-trees (attempt20). Removed the header, still same result (attempt21).
- Found a github site about uos. Uos seems to stand for University of Osnabrück.
- In their ros-code Osnabrück uses the following code:
p = cloud->points[i].y * -100;
p = cloud->points[i].z * 100;
p = cloud->points[i].x * 100;
Which seems to indicate that the point-cloud from Krut3D is in cm.
- Did attempt23 with X first and Y second. The result is quite good: the map can be recognized. Only strange effect is that show complains that there are no frames, while I didn't see any error message from slam6d. Reason was that I processed wrong directory (so I showed my result without the frames from slam6d).
- Processing attempt23 failed on empty k-d trees.
- Same for attempt24 (height also scaled).
- Attempt 27 (also path with factor 27, shows the path, with the measurements in a circle around it. I assume that this means that scale is good. With no frames the map was good. My hypothesis: the Global measurements are really global, so the current position has to be subtracted!
- After including the orientation, the path and the scans are a nice mix (with TopView is SideView):
Committed revision 2281.
April 7, 2014
- Tried to build the executables of 3DTK. The README suggested to run Slam6D first, so I tried to build that one first. All dependencies seems to be OK, only the reference to boost::system and boost::filesystem seems to be missing.
- In C:\Programs\boost_1_55_0\bin.v2\libs\filesystem\build\msvc-10.0\release\link-static\threading-multi a static library is present. In the properties of Slam6D reference is made to C:\Programs\boost_1_55_0\stage\lib, where the same library is also present. In the properties also explicit reference is made to libboost_filesystem-vc100-mt-1_55.lib, so there are three possibilities:
- Or I need an earlier version of boost (prior to 1_49)
- Or I need to include the dynamic libraries to the path
- Or I need to compile with another option
- Trying now to follow the tutorial from boost file_system. bld.bat couldn't find bjam.exe (although I added it to the path). Direct call to bjam.exe worked (tut1 said Usage). Modified the bld.bat file, but the second time bjam.exe complained that link.jam was not found.
- Example was working fine. Tried the same from the VC. Also worked, so it seem to be the WCHAR option.
- Did b2 clean in boost directory, followed by b2 cxxflags=/Zc:wchar_t. Still same errors.
- Tried the suggestion on stackoverflow and build boost with command b2 address-model=64. This solves the issue (for Slam6d). Running the example as suggested in the readme (bin/Release/Scan6d -m 500 -R 5 -d 25.0 --metascan dat) gives an crash (seems to fail on call Scan::openDirectory).
- Program fails on scan_io, on a failed call to LoadLibrary c_str. The library which should be loaded is scan_io_uos.dll, but as far as I know only the static library is made.
- Changed the properties of scan_io_uos, to make a 64bits dll instead of a 32.lib. Adding C:\svn\slam6d-code\obj\Debug\ to the Execution directories didn't help, copying the dll to the bin-directory brought me one line further.
- Error was in the helper.cc function which I modified with USING_BOOST. Activated boost again. Now I could read the scans.
- Next command is show dat. Compiling and linking was easy, but running gave the error that freeglut.dll was missing. Downloaded freegut (v2.8.1-1) from transmission zero.
- After copying the dll in the slam6d/bin/Debug directory (path didn't work), I finally got a result:
April 1, 2014
- Tried to build 3dtk toolkit on nb-udk. cmake and cmake-gui are already installed in C:\Programs, and accessible from both cygwin and Visual Studio 10 Win64 Command Prompt. Yet, it fails on the first test (compile simple test program). The compiler is available, but fails on illegal command line switch.
- Added the ItemGroup to C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommonTargets, as suggested on Microsoft forum. Now the compile simple test program works, now it fails on finding the supporting modules.
- Most of libboost modules could be found, although not all (Boost_FILESYSTEM_LIBRARY set but not found). Suggestion: set BOOST_ROOT. OpenCV could not be found (suggestion: set OpenCV_DIR). The environment variable OPENCVDIR was set, renamed it to OPENCV_DIR and this module was found.
- Downloaded version 1.55 from the boost libraries prebuilt from sourceforge.
- The Boost software has a license which looks quite like our own (but is checked by the Harvard Law School.
- Added environment variables BOOST_ROOT and BOOST_LIBRARYDIR, but I also could not find the libraries in the libs directory. Trying the suggestion in getting started and did a bootstrap; b2 in the BOOST_ROOT. The bootstrap was successful and after changing BOOST_LIBRARYDIR to %BOOST_ROOT%\stage\lib also the cmake-gui could configure and generate the build files.
- cmake-gui made a 3DTK.sln in its bin directory. Did a build Release for the INSTALL project. Only three errors in the scan_io_helper file. One was easy to solve, the other I had to find MS equivalents. The file compiles, yet I have linker errors. Seems to be caused mixing wchar_t with non-native usage libraries. I should recompile boost-filesystem with /Zc:wchar_t option.
- Strange enough, everytime I change the CMakeList.txt, the reference to BOOST_LIBRARYDIR is lost. Not making scan_io_helper is not option, because 22 projects depend on it. Removed the two places where helper is using boost (to get a path to a file) and was able to compile helper.cc. Yet, a scan_io_helper.dll is made, while the others expect a scan_io_helper.lib. Modified the CMakeList.txt file (there was a ifdef(WIN32) for every library, except the helper library). Result, 23 projects are now succesfull made, only three failed (scan_io_riegl, show.exe, scan_io_rts, Scan3D.exe, scanserver.exe ). Hypothesis: BOOST_LIBRARYDIR not set.
March 31, 2014
March 24, 2014
- Although I have the rights on my desktop-pc, the uninstall button is only aviable for a small number of programs. Uninstalled old 32bits version TurtoiseSVN (which was not working) via the commandline, to be able to install a new 64bits version.
March 14, 2014
- Tried to reproduce Victor's problem. Both robots keep updating a correct map, although backlash in updates becomes already anoying after 5 minutes. Selecting FollowWaypoint just let them drive in circles (as visible on the map):
- Downloaded release 1.2 from the 3dtk toolkit for win64. The code can be downloaded from svn with command svn checkout svn://svn.code.sf.net/p/slam6d/code/trunk slam6d-code. From the readme:
"For Microsoft Windows, use the cmake-gui application provided by cmake
to configure and generate project files for the appropriate version of
Microsoft Visual Studio C++ of your system. Use the INSTALL target to
built the entire project. Executables (and .dll's) will then reside
in the "windows" folder. For running the binaries you need to install
the proper redistributable package."
March 7, 2014
- Run RoboCup2012-preliminary with 2 P3AT robots to reproduce Victor's problem. Result is fine (except the camera image of Robot2):
- The camera image was due to the DutchOpen final patch in CameraSensor.vb (using two cameras for the Kenaf). Without this patch UsarClients give the correct images.
March 4, 2014
- Should look how to do UV Texture Mapping of Scripted Textures for UDK with LightWave. Alternatives (not chosen by Tijn) are Camera Actor positions and ?Camera Texture Client FOV settings.
- In the beginning (August 16) Tijn created a projection on a flat cilinder (which could be what we wanted, a sphere could also be a solution).
February 28, 2014
- DutchOpenFinal works fine with UDK-2012-05 (32bits). Same world (64bits) does also work with UDK-2013-03 (64bits) for a few seconds, and than crashes (debugger reports "irst-chance exception at 0x000000013fe045a7 in UDK.exe: 0xC0000005: Access violation writing location 0x0000000000000008.", "threadtools.cpp (3552) : Assertion Failed: Illegal termination of worker thread 'SocketThread'". Copied RunMaps command from 2012 to 2013, still same error.
- Switched off RicohThetaCamera in DefaultUSAR.ini. Still same error.
- Copied code to UDK-2012-05 (and did make_clean). Could spawn a P3AT, although no Ricoh Theta camera FOV (yet).
February 24, 2014
- Read Tijn Smits thesis.
- The Krobot class is extended with the configuration of the virtual cameras and mirror. The cameras are also mounted here.
- To have a mesh, the new camera should inherit from PhysicalItem. The SmokeLocalDynamicParticle inherits from emiter, as the virtual cameras.
- Added a RicohThetaCamera.uc to UDK-2013-03 and added that sensor to DefaultUSAR.ini (on the P3AT).
- Class compiles without errors / warnings. Testing on IranOpen2012-Final map. Map crashes after 10 seconds. Also ImprovedTestMap has problems (also tried 32bits)
February 13, 2014
- Read the short-paper about the multi-agent challenge. The fire-fighting coordination problem is solved with distributed constraint optimisation problem, which seems to have no overlap with a MDP.
- Checked Jenning's article on MaxSum, but only found reference to complete algorithms, such as ADOPT , OptAPO , DPOP , NCBB  and AFB ; and approximate algorithms such as
the Distributed Stochastic Algorithm (DSA) , Maximum Gain Message (MGM) , and ALS_DisCOP  that do not.
- The Distributed Gibss article indicates that DUCT is a DCOP-algorithm applied on MDPs. Yet, I could find no reference to MDPs in this article.
- In this AAMAS2010 paper, DCOP is used as preprocessing step to help a greedy MDP solver to find higher-reward policies faster.
- Found a group in Southern California which is specialized in combining Dec-POMDPs and DCOPs.
- They called this combination Distributed Coordination of Exploration and Explotation (DCEE). DCEE agents do not know the reward function in advance (in contrast to DCOP agents). The paper ends with the following quote "Distributed POMDPs  are also not directly relevant: DECPOMDPs
plan over uncertainty in agent action outcomes, whereas
DCEE actions have known outcomes but uncertain rewards."
- The DCEE is more extended explained in the Advances in Complex Systems article (official copy), although the AAMAS paper is cited more often.
- Jennings is quite critical in his Bandits paper about DCOPs: "assumes perfect knowledge of he interactions between agents, thus limiting its practical applicability".
- To start working with the RMASBench the following guide is essential.
February 12, 2014
- Prepared a demonstration of UsarCommander today, but UsarClient in Release fails in LineDriver.c:line-231. World was DM-compWorld4b_250.
February 11, 2014
- As preparation of our Team Description Paper, we are reading some of last years TDPs.
- MRL's TDP is relevant their partitioning algorithm (based on K-means). Different algorithms are used to assign task to agents: first the Hungarian algorithm to assign agents to partitions, followed by negotation on tasks inside the partition. The authors trace the problem back to the Simplex algorithm, which is described in Russell&Norvig chapter 4 (with the recommendation to use instead interior-point methods). The Hungarian method is only mentioned in Russell&Norvig's chapter 15. Here the recommendation is to use a probabilistic approach: particle filters.
- SOS' TDP is less formal, but describe nicely the high level task of each agent-type. They use learning (with a neural net) to be able to predict priorities. An aspect which is clearly not covered yet by us is the searching behavior.
- GUC ArtSapience's TPD. GUC claims, as MRL, that an equal part of partitians and agent is optimal. No evidence for this claim. They claim that they have some preliminary results indicating that sharing world information next to task information improves the score. No learning in their approach (although they are happy about prioritizing tasks).
- Trying to get Mircea's code (rev 3) working. The repository contains a boot directory with several scripts, yet start.sh fails on missing maps, so it seems that I have to follow the install instructions from the agent competition. The log indicates that it expects for instant standard.jar in ../jars.
- Installed rng-tools. Downloaded rescue-2013.zip and performed ant, but compilation fails (my version of javac is 1.6.0_27, my version of ant 1.8.2). Error is located in:
/home/arnoud/svn/RescueAgents/rescue-2013/modules/misc/src/misc/MiscSimulator.java:68: illegal start of type
[javac] notExplosedGasStations=new HashSet<>();
- Repaired this bug, but the same empty constructor is used in TrafficSimulator. Should follow the instructions for Installing Oracle JDK.
February 5, 2014