Allowed changes in wolf nodes
In wolf, there are some modifications allowed to be done in the nodes. However, some of them have to be dealt carefully. The solver has to be informed about some of those changes, and the rest of pointers of the tree have to be updated correctly, for instance.
Most of these changes are handled correctly. However, there are still some of them that should be discussed. All the remaining cases I think that should be just forbiden. So requiring removal & emplacement of a new node containing the modifications.
Factors: All changes in factors should be informed and applied to the problem encoded in the solver.
- loss function: Ǹow, there is
setLossFunction()
, but the solver does nothing. The solver adds the loss function if it exists in the moment of adding it. This is the only case in which a simple machinery could handle it, however, I am not sure about its sense.. - frame/capture/feature/landmark_other: If the other "constrained" entity is changed, the factor should be reset in the solver. The corresponding setters should be protected to be accessed only by the new factors that are being emplaced.
- unlink-relinked: If the factor is relinked with another feature (probably of another capture&frame). I wouldn't allow it by design.
Sensors & processors:
- remove/unlink: I would forbid to remove sensors and processors dynamically. Now it is not possible for sensors, we should extend it to processors.
Edited by Joan Vallvé Navarro