Rotating Wing State and Scheduling updates (#3334)

* first push

* Removed old test section from new eff scheduling

* Added test

* Fixed test defines

* Fix commands index in case needs to be unique for test

* Changed general variables to make them more specific. Added explanation.

* Make use V2 more specific to the rotating wing drone

* changed variable names
This commit is contained in:
Tomaso Maria Luigi De Ponti
2024-07-18 14:43:26 +02:00
committed by GitHub
parent 4e00e22993
commit 5f18e784b6
14 changed files with 1594 additions and 6 deletions
@@ -139,7 +139,7 @@
<module name="rotwing_state_V2"/>
<module name="agl_dist"/>
<module name="rot_wing_automation">
<define name="USE_V2" value="TRUE"/>
<define name="RW_USE_MODULES_V2" value="TRUE"/>
</module>
</firmware>
@@ -140,7 +140,7 @@
<module name="rotwing_state_V2"/>
<module name="agl_dist"/>
<module name="rot_wing_automation">
<define name="USE_V2" value="TRUE"/>
<define name="RW_USE_MODULES_V2" value="TRUE"/>
</module>
</firmware>
@@ -132,7 +132,7 @@
<module name="rotwing_state_V2"/>
<module name="agl_dist"/>
<module name="rot_wing_automation">
<define name="USE_V2" value="TRUE"/>
<define name="RW_USE_MODULES_V2" value="TRUE"/>
</module>
</firmware>
@@ -103,7 +103,7 @@
</module>
<module name="agl_dist"/>
<module name="rot_wing_automation">
<define name="USE_V2" value="TRUE"/>
<define name="RW_USE_MODULES_V2" value="TRUE"/>
</module>
</firmware>
@@ -0,0 +1,78 @@
<!DOCTYPE module SYSTEM "module.dtd">
<module name="eff_scheduling_rot_wing_V2" dir="ctrl">
<doc>
<description>T
The control effectiveness scheduler for the rotating wing quadplane drone type
- it requires a servo called ROTATION_MECH
</description>
<section name="ROT_WING" prefix="ROT_WING_EFF_SCHED_">
<define name="IXX_BODY" value="0" description=""/>
<define name="IYY_BODY" value="0" description=""/>
<define name="IZZ" value="0" description=""/>
<define name="IXX_WING" value="0" description=""/>
<define name="IYY_WING" value="0" description=""/>
<define name="M" value="0" description=""/>
<define name="ROLL_ARM" value="0" description=""/>
<define name="PITCH_ARM" value="0" description=""/>
<define name="HOVER_DF_DPPRZ" value="0" description=""/>
<define name="HOVER_ROLL_PITCH_COEF" value="{0,0}" description=""/>
</section>
</doc>
<settings>
<dl_settings>
<dl_settings NAME="eff_sched">
<dl_setting var="ele_min" min="0" step="100" max="6400" shortname="ele_min"/>
<dl_setting var="ele_eff" min="5" step="0.5" max="50" shortname="ele_eff"/>
<dl_setting var="airspeed_fake_on" min="0" step="1" max="1" values="OFF|ON" shortname="bool_airspeed_fake"/>
<dl_setting var="airspeed_fake" min="0" step="0.001" max="20" shortname="airspeed_fake"/>
</dl_settings>
</dl_settings>
</settings>
<header>
<file name="eff_scheduling_rot_wing_V2.h"/>
</header>
<init fun="eff_scheduling_rot_wing_init()"/>
<periodic fun="eff_scheduling_rot_wing_periodic()"/>
<makefile>
<file name="eff_scheduling_rot_wing_V2.c"/>
<test firmware="rotorcraft">
<define name="ROT_WING_EFF_SCHED_IXX_BODY" value="1"/>
<define name="ROT_WING_EFF_SCHED_IYY_BODY" value="1"/>
<define name="ROT_WING_EFF_SCHED_IZZ" value="1"/>
<define name="ROT_WING_EFF_SCHED_IXX_WING" value="1"/>
<define name="ROT_WING_EFF_SCHED_IYY_WING" value="1"/>
<define name="ROT_WING_EFF_SCHED_M" value="1"/>
<define name="M_PI" value="3.14"/>
<define name="PERIODIC_FREQUENCY" value="500.0"/>
<define name="ACTUATORS_NB" value="10"/>
<define name="COMMANDS_NB_PASSIVE" value="1"/>
<define name="COMMANDS_NB_VIRTUAL" value="2"/>
<define name="COMMANDS_NB_REAL" value="9"/>
<define name="COMMANDS_NB_OTHER" value="2"/>
<define name="ANDI_OUTPUTS" value="6"/>
<define name="EFF_MAT_ROWS_NB" value="6"/>
<define name="EFF_MAT_COLS_NB" value="11"/>
<define name="COMMAND_MOTOR_FRONT" value="0"/>
<define name="COMMAND_MOTOR_RIGHT" value="8"/>
<define name="COMMAND_MOTOR_BACK" value="9"/>
<define name="COMMAND_MOTOR_LEFT" value="3"/>
<define name="COMMAND_MOTOR_PUSHER" value="10"/>
<define name="COMMAND_ELEVATOR" value="5"/>
<define name="COMMAND_RUDDER" value="6"/>
<define name="COMMAND_AILERONS" value="7"/>
<define name="COMMAND_ROT_MECH" value="11"/>
<define name="RW_aX" value="0"/>
<define name="RW_aY" value="1"/>
<define name="RW_aZ" value="2"/>
<define name="RW_aN" value="0"/>
<define name="RW_aE" value="1"/>
<define name="RW_aD" value="2"/>
<define name="RW_ap" value="3"/>
<define name="RW_aq" value="4"/>
<define name="RW_ar" value="5"/>
<define name="ZERO_ELE_PPRZ" value="8000"/>
<define name="ELE_MIN_AS" value="8.8"/>
<define name="ELE_MAX_AS" value="16.0"/>
</test>
</makefile>
</module>
+29
View File
@@ -0,0 +1,29 @@
<!DOCTYPE module SYSTEM "module.dtd">
<module name="rotwing_state_V2" dir="rot_wing_drone">
<doc>
<description>This module keeps track of the current state of a rotating wing drone and desired state set by the RC or flightplan. Paramters are being scheduled in each change of a current state and desired state. Functions are defined in this module to call the actual state and desired state and set a desired state.</description>
<section name="ROTWING_STATE" prefix="ROTWING_STATE_">
<define name="USE_ROTATION_REF_MODEL" value="FALSE" description="Slow down the wing rotation with a reference model"/>
</section>
</doc>
<settings>
<dl_settings>
<dl_settings NAME="RotWingState">
<dl_setting var="rotwing_state_skewing.wing_angle_deg_sp" min="0" step="1" max="90" shortname="skew angle"/>
<dl_setting var="rotwing_state_skewing.force_rotation_angle" min="0" step="1" max="1" values="FALSE|TRUE" shortname="force_skew"/>
<dl_setting var="rotwing_state_max_hover_speed" min="5" step="0.5" max="25" shortname="hover_speed"/>
<dl_setting var="hover_motors_active" min="0" step="1" max="1" values="FALSE|TRUE" shortname="h_motors_active"/>
<dl_setting var="bool_disable_hover_motors" min="0" step="1" max="1" values="FALSE|TRUE" shortname="h_motors_disable"/>
</dl_settings>
</dl_settings>
</settings>
<header>
<file name="rotwing_state_V2.h"/>
</header>
<init fun="init_rotwing_state()"/>
<periodic fun="periodic_rotwing_state()" freq="50"/>
<periodic fun="rotwing_state_skew_actuator_periodic()"/>
<makefile>
<file name="rotwing_state_V2.c"/>
</makefile>
</module>
+1 -1
View File
@@ -13,7 +13,7 @@
<configure name="ADC_CHANNEL_WING_ROTATION_CONTROLLER_POSITION" default="ADC_5" case="lower|upper"/>
<define name="ADC_CHANNEL_WING_ROTATION_CONTROLLER_POSITION" value="$(ADC_CHANNEL_WING_ROTATION_CONTROLLER_POSITION_UPPER)"/>
<define name="USE_$(ADC_CHANNEL_WING_ROTATION_CONTROLLER_POSITION_UPPER)"/>
<define name="ADC_WING_ROTATION" value="TRUE"/>
<define name="ADC_WING_ROTATION" value="TRUE"/>
<file name="wing_rotation_adc_sensor.c"/>
</makefile>
</module>