-
Notifications
You must be signed in to change notification settings - Fork 308
Commit
The doSwitch method needs to be executed in the update() method, that is, in the real-time path, which is where controller switching actually takes place. It was previously done in the switchController callback, which is non real-time. In this method controller switching is scheduled, but not actually executed. This changeset fixes a bug in which hardware interface modes could switch before controllers, leading to undefined behavior.
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -179,6 +179,7 @@ class ControllerManager{ | |
/** \name Controller Switching | ||
*\{*/ | ||
std::vector<controller_interface::ControllerBase*> start_request_, stop_request_; | ||
std::list<hardware_interface::ControllerInfo> switch_start_list_, switch_stop_list_; | ||
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
jacquelinekay
|
||
bool please_switch_; | ||
int switch_strictness_; | ||
/*\}*/ | ||
|
adding members to a class generally breaks ABI. It just happened for me :/