Table of Contents
Frequently Asked Questions (real ones, not made up)
- FAQ about simulator :
- FAQ about runtime errors :
- FAQ about Hugr log files :
About the simulator
How many Cycabs can I simulate using the package Cycabtk?
As many as your computer can handle. All objects are simply defined by their 3D structure and their behaviour (a C++ file), and a Cycab is one like the other. The only object that maybe you will have trouble creating many of them is the Sick simulator, because it takes a lot of computation time if your graphic card does not handle FBO (Frame Buffer Object).
Does the 3D simulator integrate any ODE like system?
The 3D simulator proposed in Cycabtk package is based on mgengine. No dynamics engine like ODE is supported by the simulator. But the collisions are detected by mgengine and both dynamics and robot models are handled through the mgengine plug-in dedicated to the robot simulation.
The use of ODE engine has been considered once but because of negative feedbacks concerning its lack of precision, problems on stability and lack of realistic considerations, we prefer to do without. Instead ad-hoc dynamic and cinematic models are implemented and used.
Is the simulation real-time?
It depends on what you mean by “real-time”!.
If you mean does the simulation takes into account the same temporal constraints as on the real mobile robot, ie the control is performed every 10 ms (for instance)?, then the answer is yes. The sensors data also are retrieved at the same rate as for the real sensors.
But it depends also on the CPU of your computer but mgEngine has been designed to run correctly on old architectures such as Pentium II.
Can I create a new 3D scene instead of the INRIA car park?
Blender is the open source software for 3D modeling, animation, rendering, post-production, interactive creation and playback. Available for all major operating systems under the GNU General Public License.
The simulation has a low frame rate
The most common causes are theses one :
- You're using the software-rendering sick simulator. If you have a graphic card that does not handle FBO (Frame Buffer Object), you cannot do anything except changing it. If you have a decent card, check your card drivers (e.g. by running the
- You don't have the right drivers for your graphic card. Try :
glxinfo | grep rendering
You should see :
If not, you don't have the right drivers.
Unable to connect to store shared memory segment
If you get the error :
terminate called after throwing an instance of std::runtime_error what(): Unable to connect to store shared memory segment
Check if you launched the store by typing :hugrstore &
Unable to allocate memory: out of shared memory
If you get the error :
terminate called after throwing an instance of std::runtime_error what(): Unable to allocate memory: out of shared memory
One of the simulated object is trying to share a big amount of data, like an iplImage for the camera simulator. You need to relaunch the hugrstore with the
–sizeoption (in bytes). Try giving the store 10Mb (note : on linux system the maximum shared memory size cat be consulted and modified in the
About the Hugr Log files
Hugr log file structure
The hugr log file are binary files created using
They are used to log the values of the variables contained within the hugr shared memory. Each logged variable is timestamped according to the date it has been created or updated in the hugr memory.
The hugr log file is structured as such :
string_that_gives_information_about_the_log or empty_string timestamp Variable0_IdName Variable0_Size Variable0_Data timestamp Variable1_IdName Variable1_Size Variable1_Data ...
Hugr log big data
If you need to log hugr variables such video images (IplImage) or a sequence of different hugr variables you may need to speed up the log process. To do so you can use the ramdisk to put your log files instead of a simple file.
To use the ramdisk, follow these steps :
mkdir /mnt/ramfs mount -t ramfs none /mnt/ramfs -o maxsize=100000 chmod a+rwx /mnt/ramfs
And then use command
hugrlog as such (to log for instance cycab_state, GPS, sick laser data and sick laser configuration variables):
hugrlog -o /mnt/ramfs/log cycab_state Donnees_GPS sickLMS291 LMS291Conf