forked from filfos/roborobo-pheromone
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path_FAQ.txt
89 lines (68 loc) · 8.43 KB
/
_FAQ.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-=-=-=-=-= ROBOROBO! =-=-=-=-=-=-=-=
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=- 2008-2012 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
-=-=-=-= nicolas.bredeche(at)gmail.com -=-=-=-=-=
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=
= F.A.Q. =
=-=-=-=-=-=
Q: No makefile method seem to work.
A: The basic makefile method is really... basic. And should work everywhere, except with Mac OSX due to a different SDL installation location. The modular makefile method was tested successfully in linux with GNU Make, in freeBSD with BSD Make, and under Windows with Cygwin/Mingw (with GNU Make). Possible problems: (a) check dependencies. SDL must be installed (b) running Mac OSX? Use Xcode project (c) uh... a bug, may be? Did you try 'make clean' before compiling again?
Q: Roborobo compiles but at run-time i get the following error: '[CORRUPT] The configuration (nameofproject)ConfigurationLoader isn't known by the ConfigurationLoader', why?
A: Most likely, you did not compile the project mentionned. Activate this project with the 'makefile-manager' script (see _INSTALL.TXT)
Q: How to compile using make with a debug option?
A: type 'make DEBUG=true' (only works with the modular makefile (default) method, check _INSTALL.TXT)
Q: I want to use Boost. How to install the boost library under Windows?
A: If you are running Cygwin, run setup.exe and select the libboost package. If you are running minGW only, go to http://ascendwiki.cheme.cmu.edu/Binary_installer_for_Boost_on_MinGW to download the most recent installation file.
Q: I want to compile one project only (with the modular makefile)
A: The correct way would be to use the makefile-manager, but you can also use a variation of the following command line call to Make: 'make MODULES="MyProjectName" -f Makefile.modular clean all'
Q: Can I change the verbose mode with the modular makefile
A: yes. 'make VERBOSE="1" -f Makefile.modular clean all'
Q: Are there guidelines, hints, tutorials?
A: Check _README.TXT for further informations. That's all there is.
Q: Can you add...? Can you help...?
A: Unfortunatly, roborobo is provided "as is" and is not really supported. You'll have to find out by yourself, or chat with others. But you may always ask, of course.
Q: I have some strange image related i/o processing problems under MACOSX (e.g. rendering is ok, but sensors dont seem to work) ?
A: At some point, some versions of SDL may cause problems -- if you experience strange problem such as error wrt. sensor numbering, this may be caused by a too recent SDL. Install an older version (it works with 1.2.14), or the newest ones.
Q: How can i run roborobo in batch mode for fast computation?
A: it is enough to set the 'batchmode' parameter value to 'true' in the properties file. Note that we daily use this to launch stand-alone roborobo processes on the lab's cluster of machines as well as the Grid 5000 national cluster (ie. machines without video output) and this works like a charm. However, we never tried with a Mac (i use a mac, but not remotely) and it might have to do with the SDL mac implementation. HOWEVER, if run a mac, you may experience some problems as a small icon may go on popping up. There is a workaround, though, by relying on a virtual console and detaching from it (check the 'screen' command line -- 'screen -S test' to create it, 'ctl-a d' to disconnect, 'screen -r test' to reconnect).
Q: How can I modify roborobo core to implement ...(whatever)... ?
A: You really should consider to stick with your project. Mostly because your desired feature may have an impact of roborobo's stability and/or speed, which is not the best thing as the code is shared among several people. If you really need a specific feature, the good way is to inherit from existing class and rewrite what you need *within your project*.
Q: But I really want to modify roborobo's core!
A:
- Case 1, you downloaded roborobo and use it for personnal purpose: do what you want, but dont expect future release to be backward compatible! If you want to correct a well-identified bug, please contact me!
- Case 2, we are working on a joint project: NO! YOU ARE NOT GOING TO MODIFY THE CORE! At least not before you ask me! If you spot a bug, i'd be delighted to know about it and most happy if you send me a patch. But i'd really like to apply the patch by myself to double-check and approve it. Sorry for being paranoid, but we all depend on this code. Of course, you can always do your own fork version of roborobo and modify whatever you want to modify - but bear in mind that converging back to the ''official'' version is going to be *very* painful. as in *very* very.
Q: I need to get/set new parameters on the properties file. How do i implement the read/write methods?
A: Actually you dont have to do anything. To access any data from your configuration file from anywhere, you just have to do the following:
1. just add your new entry to your properties file (eg. "mydatatest = 0" in test.properties)
2. then, from *anywhere* in your source code:
'gProperties.checkAndGetPropertyValue("mydataset",&myvariable,true);'
That's all. Of course, it's up to you to test the consistency of your variable.
Q: How can I modify the dynamics of my robot, apply external forces, etc.?
A: a WorldInterface implements the influence of robot dynamics (hardware and context-dependant) (check _README.TXT). Then, you have to inherit from the WorldInterface to implement your own dynamics.
Q: How do I install a specific path in Xcode (MAC OSX)
A: do the following:
Select 'Edit active target 'x' from the Project menu.
Choose the Build tab.
Choose "All Configurations" from the Configuration popup button.
Choose "Search Paths" from the Collection popup button.
Double click on the entry marked 'Header Search Paths'
Add the path to the top level include folder. You should not select 'recursive'.
Q: I use XCode 4 on my mac, roborobo always fail at start up when trying to load the config file…
A: Xcode 4 builds everything into $HOME/Library/Developer/Xcode/DerivedData/$PROJECT-$UUID (the full string looks ugly). You have to set up symbolic link from this location to the config, logs and data directories. To do so:
1. cd <whereever-is-roborobo-binary>
2. ln -s <whereever-are-roborobo-source>/config config
3. ln -s <whereever-are-roborobo-source>/data data
4. ln -s <whereever-are-roborobo-source>/logs logs
Hint: since 2011-2-8, roborobo displays at start-up a message with the location it is launched from. Useful for step 1.
Q: I switched to Xcode 4 and SDL is installed. But I get an error in the console when launching roborobo: ''[100,[ERROR] robot sensor id already in use -- check agent specification image.'' (preceded with some SDL location-related error message).
A: Xcode 4 and SDL requires special configuration. SDL should be in your-home-folder/Library/Frameworks instead of /Library/Frameworks. (source: http://stackoverflow.com/questions/7936652/struggling-with-xcode4). Except from this, roborobo is known to compile and run with Xcode 4 (i use it on a daily basis that way).
Q: Is it possible to speed up roborobo?
A: Yes. If not required, you should avoid using the network update (''gRadioNetwork=false'' in the config file). You should run it without vizualization (gDisplayMode=2 in the config file, or with ''d'' key in the GUI), and use ''{mini}agent-mask-edgesOnly.png'' as the robot mask (in the config file). You may want to add a new property also, ''gAgentDisplayImageFilename'' with value ''{mini}agent-mask.png'', to keep rendering as before.
Q: How to record trajectories from agent(s)?
A: It can be done in three ways: (1) within the GUI, use the 't' or shift+'t' command (see help); (2) within the config file, set 'gTrajectoryMonitor=true' (and, optionaly, 'gTrajectoryMonitorMode=1 or 2'); (3) within the code, explicitly calling the following methods: (a) gTrajectoryMonitorImage = load_image( gEnvironmentImageFilename ); (b) updateTrajectoriesMonitor() and (c) saveTrajectoryImage(). In all cases, an image will be saved in the logs directory. This trajectory tracking code use very little computing power (<10% slow down).
This is provided as is for quick vizualization, you may want something more complex/different. The correct way to get it is *not* to modify the code, but rather to dump the coordinates of your agents for external processing.