ArduPilot / ardupilot_gazebo

Plugins and models for vehicle simulation in Gazebo Sim with ArduPilot SITL controllers
GNU Lesser General Public License v3.0
82 stars 78 forks source link

Ensure the model base link is set to the correct model #9

Closed srmainwaring closed 2 years ago

srmainwaring commented 2 years ago

This PR fixes a bug where the base model link associated with the ArduPilotPlugin may be incorrectly associated with the wrong model, leading to an incorrect pose being published. The issue is apparent in multi-vehicle simulations.

The fix is to ensure that the link is set in the same if clause as the IMU topic.

Before fix

When running a multi-vehicle simulation, some vehicles will report incorrect position leading to poor EFK status and a loss of control of the vehicle in controlled modes.

After fix

All vehicles will report the correct position and expected EKF status. Tested with a 3-Iris quadcopter configuration.

multi-vehicle-test_small

srmainwaring commented 2 years ago

Thanks for the review @khancyr. The check could be relaxed to be any link in the sub-tree of the model rather than require the IMU is a child of the base link, but that's for another day.