Zusammenfassung der Ressource
Modo Auto Arducopter
Anmerkungen:
- Pertenece a
- mode.h a la clase mode
- que pertenece a
- copter.h
- si el modo de vuelo es llamado inicia ingresando al
condicional #if MODE_AUTO_ENABLED == ENABLED que es
una definicion de las librerias config.h y defines.h, para
envia mensajes mavlink a la groundstation
- ejecuta las siguientes acciones
- Inicia y ejecuta llamadas para el modo de vuelo automático, implementación de Land,
Waypoint navigation y Takeoff from Auto mode. El código de ejecución del comando
(es decir, command_logic.pde) debería: a) cambiar al modo de vuelo automático con la
función set_mode (). Esto provocará que se llame a auto_init b) llame a una de las tres
funciones de inicialización automática: auto_wp_start (), auto_takeoff_start (),
auto_land_start () c) llamar a una de las funciones de verificación auto_wp_verify (),
auto_takeoff_verify, auto_land_verify y repetir para verificar si el comando se ha
completado, El ciclo principal (es decir, bucle rápido) llamará a update_flight_modes (),
que a su vez llamará a auto_run () que, en función de la variable auto_mode, llamará,
corrija auto_wp_run, auto_takeoff_run o auto_land_run para implementar realmente la
característica
- Metodo int() o auto_init
- inicializa el auto
controller
- verifica posicion y el numero
de comandos o ingnora
check que es un bolean
parametro del metodo
- si se cumple alguna
condición
- verifica si motores están
armados y si el dron esta
aterrizado y que la
misión no haya
comenzado con un
despegue
- si se cumplen
las
condiciones
- envia mensaje Mavlink
MAV_SEVERITY_CRITICAL,
"Auto: Missing Takeoff
Cmd" y retorna falso al
bolean
- Si no se cumplen
- verifica si modo de auto yaw sea
igual a AUTO_YAW_ROI
- si se cumple la
condicion
- fija el auto yaw en
AUTO_YAW_HOLD
- iniciar waypoint y
controlador spline
- wp_nav->wp_and_spline_init(); inicializa
controladores de punto de línea recta y
spline /// actualiza la tirada de destino, los
objetivos de pitch y los términos basados en
ángulos de inclinación del vehículo /// debe
invocarse una vez antes de utilizar el
controlador de waypoint, pero no es
necesario llamarlo antes de las
actualizaciones posteriores al destino
- limpiar límites
guiados
- copter.mode_guided.limit_clear()
- iniciar / reanudar la misión (basado en el
parámetro MIS_RESTART)
copter.mission.start_or_resume();
- start_or_resume - si
MIS_AUTORESTART = 0 esto llamará a
resume (), de lo contrario llamará a
start ()
- Retorna True al Bolean
- auto_run - ejecuta el controlador
automático // debería llamarse a 100hz o
más // depende de que se llame a
run_autopilot a 10hz, que maneja los
comandos relacionados con la toma de
decisiones y los comandos no relacionados
con la navegación
- Metodo void
Copter::ModeAuto::run()
- llama al controlador
automático correcto
desde un switch case
llamado _modo su sintaxis
es switch (_mode)
- Case de _mode
- case Auto_TakeOff
- ejecuta el método
- takeoff_run();
- case Auto_WP: case
Auto_CircleMoveToEdge:
- ejecuta el método
- wp_run();
- case Auto_Land:
- ejecuta el método
- land_run();
- case Auto_RTL:
- ejecuta el método
- rtl_run();
- case Auto_Circle:
circle_run();
- ejecuta el método
- circle_run();
- case Auto_Spline:
- ejecuta el método
- spline_run();
- case Auto_NavGuided:
- if NAV_GUIDED
== ENABLED
- ejecuta el método
- nav_guided_run();
- case Auto_Loiter:
- ejecuta el método
- loiter_run();
- case Auto_NavPayloadPlace:
- ejecuta el método
- payload_place_run();
- Si no se cumple
- _mode = Auto_Loiter
- Si no se cumple
alguna condición
- Retorna Falso al Bolean
- Conveniencia de las referencias para evitar el cambio de código
en la conversión: Parameters &g; ParametersG2 &g2; AC_WPNav
*&wp_nav; AC_Loiter *&loiter_nav; AC_PosControl *&pos_control;
AP_InertialNav &inertial_nav; AP_AHRS &ahrs;
AC_AttitudeControl_t *&attitude_control; MOTOR_CLASS
*&motors; RC_Channel *&channel_roll; RC_Channel
*&channel_pitch; RC_Channel *&channel_throttle; RC_Channel
*&channel_yaw; float &G_Dt; ap_t ≈ takeoff_state_t
&takeoff_state;