Skip to content

Commit

Permalink
SITL: integrate SlungPayload
Browse files Browse the repository at this point in the history
  • Loading branch information
rmackay9 committed Jul 12, 2024
1 parent 41d4218 commit 1707390
Show file tree
Hide file tree
Showing 6 changed files with 38 additions and 0 deletions.
18 changes: 18 additions & 0 deletions libraries/SITL/SIM_Aircraft.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -796,6 +796,11 @@ void Aircraft::update_dynamics(const Vector3f &rot_accel)
}
}

// update slung payload
#if AP_SIM_SLUNGPAYLOAD_ENABLED
sitl->models.slung_payload_sim.update(get_position_relhome(), velocity_ef, accel_earth);
#endif

// allow for changes in physics step
adjust_frame_time(constrain_float(sitl->loop_rate_hz, rate_hz-1, rate_hz+1));
}
Expand Down Expand Up @@ -1224,6 +1229,19 @@ void Aircraft::add_twist_forces(Vector3f &rot_accel)
}
}

// add body-frame force due to slung payload
void Aircraft::add_slungpayload_forces(Vector3f &body_accel)
{
#if AP_SIM_SLUNGPAYLOAD_ENABLED
Vector3f forces_ef;
sitl->models.slung_payload_sim.get_forces_on_vehicle(forces_ef);

// convert ef forces to body-frame accelerations (acceleration = force / mass)
const Vector3f accel_bf = dcm.transposed() * forces_ef / mass;
body_accel += accel_bf;
#endif
}

/*
get position relative to home
*/
Expand Down
3 changes: 3 additions & 0 deletions libraries/SITL/SIM_Aircraft.h
Original file line number Diff line number Diff line change
Expand Up @@ -321,6 +321,9 @@ class Aircraft {
void add_shove_forces(Vector3f &rot_accel, Vector3f &body_accel);
void add_twist_forces(Vector3f &rot_accel);

// add body-frame force due to slung payload
void add_slungpayload_forces(Vector3f &body_accel);

// get local thermal updraft
float get_local_updraft(const Vector3d &currentPos);

Expand Down
3 changes: 3 additions & 0 deletions libraries/SITL/SIM_Multicopter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,9 @@ void MultiCopter::calculate_forces(const struct sitl_input &input, Vector3f &rot

add_shove_forces(rot_accel, body_accel);
add_twist_forces(rot_accel);

// add forces from slung payload
add_slungpayload_forces(body_accel);
}

/*
Expand Down
4 changes: 4 additions & 0 deletions libraries/SITL/SIM_config.h
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,10 @@
#define AP_SIM_SHIP_ENABLED (CONFIG_HAL_BOARD == HAL_BOARD_SITL)
#endif

#ifndef AP_SIM_SLUNGPAYLOAD_ENABLED
#define AP_SIM_SLUNGPAYLOAD_ENABLED (CONFIG_HAL_BOARD == HAL_BOARD_SITL)
#endif

#ifndef AP_SIM_TSYS03_ENABLED
#define AP_SIM_TSYS03_ENABLED (CONFIG_HAL_BOARD == HAL_BOARD_SITL)
#endif
Expand Down
6 changes: 6 additions & 0 deletions libraries/SITL/SITL.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1233,6 +1233,12 @@ const AP_Param::GroupInfo SIM::ModelParm::var_info[] = {
AP_SUBGROUPPTR(glider_ptr, "GLD_", 3, SIM::ModelParm, Glider),
#endif

#if AP_SIM_SLUNGPAYLOAD_ENABLED
// @Group: SLUP_
// @Path: ./SIM_SlungPayload.cpp
AP_SUBGROUPINFO(slung_payload_sim, "SLUP_", 4, SIM::ModelParm, SlungPayloadSim),
#endif

AP_GROUPEND
};

Expand Down
4 changes: 4 additions & 0 deletions libraries/SITL/SITL.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
#include "SIM_FETtecOneWireESC.h"
#include "SIM_IntelligentEnergy24.h"
#include "SIM_Ship.h"
#include "SIM_SlungPayload.h"
#include "SIM_GPS.h"
#include "SIM_DroneCANDevice.h"
#include "SIM_ADSB_Sagetech_MXS.h"
Expand Down Expand Up @@ -321,6 +322,9 @@ class SIM {
#endif
#if AP_SIM_GLIDER_ENABLED
Glider *glider_ptr;
#endif
#if AP_SIM_SLUNGPAYLOAD_ENABLED
SlungPayloadSim slung_payload_sim;
#endif
};
ModelParm models;
Expand Down

0 comments on commit 1707390

Please sign in to comment.