-
Notifications
You must be signed in to change notification settings - Fork 15
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Evaluation with identified model #172
Comments
I identified the issue for the incorrect parameter estimation. The actuator input for feature calculation is given in rpm and normalized using the function normalize_actuators() which assumes that the rpm is bounded between 1000 and 2000 rpm. And normalizes this range between [0,1]. The resulting actuator input has a mean of around 0.5. During simulation I observed that the actuator input also has a range between [0,1] but a mean of 0.7 which means that the a actuator input value of 0 corresponds to 0 rpm and 1 to 2000 rpm. I don't now what program/node publishes the actuator input, but setting the lower bound of normalize_actuators() to 0 instead of 1000 allows the regression to estimate more or less the original values. |
parameters.zip |
@pascalau Awesome work!
Is this regarding
@manumerous It seems like @pascalau solved the problem! |
Does anyone now what provides actuator_input to the plugin and how these values are mapped to rotor rpm? |
Yes |
@pascalau So on the simulation side, the thrust is being calculated by the rotor velocity (RPM) in the This message comes from the The relevant parameters such as input offset and input scaling are defined in the sdf file as is data-driven-dynamics/models/iris_aerodynamics/iris_aerodynamics.sdf Lines 446 to 453 in 29775ea
I know this is a bit convoluted but hope you can navigate through the problem :) |
If I see this correctly the model used for the simulation is: |
@pascalau Ah your right the pre-estimation model is that one and your probably right. So basically the estimated models all had the wrong input scaling and that is where the difference of behavior was coming from |
A max_output value of 2200 does not lead to the same parameters as the groundtruth. I'm not sure if I am missing something. |
That is very cool! Good catch! I had a quick look at the parameters and they seem to be close enough as you said. If it is true that the iris has a max output of 2200 it would be good to add the min/max output values to the config of each vehicle. This way the normalization could be adapted to each vehicles need. |
Description
Previously discussed with @manumerous, we wanted to try and see if identifying a model through a flight log that was already using estimated parameters (so that we know the groundtruth dynamics) to evaluate this pipeline
Experiment Setup
Start the simulation with
Start the lissajous trajectory excitation with Jaeyoung-Lim/mavros_controllers#193
Results
The estimated parameters does not seem to be consistent with the previous model that the trajectory was generated from. The vehicle is not able to fly with Jaeyoung-Lim/mavros_controllers#193, which the model was originally trained on.
This can be interpreted in different ways, but I think this means that while the model estimated is good enough to "fly" the vehicle in auto modes, but the estimated dynamics seem to be inconsistent with the ground truth model that the stability of the nonlinear geometric controller has become unstable
Other comments
I had to jump through a lot of hoops to get this setup working.
The following is general notes what I needed to do to get this working
GAZEBO_PATH_*
environment variables used through a different route in ROSmodel_results/quadrotor_model.yml
. The process that needs to happen is that you first estimate the model, rename the file tomodel_results/quadrotor_model.yml
since the dates are included in the filename.The text was updated successfully, but these errors were encountered: