Make object memory / robot state memory not dependent on full simulation
Due to recent changes to the object memory (!251 (merged)), it now uses the RobotStateMemory (RSM) instead of the RobotStateComponent to get the robot state. (The robot state is used to transform objects from the camera frame to the root and global frames).
However, now it is more difficult to start the object memory in a standalone way.
- Before it was sufficient to start a RobotStateComponent that loads any robot model, which had no further dependencies.
- However, the RobotStateMemory does not load a robot model at start up on its own, but relies on the robot unit to create the expected provider segments and entity.
At the moment, when nothing is creating the entries in the RSM, the object memory just prints a warning that "Armar6" (or whatever robot is configured in the properties) is missing at a very high frequency, which is a very sub optimal behaviour for that case.
For example, the ArMemObjectMemory
scenario cannot be used on its own any more.
So I suggest two alternative possible solutions:
- Allow the robot state memory to load a robot on startup and create the respective entries (at zero configuration, zero pose, etc)
- Make the dependency of the object memory to the robot state memory optional. That is, when the robot is not there, just not use it and don't do the transformations. I guess this behaviour would need to be added to the VirtualRoboterReader?
@fabian.reister
Edited by Rainer Kartmann