Compare commits

...

14 Commits

Author SHA1 Message Date
Brown.Z fe3bc4d157 rover版本号调整:4.3.1 2 years ago
Brown.Z 814de7fbc5 GPS_Backend: make_gps_time增加check_new_itow函数,修复NMEA RTC时间不对问题 2 years ago
Brown.Z c076595b69 hwdef: 增加zr-mrover板,拷贝Pixhawk4和Pixhawk6C 2 years ago
Brown.Z a2fb61e5e4 Rover:增加zr_app文件,执行1hz,10hz,50hz循环, 3 years ago
Brown.Z 1ce4cb49b1 update .gitignore 3 years ago
Brown.Z 4a8fc0500f Log.cpp: 增加记录声呐数据,“UDSR” 3 years ago
Brown.Z 6d3d55f83c AP_RangeFinder_NMEA: 增加声呐解析,,SIP 3 years ago
Brown.Z ec7d59334e AC_ZR_App: 增加电池初始电量计算 3 years ago
Brown.Z 18df2c6d2c ArduCopter:增加zr_app文件,周期循环函数,在UserCode中调用 3 years ago
Brown.Z 80e93f3f71 AC_ZR_App: 增加降落减速;ZR参数名调整 3 years ago
Brown.Z 050d98eb0e 增加proximity uavcan 3 years ago
Brown.Z 16b69e95b1 增加UAVCAN RGB LED 3 years ago
zbr3550 c96c4654d5 增加注册到期时间判断 3 years ago
zbr3550 309fb6f12b 增加AC_ZR_App,增加一些参数 3 years ago
  1. 2
      .gitignore
  2. 5
      .pydevproject
  3. 11
      .vscode/extensions.json
  4. 4
      .vscode/settings.json
  5. 28
      ArduCopter/APM_Config.h
  6. 23
      ArduCopter/AP_Arming.cpp
  7. 3
      ArduCopter/AP_Arming.h
  8. 8
      ArduCopter/Copter.h
  9. 9
      ArduCopter/GCS_Mavlink.cpp
  10. 2
      ArduCopter/Parameters.cpp
  11. 1
      ArduCopter/Parameters.h
  12. 3
      ArduCopter/UserCode.cpp
  13. 17
      ArduCopter/mode.cpp
  14. 2
      ArduCopter/mode.h
  15. 8
      ArduCopter/mode_loiter.cpp
  16. 1
      ArduCopter/wscript
  17. 31
      ArduCopter/zr_app.cpp
  18. 12
      Rover/GCS_Mavlink.cpp
  19. 2
      Rover/GCS_Mavlink.h
  20. 20
      Rover/Log.cpp
  21. 1
      Rover/Parameters.cpp
  22. 2
      Rover/Parameters.h
  23. 5
      Rover/Rover.cpp
  24. 6
      Rover/Rover.h
  25. 6
      Rover/version.h
  26. 1
      Rover/wscript
  27. 27
      Rover/zr_app.cpp
  28. BIN
      Tools/Frame_params/XPlane/NACA_64_xxx_Airfoils_from_TR824.zip
  29. BIN
      Tools/IO_Firmware/iofirmware_f103_8MHz_highpolh.bin
  30. BIN
      Tools/IO_Firmware/iofirmware_f103_8MHz_lowpolh.bin
  31. BIN
      Tools/IO_Firmware/iofirmware_highpolh.bin
  32. BIN
      Tools/IO_Firmware/iofirmware_lowpolh.bin
  33. BIN
      Tools/Linux_HAL_Essentials/pru/rangefinderpru/rangefinderprudata.bin
  34. BIN
      Tools/Linux_HAL_Essentials/pru/rangefinderpru/rangefinderprutext.bin
  35. 4
      Tools/ardupilotwaf/boards.py
  36. 1
      Tools/autotest/locations.txt
  37. 357
      Tools/autotest/web-firmware/Tools/FilterTool/index.html
  38. 160
      Tools/autotest/web-firmware/index.html
  39. 64
      Tools/autotest/web/index.html
  40. BIN
      Tools/bootloaders/BirdCANdy_bl.elf
  41. BIN
      Tools/bootloaders/CUAV-Nora_bl.elf
  42. BIN
      Tools/bootloaders/CUAV-X7_bl.elf
  43. BIN
      Tools/bootloaders/CUAV_GPS_bl.elf
  44. BIN
      Tools/bootloaders/CUAVv5Nano_bl.elf
  45. BIN
      Tools/bootloaders/CUAVv5_bl.elf
  46. BIN
      Tools/bootloaders/CubeBlack_bl.elf
  47. BIN
      Tools/bootloaders/CubeOrangePlus_bl.elf
  48. BIN
      Tools/bootloaders/CubeOrange_bl.elf
  49. BIN
      Tools/bootloaders/CubeYellow_bl.elf
  50. BIN
      Tools/bootloaders/Durandal_bl.elf
  51. BIN
      Tools/bootloaders/F35Lightning_bl.elf
  52. BIN
      Tools/bootloaders/F4BY_bl.elf
  53. BIN
      Tools/bootloaders/FreeflyRTK_bl.elf
  54. BIN
      Tools/bootloaders/Hitec-Airspeed_bl.elf
  55. BIN
      Tools/bootloaders/HitecMosaic_bl.elf
  56. BIN
      Tools/bootloaders/HolybroG4_GPS_bl.elf
  57. BIN
      Tools/bootloaders/HolybroGPS_bl.elf
  58. BIN
      Tools/bootloaders/KakuteF4_bl.elf
  59. BIN
      Tools/bootloaders/KakuteF7Mini_bl.elf
  60. BIN
      Tools/bootloaders/KakuteF7_bl.elf
  61. BIN
      Tools/bootloaders/KakuteH7_bl.elf
  62. BIN
      Tools/bootloaders/MambaF405US-I2C_bl.elf
  63. BIN
      Tools/bootloaders/MatekF405-STD_bl.elf
  64. BIN
      Tools/bootloaders/MatekF405-Wing_bl.elf
  65. BIN
      Tools/bootloaders/MatekF405_bl.elf
  66. BIN
      Tools/bootloaders/MatekF765-SE_bl.elf
  67. BIN
      Tools/bootloaders/MatekF765-Wing_bl.elf
  68. BIN
      Tools/bootloaders/Nucleo-G491_bl.elf
  69. BIN
      Tools/bootloaders/NucleoH743_bl.elf
  70. BIN
      Tools/bootloaders/OMNIBUSF7V2_bl.elf
  71. BIN
      Tools/bootloaders/OmnibusNanoV6_bl.elf
  72. BIN
      Tools/bootloaders/PH4-mini_bl.elf
  73. BIN
      Tools/bootloaders/Pix32v5_bl.elf
  74. BIN
      Tools/bootloaders/Pixhawk1-1M_bl.elf
  75. BIN
      Tools/bootloaders/Pixhawk1_bl.elf
  76. BIN
      Tools/bootloaders/Pixhawk4_bl.elf
  77. BIN
      Tools/bootloaders/Pixracer_bl.elf
  78. BIN
      Tools/bootloaders/QioTekZealotF427_bl.elf
  79. BIN
      Tools/bootloaders/R9Pilot_bl.elf
  80. BIN
      Tools/bootloaders/SuccexF4_bl.elf
  81. BIN
      Tools/bootloaders/TBS-Colibri-F7_bl.elf
  82. BIN
      Tools/bootloaders/VRBrain-v52_bl.elf
  83. BIN
      Tools/bootloaders/VRUBrain-v51_bl.elf
  84. BIN
      Tools/bootloaders/ZubaxGNSS_bl.elf
  85. BIN
      Tools/bootloaders/airbotf4_bl.elf
  86. BIN
      Tools/bootloaders/crazyflie2_bl.elf
  87. BIN
      Tools/bootloaders/f103-ADSB_bl.elf
  88. BIN
      Tools/bootloaders/f103-Airspeed_bl.elf
  89. BIN
      Tools/bootloaders/f103-RangeFinder_bl.elf
  90. BIN
      Tools/bootloaders/f103-Trigger_bl.elf
  91. BIN
      Tools/bootloaders/f103-periph_bl.elf
  92. BIN
      Tools/bootloaders/f303-M10070_bl.elf
  93. BIN
      Tools/bootloaders/f303-MatekGPS_bl.elf
  94. BIN
      Tools/bootloaders/f303-Universal_bl.elf
  95. BIN
      Tools/bootloaders/fmuv3_bl.elf
  96. BIN
      Tools/bootloaders/fmuv5_bl.elf
  97. BIN
      Tools/bootloaders/iomcu_bl.elf
  98. BIN
      Tools/bootloaders/luminousbee5_bl.elf
  99. BIN
      Tools/bootloaders/mRo-M10095_bl.elf
  100. BIN
      Tools/bootloaders/mRoControlZeroF7_bl.elf
  101. Some files were not shown because too many files have changed in this diff Show More

2
.gitignore vendored

@ -144,3 +144,5 @@ dumpstack_*out @@ -144,3 +144,5 @@ dumpstack_*out
build.tmp.binaries/
tasklist.json
modules/esp_idf
.vscode/
bd*.sh

5
.pydevproject

@ -1,5 +0,0 @@ @@ -1,5 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?eclipse-pydev version="1.0"?><pydev_project>
<pydev_property name="org.python.pydev.PYTHON_PROJECT_INTERPRETER">Default</pydev_property>
<pydev_property name="org.python.pydev.PYTHON_PROJECT_VERSION">python 2.7</pydev_property>
</pydev_project>

11
.vscode/extensions.json vendored

@ -1,11 +0,0 @@ @@ -1,11 +0,0 @@
{
"recommendations": [
"ms-vscode.cpptools",
"sumneko.lua",
"ms-python.python",
"ms-python.vscode-pylance",
"streetsidesoftware.code-spell-checker",
"chiehyu.vscode-astyle",
"ardupilot-org.ardupilot-devenv"
]
}

4
.vscode/settings.json vendored

@ -1,4 +0,0 @@ @@ -1,4 +0,0 @@
{
"cSpell.language": "en-GB",
"astyle.astylerc": "${workspaceFolder}/Tools/CodeStyle/astylerc"
}

28
ArduCopter/APM_Config.h

@ -13,18 +13,18 @@ @@ -13,18 +13,18 @@
//#define PARACHUTE DISABLED // disable parachute release to save 1k of flash
//#define NAV_GUIDED DISABLED // disable external navigation computer ability to control vehicle through MAV_CMD_NAV_GUIDED mission commands
//#define PRECISION_LANDING DISABLED // disable precision landing using companion computer or IRLock sensor
//#define BEACON_ENABLED DISABLED // disable beacon support
//#define SPRAYER_ENABLED DISABLED // disable the crop sprayer feature (two ESC controlled pumps the speed of which depends upon the vehicle's horizontal velocity)
#define BEACON_ENABLED DISABLED // disable beacon support
#define SPRAYER_ENABLED DISABLED // disable the crop sprayer feature (two ESC controlled pumps the speed of which depends upon the vehicle's horizontal velocity)
//#define WINCH_ENABLED DISABLED // disable winch support
//#define GRIPPER_ENABLED DISABLED // disable gripper support
#define GRIPPER_ENABLED DISABLED // disable gripper support
//#define RPM_ENABLED DISABLED // disable rotations per minute sensor support
//#define STATS_ENABLED DISABLED // disable statistics support
//#define MODE_ACRO_ENABLED DISABLED // disable acrobatic mode support
//#define MODE_AUTO_ENABLED DISABLED // disable auto mode support
//#define MODE_BRAKE_ENABLED DISABLED // disable brake mode support
//#define MODE_CIRCLE_ENABLED DISABLED // disable circle mode support
//#define MODE_DRIFT_ENABLED DISABLED // disable drift mode support
//#define MODE_FLIP_ENABLED DISABLED // disable flip mode support
#define MODE_DRIFT_ENABLED DISABLED // disable drift mode support
#define MODE_FLIP_ENABLED DISABLED // disable flip mode support
//#define MODE_FOLLOW_ENABLED DISABLED // disable follow mode support
//#define MODE_GUIDED_ENABLED DISABLED // disable guided mode support
//#define MODE_GUIDED_NOGPS_ENABLED DISABLED // disable guided/nogps mode support
@ -34,8 +34,8 @@ @@ -34,8 +34,8 @@
//#define MODE_SMARTRTL_ENABLED DISABLED // disable smartrtl mode support
//#define MODE_SPORT_ENABLED DISABLED // disable sport mode support
//#define MODE_SYSTEMID_ENABLED DISABLED // disable system ID mode support
//#define MODE_THROW_ENABLED DISABLED // disable throw mode support
//#define MODE_ZIGZAG_ENABLED DISABLED // disable zigzag mode support
#define MODE_THROW_ENABLED DISABLED // disable throw mode support
#define MODE_ZIGZAG_ENABLED DISABLED // disable zigzag mode support
//#define OSD_ENABLED DISABLED // disable on-screen-display support
//#define LANDING_GEAR_ENABLED DISABLED // disable landing gear support
@ -51,11 +51,11 @@ @@ -51,11 +51,11 @@
// Put your variable definitions into the UserVariables.h file (or another file name and then change the #define below).
//#define USERHOOK_VARIABLES "UserVariables.h"
// Put your custom code into the UserCode.cpp with function names matching those listed below and ensure the appropriate #define below is uncommented below
//#define USERHOOK_INIT userhook_init(); // for code to be run once at startup
//#define USERHOOK_FASTLOOP userhook_FastLoop(); // for code to be run at 100hz
//#define USERHOOK_50HZLOOP userhook_50Hz(); // for code to be run at 50hz
//#define USERHOOK_MEDIUMLOOP userhook_MediumLoop(); // for code to be run at 10hz
//#define USERHOOK_SLOWLOOP userhook_SlowLoop(); // for code to be run at 3.3hz
//#define USERHOOK_SUPERSLOWLOOP userhook_SuperSlowLoop(); // for code to be run at 1hz
//#define USERHOOK_AUXSWITCH ENABLED // for code to handle user aux switches
#define USERHOOK_INIT userhook_init(); // for code to be run once at startup
#define USERHOOK_FASTLOOP userhook_FastLoop(); // for code to be run at 100hz
#define USERHOOK_50HZLOOP userhook_50Hz(); // for code to be run at 50hz
#define USERHOOK_MEDIUMLOOP userhook_MediumLoop(); // for code to be run at 10hz
#define USERHOOK_SLOWLOOP userhook_SlowLoop(); // for code to be run at 3.3hz
#define USERHOOK_SUPERSLOWLOOP userhook_SuperSlowLoop(); // for code to be run at 1hz
// #define USERHOOK_AUXSWITCH ENABLED // for code to handle user aux switches
//#define USER_PARAMS_ENABLED ENABLED // to enable user parameters

23
ArduCopter/AP_Arming.cpp

@ -550,7 +550,11 @@ bool AP_Arming_Copter::alt_checks(bool display_failure) @@ -550,7 +550,11 @@ bool AP_Arming_Copter::alt_checks(bool display_failure)
// has side-effect that logging is started
bool AP_Arming_Copter::arm_checks(AP_Arming::Method method)
{
const auto &ahrs = AP::ahrs();
if(!mandatory_deadline_checks(false)){ // 检查注册是否到期
return false;
}
// always check if inertial nav has started and is ready
if (!ahrs.healthy()) {
@ -840,3 +844,22 @@ bool AP_Arming_Copter::disarm(const AP_Arming::Method method, bool do_disarm_che @@ -840,3 +844,22 @@ bool AP_Arming_Copter::disarm(const AP_Arming::Method method, bool do_disarm_che
return true;
}
bool AP_Arming_Copter::mandatory_deadline_checks(bool display_failure)
{
#if CONFIG_HAL_BOARD == HAL_BOARD_SITL
return true;
#else
uint32_t date;
if (!copter.zr_app.check_deadline(date))
{
// check_failed(true, "无法解锁,授权于 %u-%u-%u 到期!", date / 10000, (date % 10000) / 100, date % 100);
check_failed(true, "Trial time has expired at %lu-%lu-%lu", date / 10000, (date % 10000) / 100, date % 100);
// check_failed(display_failure, "Trial time has expired at %d-%d-%d !", date / 10000, (date % 10000) / 100, date % 100);
return false;
}else{
return true;
}
#endif
}

3
ArduCopter/AP_Arming.h

@ -48,9 +48,10 @@ protected: @@ -48,9 +48,10 @@ protected:
bool gcs_failsafe_check(bool display_failure);
bool winch_checks(bool display_failure) const;
bool alt_checks(bool display_failure);
void set_pre_arm_check(bool b);
bool mandatory_deadline_checks(bool display_failure); // 飞机到期时间检查
private:
// actually contains the pre-arm checks. This is wrapped so that

8
ArduCopter/Copter.h

@ -70,6 +70,8 @@ @@ -70,6 +70,8 @@
#include <AP_ADSB/AP_ADSB.h> // ADS-B RF based collision avoidance module library
#include <AP_Proximity/AP_Proximity.h> // ArduPilot proximity sensor library
#include <AC_ZR_APP/AC_ZR_App.h>
// Configuration
#include "defines.h"
#include "config.h"
@ -1000,8 +1002,14 @@ private: @@ -1000,8 +1002,14 @@ private:
Mode *mode_from_mode_num(const Mode::Number mode);
void exit_mode(Mode *&old_flightmode, Mode *&new_flightmode);
AC_ZR_App zr_app;
public:
void failsafe_check(); // failsafe.cpp
void zr_app_50hz();
void zr_app_10hz();
void zr_app_1hz();
};
extern Copter copter;

9
ArduCopter/GCS_Mavlink.cpp

@ -607,6 +607,15 @@ void GCS_MAVLINK_Copter::send_banner() @@ -607,6 +607,15 @@ void GCS_MAVLINK_Copter::send_banner()
char frame_and_type_string[30];
copter.motors->get_frame_and_type_string(frame_and_type_string, ARRAY_SIZE(frame_and_type_string));
send_text(MAV_SEVERITY_INFO, "%s", frame_and_type_string);
#if CONFIG_HAL_BOARD != HAL_BOARD_SITL
uint32_t deadline = 0;
copter.zr_app.get_deadline_params(deadline);
send_text(MAV_SEVERITY_INFO, "Date:%lu",deadline);
send_text(MAV_SEVERITY_INFO, "ID:%lu",copter.zr_app.get_zr_sysid());
#endif
}
void GCS_MAVLINK_Copter::handle_command_ack(const mavlink_message_t &msg)

2
ArduCopter/Parameters.cpp

@ -722,6 +722,8 @@ const AP_Param::Info Copter::var_info[] = { @@ -722,6 +722,8 @@ const AP_Param::Info Copter::var_info[] = {
// @Path: Parameters.cpp
GOBJECT(g2, "", ParametersG2),
GOBJECT(zr_app, "ZR", AC_ZR_App),
// @Group:
// @Path: ../libraries/AP_Vehicle/AP_Vehicle.cpp
{ AP_PARAM_GROUP, "", Parameters::k_param_vehicle, (const void *)&copter, {group_info : AP_Vehicle::var_info} },

1
ArduCopter/Parameters.h

@ -376,6 +376,7 @@ public: @@ -376,6 +376,7 @@ public:
// 254,255: reserved
k_param_vehicle = 257, // vehicle common block of parameters
k_param_zr_app = 258, // 253 - Logging Group
// the k_param_* space is 9-bits in size
// 511: reserved

3
ArduCopter/UserCode.cpp

@ -19,6 +19,7 @@ void Copter::userhook_FastLoop() @@ -19,6 +19,7 @@ void Copter::userhook_FastLoop()
void Copter::userhook_50Hz()
{
// put your 50Hz code here
zr_app_50hz();
}
#endif
@ -26,6 +27,7 @@ void Copter::userhook_50Hz() @@ -26,6 +27,7 @@ void Copter::userhook_50Hz()
void Copter::userhook_MediumLoop()
{
// put your 10Hz code here
zr_app_10hz();
}
#endif
@ -40,6 +42,7 @@ void Copter::userhook_SlowLoop() @@ -40,6 +42,7 @@ void Copter::userhook_SlowLoop()
void Copter::userhook_SuperSlowLoop()
{
// put your 1Hz code here
zr_app_1hz();
}
#endif

17
ArduCopter/mode.cpp

@ -575,8 +575,11 @@ void Mode::land_run_vertical_control(bool pause_descent) @@ -575,8 +575,11 @@ void Mode::land_run_vertical_control(bool pause_descent)
bool ignore_descent_limit = false;
if (!pause_descent) {
// @Brown, loiter land auto deceleration
int16_t land_speed_now = get_land_deceleration();
// do not ignore limits until we have slowed down for landing
ignore_descent_limit = (MAX(g2.land_alt_low,100) > get_alt_above_ground_cm()) || copter.ap.land_complete_maybe;
ignore_descent_limit = (MAX(g2.land_alt_low,2000) > get_alt_above_ground_cm()) || copter.ap.land_complete_maybe; // 最低高度100改2000,最低20m开始降速
float max_land_descent_velocity;
if (g.land_speed_high > 0) {
@ -592,7 +595,8 @@ void Mode::land_run_vertical_control(bool pause_descent) @@ -592,7 +595,8 @@ void Mode::land_run_vertical_control(bool pause_descent)
cmb_rate = sqrt_controller(MAX(g2.land_alt_low,100)-get_alt_above_ground_cm(), pos_control->get_pos_z_p().kP(), pos_control->get_max_accel_z_cmss(), G_Dt);
// Constrain the demanded vertical velocity so that it is between the configured maximum descent speed and the configured minimum descent speed.
cmb_rate = constrain_float(cmb_rate, max_land_descent_velocity, -abs(g.land_speed));
// cmb_rate = constrain_float(cmb_rate, max_land_descent_velocity, -abs(g.land_speed));
cmb_rate = constrain_float(cmb_rate, max_land_descent_velocity, -abs(land_speed_now)); // 替换速度
#if PRECISION_LANDING == ENABLED
const bool navigating = pos_control->is_active_xy();
@ -1024,3 +1028,12 @@ uint16_t Mode::get_pilot_speed_dn() @@ -1024,3 +1028,12 @@ uint16_t Mode::get_pilot_speed_dn()
{
return copter.get_pilot_speed_dn();
}
/**
* @brief
* @author ZRZK
* @return uint16_t
*/
uint16_t Mode::get_land_deceleration()
{
return copter.zr_app.get_land_deceleration(get_alt_above_ground_cm(),get_pilot_speed_dn());
}

2
ArduCopter/mode.h

@ -295,6 +295,8 @@ public: @@ -295,6 +295,8 @@ public:
GCS_Copter &gcs();
void set_throttle_takeoff(void);
uint16_t get_pilot_speed_dn(void);
uint16_t get_land_deceleration();
// end pass-through functions
};

8
ArduCopter/mode_loiter.cpp

@ -87,8 +87,11 @@ void ModeLoiter::run() @@ -87,8 +87,11 @@ void ModeLoiter::run()
float target_yaw_rate = 0.0f;
float target_climb_rate = 0.0f;
// @Brown, loiter land auto deceleration
int16_t land_speed_now = get_land_deceleration();
// set vertical speed and acceleration limits
pos_control->set_max_speed_accel_z(-get_pilot_speed_dn(), g.pilot_speed_up, g.pilot_accel_z);
// pos_control->set_max_speed_accel_z(-get_pilot_speed_dn(), g.pilot_speed_up, g.pilot_accel_z);
pos_control->set_max_speed_accel_z(-land_speed_now, g.pilot_speed_up, g.pilot_accel_z); // 替换速度
// process pilot inputs unless we are in radio failsafe
if (!copter.failsafe.radio) {
@ -106,7 +109,8 @@ void ModeLoiter::run() @@ -106,7 +109,8 @@ void ModeLoiter::run()
// get pilot desired climb rate
target_climb_rate = get_pilot_desired_climb_rate(channel_throttle->get_control_in());
target_climb_rate = constrain_float(target_climb_rate, -get_pilot_speed_dn(), g.pilot_speed_up);
// target_climb_rate = constrain_float(target_climb_rate, -get_pilot_speed_dn(), g.pilot_speed_up);
target_climb_rate = constrain_float(target_climb_rate, -land_speed_now, g.pilot_speed_up); // 替换速度
} else {
// clear out pilot desired acceleration in case radio failsafe event occurs and we do not switch to RTL for some reason
loiter_nav->clear_pilot_desired_acceleration();

1
ArduCopter/wscript

@ -31,6 +31,7 @@ def build(bld): @@ -31,6 +31,7 @@ def build(bld):
'AP_OSD',
'AC_AutoTune',
'AP_KDECAN',
'AC_ZR_APP',
],
)

31
ArduCopter/zr_app.cpp

@ -0,0 +1,31 @@ @@ -0,0 +1,31 @@
#include "Copter.h"
void Copter::zr_app_1hz()
{
static bool before_fly = true;
if(motors->armed()){
if(before_fly){
before_fly = false;
}
relay.on(3); // 电子开关,保持通路
// camera.set_in_arm_mode(true);
}else{
relay.off(3);
if(before_fly){
uint8_t bat_cnt = zr_app.get_battery_capacity(1,battery.voltage());
battery.reset_remaining(0,(float)bat_cnt );
// gcs().send_text(MAV_SEVERITY_INFO, "bat:%.2f,pst%d,%.2f",battery.voltage(),bat_cnt,(float)bat_cnt);
}
}
}
void Copter::zr_app_10hz()
{
}
void Copter::zr_app_50hz(){
}

12
Rover/GCS_Mavlink.cpp

@ -1133,3 +1133,15 @@ uint8_t GCS_MAVLINK_Rover::high_latency_wind_direction() const @@ -1133,3 +1133,15 @@ uint8_t GCS_MAVLINK_Rover::high_latency_wind_direction() const
return 0;
}
#endif // HAL_HIGH_LATENCY2_ENABLED
/**
* @brief send device id
* @
* @return char*
*/
char* GCS_MAVLINK_Rover::gcs_get_sysid_id()
{
static char buf[50];
memcpy(buf,rover.zr_app.get_sysid_board_id(),50);
return buf;
}

2
Rover/GCS_Mavlink.h

@ -31,6 +31,8 @@ protected: @@ -31,6 +31,8 @@ protected:
void send_nav_controller_output() const override;
void send_pid_tuning() override;
char* gcs_get_sysid_id() override ;
private:
void handleMessage(const mavlink_message_t &msg) override;

20
Rover/Log.cpp

@ -77,6 +77,26 @@ void Rover::Log_Write_Depth() @@ -77,6 +77,26 @@ void Rover::Log_Write_Depth()
loc.lng,
(double)(s->distance()),
temp_C);
// @LoggerMessage: UDSR
// @Description: Depth messages on boats with downwards facing range finder
// @Field: TimeUS: Time since system startup
// @Field: Inst: Instance
// @Field: Lat: Latitude
// @Field: Lng: Longitude
// @Field: Deep: Depth as detected by the sensor
// @Field: Temp: Temperature
logger.Write("UDSR", "TimeUS,Lat,Lng,Alt,Temp,Deep,GLat,GLng,GAlt",
"sDUm--DUm", "FGGB--GGB", "QLLeffLLe",
AP_HAL::micros64(),
loc.lat,
loc.lat,
loc.alt,
temp_C,
(s->distance()),
gps.location().lat,
gps.location().lng,
gps.location().alt);
}
// send water depth and temp to ground station
gcs().send_message(MSG_WATER_DEPTH);

1
Rover/Parameters.cpp

@ -382,6 +382,7 @@ const AP_Param::Info Rover::var_info[] = { @@ -382,6 +382,7 @@ const AP_Param::Info Rover::var_info[] = {
// @Path: ../libraries/AP_OSD/AP_OSD.cpp
GOBJECT(osd, "OSD", AP_OSD),
#endif
GOBJECT(zr_app, "ZR", AC_ZR_App),
// @Group:
// @Path: ../libraries/AP_Vehicle/AP_Vehicle.cpp

2
Rover/Parameters.h

@ -226,6 +226,8 @@ public: @@ -226,6 +226,8 @@ public:
// 254,255: reserved
k_param_vehicle = 257, // vehicle common block of parameters
k_param_zr_app = 258, // 253 - Logging Group
};
AP_Int16 format_version;

5
Rover/Rover.cpp

@ -129,6 +129,11 @@ const AP_Scheduler::Task Rover::scheduler_tasks[] = { @@ -129,6 +129,11 @@ const AP_Scheduler::Task Rover::scheduler_tasks[] = {
#if ADVANCED_FAILSAFE == ENABLED
SCHED_TASK(afs_fs_check, 10, 200, 129),
#endif
SCHED_TASK(zr_app_50hz, 50, 200, 132),
SCHED_TASK(zr_app_10hz, 10, 200, 135),
SCHED_TASK(zr_app_1hz, 1, 200, 138),
};

6
Rover/Rover.h

@ -37,6 +37,7 @@ @@ -37,6 +37,7 @@
#include <AP_Logger/AP_Logger.h>
#include <AP_OSD/AP_OSD.h>
#include <AR_Motors/AP_MotorsUGV.h>
#include <AC_ZR_APP/AC_ZR_App.h>
#if AP_SCRIPTING_ENABLED
#include <AP_Scripting/AP_Scripting.h>
@ -374,6 +375,7 @@ private: @@ -374,6 +375,7 @@ private:
"_failsafe_priorities is missing the sentinel");
AC_ZR_App zr_app;
public:
void failsafe_check();
// Motor test
@ -388,6 +390,10 @@ public: @@ -388,6 +390,10 @@ public:
// Simple mode
float simple_sin_yaw;
void zr_app_50hz();
void zr_app_10hz();
void zr_app_1hz();
};
extern Rover rover;

6
Rover/version.h

@ -6,14 +6,14 @@ @@ -6,14 +6,14 @@
#include "ap_version.h"
#define THISFIRMWARE "ArduRover V4.3.0-dev"
#define THISFIRMWARE "AUSV V4.3.1"
// the following line is parsed by the autotest scripts
#define FIRMWARE_VERSION 4,3,0,FIRMWARE_VERSION_TYPE_DEV
#define FIRMWARE_VERSION 4,3,1,FIRMWARE_VERSION_TYPE_DEV
#define FW_MAJOR 4
#define FW_MINOR 3
#define FW_PATCH 0
#define FW_PATCH 1
#define FW_TYPE FIRMWARE_VERSION_TYPE_DEV
#include <AP_Common/AP_FWVersionDefine.h>

1
Rover/wscript

@ -25,6 +25,7 @@ def build(bld): @@ -25,6 +25,7 @@ def build(bld):
'AP_WindVane',
'AR_Motors',
'AP_Torqeedo',
'AC_ZR_APP',
],
)

27
Rover/zr_app.cpp

@ -0,0 +1,27 @@ @@ -0,0 +1,27 @@
#include "Rover.h"
void Rover::zr_app_1hz()
{
static bool before_fly = true;
if(arming.is_armed()){
if(before_fly){
before_fly = false;
gcs().send_text(MAV_SEVERITY_INFO,"%s",zr_app.get_sysid_board_id());
}
relay.on(3); // 电子开关,保持通路
// camera.set_in_arm_mode(true);
}else{
relay.off(3);
}
}
void Rover::zr_app_10hz()
{
}
void Rover::zr_app_50hz(){
}

BIN
Tools/Frame_params/XPlane/NACA_64_xxx_Airfoils_from_TR824.zip

Binary file not shown.

BIN
Tools/IO_Firmware/iofirmware_f103_8MHz_highpolh.bin generated

Binary file not shown.

BIN
Tools/IO_Firmware/iofirmware_f103_8MHz_lowpolh.bin generated

Binary file not shown.

BIN
Tools/IO_Firmware/iofirmware_highpolh.bin generated

Binary file not shown.

BIN
Tools/IO_Firmware/iofirmware_lowpolh.bin generated

Binary file not shown.

BIN
Tools/Linux_HAL_Essentials/pru/rangefinderpru/rangefinderprudata.bin generated

Binary file not shown.

BIN
Tools/Linux_HAL_Essentials/pru/rangefinderpru/rangefinderprutext.bin generated

Binary file not shown.

4
Tools/ardupilotwaf/boards.py

@ -278,7 +278,7 @@ class Board: @@ -278,7 +278,7 @@ class Board:
'-Werror=unused-value',
'-Werror=unused-variable',
'-Werror=delete-non-virtual-dtor',
'-Wfatal-errors',
# '-Wfatal-errors',
'-Wno-trigraphs',
'-Werror=parentheses',
'-DARDUPILOT_BUILD',
@ -834,7 +834,7 @@ class chibios(Board): @@ -834,7 +834,7 @@ class chibios(Board):
'-Wmissing-declarations',
'-Wno-unused-parameter',
'-Werror=array-bounds',
'-Wfatal-errors',
# '-Wfatal-errors',
'-Werror=uninitialized',
'-Werror=init-self',
'-Werror=unused-but-set-variable',

1
Tools/autotest/locations.txt

@ -1,4 +1,5 @@ @@ -1,4 +1,5 @@
#NAME=latitude,longitude,absolute-altitude,heading
CYDS=24.6187612,118.0383748,0,0
OSRF0=37.4003371,-122.0800351,0,353
OSRF0_PILOTSBOX=37.4003371,-122.0800351,2,270
CMAC=-35.363261,149.165230,584,353

357
Tools/autotest/web-firmware/Tools/FilterTool/index.html

@ -1,357 +0,0 @@ @@ -1,357 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>ArduPilot Filter Analysis</title>
<script type="text/javascript" src="filters.js"></script>
<script type="text/javascript" src="FileSaver.js"></script>
<script type="text/javascript" src={{url_for('static', filename='filters.js')}}></script>
<script type="text/javascript" src={{url_for('static', filename='FileSaver.js')}}></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.4/Chart.js"></script>
<script src="https://www.lactame.com/lib/ml/6.0.0/ml.min.js"></script>
</head>
<a href="https://ardupilot.org"><img src="logo.png"></a>
<h1>ArduPilot Filter Analysis</h1>
The following form will display the attenuation and phase lag for an
ArduPilot 4.2 filter setup.
<body onload="load_cookies(); fill_docs(); update_all_hidden(); calculate_filter(); calculate_pid(); ">
<canvas id="Attenuation" style="width:100%;max-width:1200px"></canvas>
<p>
<input type="button" id="calculate" value="Calculate">
<input type="button" id="SaveParams" value="Save Parameters" onclick="save_parameters();">
<button class="styleClass" onclick="document.getElementById('param_file').click()">Load Parameters</button>
<input type='file' id="param_file" style="display:none" onchange="load_parameters(this.files[0]);">
<form id="params" action="">
<fieldset style="max-width:1200px">
<legend>Graph Settings</legend>
<table>
<tr>
<td>
<fieldset style="width:150px">
<legend>Magnitude scale</legend>
<input type="radio" id="ScaleLog" name="Scale" value="Log" checked>
<label for="LogScale">dB</label><br>
<input type="radio" id="ScaleLinear" name="Scale" value="Linear">
<label for="LinearScale">Linear</label><br>
</fieldset>
</td>
<td>
<fieldset style="width:150px">
<legend>Frequency scale</legend>
<table>
<tr>
<td>
<input type="radio" id="freq_ScaleLog" name="feq_scale" value="Log" checked>
<label for="LogScale">Log</label><br>
<input type="radio" id="freq_ScaleLinear" name="feq_scale" value="Linear">
<label for="LinearScale">Linear</label><br>
</td>
<td>
<input type="radio" id="freq_Scale_Hz" name="feq_unit" value="Hz" checked>
<label for="Scale_unit_Hz">Hz</label><br>
<input type="radio" id="freq_Scale_RPM" name="feq_unit" value="RPM">
<label for="Scale_unit_RPM">RPM</label><br>
</td>
</tr>
</table>
</fieldset>
</td>
</tr>
</table>
<p>
<label for="MaxFreq">Maximum Displayed Frequency</label>
<input id="MaxFreq" name="MaxFreq" type="number" step="1" value="150" onchange="check_nyquist();"/>
<label id="MaxFreq_warning"></label>
</p>
<p>
<label for="MaxPhaseLag">Maximum Displayed Phase Lag</label>
<input id="MaxPhaseLag" name="MaxPhaseLag" type="number" step="1" value="360"/>
</p>
</fieldset>
<fieldset style="max-width:1200px">
<legend>INS Settings</legend>
<p>
<label for="GyroSampleRate">Gyro Sample Rate</label>
<input id="GyroSampleRate" name="GYRO_SAMPLE_RATE" type="number" step="1" value="2000"/>
</p>
<p>
<label for="INS_GYRO_FILTER">INS_GYRO_FILTER</label>
<input id="INS_GYRO_FILTER" name="INS_GYRO_FILTER" type="number" step="0.1" value="20.0"/>
</p>
</fieldset>
<fieldset style="max-width:1200px">
<legend>First Notch Filter</legend>
<p>
<label for="INS_HNTCH_ENABLE">INS_HNTCH_ENABLE</label>
<input id="INS_HNTCH_ENABLE" name="INS_HNTCH_ENABLE" type="number" step="1" value="0" onchange="update_hidden(this.id); fill_docs();"/>
<label id="INS_HNTCH_ENABLE.doc"></label>
</p>
<p>
<label for="INS_HNTCH_MODE">INS_HNTCH_MODE</label>
<input id="INS_HNTCH_MODE" name="INS_HNTCH_MODE" type="number" step="1" value="0" onchange="update_hidden_mode(); fill_docs();"/>
<label id="INS_HNTCH_MODE.doc"></label>
</p>
<p>
<label for="INS_HNTCH_FREQ">INS_HNTCH_FREQ</label>
<input id="INS_HNTCH_FREQ" name="INS_HNTCH_FREQ" type="number" step="0.1" value="0"/>
</p>
<p>
<label for="INS_HNTCH_BW">INS_HNTCH_BW</label>
<input id="INS_HNTCH_BW" name="INS_HNTCH_BW" type="number" step="0.1" value="0"/>
</p>
<p>
<label for="INS_HNTCH_ATT">INS_HNTCH_ATT</label>
<input id="INS_HNTCH_ATT" name="INS_HNTCH_ATT" type="number" step="0.1" value="0"/>
</p>
<p>
<label for="INS_HNTCH_REF">INS_HNTCH_REF</label>
<input id="INS_HNTCH_REF" name="INS_HNTCH_REF" type="number" step="0.01" value="0"/>
</p>
<p>
<label for="INS_HNTCH_FM_RAT">INS_HNTCH_FM_RAT</label>
<input id="INS_HNTCH_FM_RAT" name="INS_HNTCH_FM_RAT" type="number" step="0.01" value="1.0"/>
</p>
<p>
<label for="INS_HNTCH_HMNCS">INS_HNTCH_HMNCS</label>
<input id="INS_HNTCH_HMNCS" name="INS_HNTCH_HMNCS" type="number" step="1" value="1"/>
<label id="INS_HNTCH_HMNCS.doc"></label>
</p>
<p>
<label for="INS_HNTCH_OPTS">INS_HNTCH_OPTS</label>
<input id="INS_HNTCH_OPTS" name="INS_HNTCH_OPTS" type="number" step="1" value="0"/>
<label id="INS_HNTCH_OPTS.doc"></label>
</p>
</fieldset>
<fieldset style="max-width:1200px">
<legend>Second Notch Filter</legend>
<p>
<label for="INS_HNTC2_ENABLE">INS_HNTC2_ENABLE</label>
<input id="INS_HNTC2_ENABLE" name="INS_HNTC2_ENABLE" type="number" step="1" value="0" onchange="update_hidden(this.id); fill_docs();"/>
<label id="INS_HNTC2_ENABLE.doc"></label>
</p>
<p>
<label for="INS_HNTC2_MODE">INS_HNTC2_MODE</label>
<input id="INS_HNTC2_MODE" name="INS_HNTC2_MODE" type="number" step="1" value="0" onchange="update_hidden_mode(); fill_docs();"/>
<label id="INS_HNTC2_MODE.doc"></label>
</p>
<p>
<label for="INS_HNTC2_FREQ">INS_HNTC2_FREQ</label>
<input id="INS_HNTC2_FREQ" name="INS_HNTC2_FREQ" type="number" step="0.1" value="0"/>
</p>
<p>
<label for="INS_HNTC2_BW">INS_HNTC2_BW</label>
<input id="INS_HNTC2_BW" name="INS_HNTC2_BW" type="number" step="0.1" value="0"/>
</p>
<p>
<label for="INS_HNTC2_ATT">INS_HNTC2_ATT</label>
<input id="INS_HNTC2_ATT" name="INS_HNTC2_ATT" type="number" step="0.1" value="0"/>
</p>
<p>
<label for="INS_HNTC2_REF">INS_HNTC2_REF</label>
<input id="INS_HNTC2_REF" name="INS_HNTC2_REF" type="number" step="0.01" value="0"/>
</p>
<p>
<label for="INS_HNTC2_FM_RAT">INS_HNTC2_FM_RAT</label>
<input id="INS_HNTC2_FM_RAT" name="INS_HNTC2_FM_RAT" type="number" step="0.01" value="1.0"/>
</p>
<p>
<label for="INS_HNTC2_HMNCS">INS_HNTC2_HMNCS</label>
<input id="INS_HNTC2_HMNCS" name="INS_HNTC2_HMNCS" type="number" step="1" value="1"/>
<label id="INS_HNTC2_HMNCS.doc"></label>
</p>
<p>
<label for="INS_HNTC2_OPTS">INS_HNTC2_OPTS</label>
<input id="INS_HNTC2_OPTS" name="INS_HNTC2_OPTS" type="number" step="1" value="0"/>
<label id="INS_HNTC2_OPTS.doc"></label>
</p>
</fieldset>
<fieldset style="max-width:1200px" id="Throttle_input">
<legend>Throttle Based</legend>
<p>
<label for="Throttle">Throttle</label>
<input id="Throttle" name="Throttle" type="number" step="0.01" value="0.3"/>
</p>
</fieldset>
<fieldset style="max-width:1200px" id="ESC_input">
<legend>ESC Telemetry</legend>
<p>
<label for="NUM_MOTORS">Number of Motors</label>
<input id="NUM_MOTORS" name="NUM_MOTORS" type="number" step="1" value="1"/>
</p>
<p>
<label for="ESC_RPM">ESC RPM</label>
<input id="ESC_RPM" name="ESC_RPM" type="number" step="1" value="2500"/>
</p>
</fieldset>
<fieldset style="max-width:1200px" id="RPM_input">
<legend>RPM/EFI Based</legend>
<p>
<label for="RPM1">RPM1</label>
<input id="RPM1" name="RPM1" type="number" step="1" value="2500"/>
</p>
<p>
<label for="RPM2">RPM2</label>
<input id="RPM2" name="RPM2" type="number" step="1" value="2500"/>
</p>
</fieldset>
</form>
<h2>PIDs</h2>
<h3><label id="PID_title">Title</label></h3>
<canvas id="PID_Attenuation" style="width:100%;max-width:1200px"></canvas>
<p>
<input type="button" id="CalculateRoll" value="Caculate Roll" onclick="calculate_pid(this.id);">
<input type="button" id="CalculatePitch" value="Caculate Pitch" onclick="calculate_pid(this.id);">
<input type="button" id="CalculateYaw" value="Caculate Yaw" onclick="calculate_pid(this.id);">
</p>
<form id="PID_params" action="">
<fieldset style="max-width:1200px">
<legend>Graph Settings</legend>
<p>
<table>
<tr>
<td>
<fieldset style="width:150px">
<legend>Gain scale</legend>
<input type="radio" id="PID_ScaleLog" name="PID_Scale" value="Log" checked>
<label for="LogScale">dB</label><br>
<input type="radio" id="PID_ScaleLinear" name="PID_Scale" value="Linear">
<label for="LinearScale">Linear</label><br>
</fieldset>
</td>
<td>
<fieldset style="width:150px">
<legend>Frequency scale</legend>
<table>
<tr>
<td>
<input type="radio" id="PID_freq_ScaleLog" name="PID_feq_scale" value="Log" checked>
<label for="LogScale">Log</label><br>
<input type="radio" id="PID_freq_ScaleLinear" name="PID_feq_scale" value="Linear">
<label for="LinearScale">Linear</label><br>
</td>
<td>
<input type="radio" id="PID_freq_Scale_Hz" name="PID_feq_unit" value="Hz" checked>
<label for="Scale_unit_Hz">Hz</label><br>
<input type="radio" id="PID_freq_Scale_RPM" name="PID_feq_unit" value="RPM">
<label for="Scale_unit_RPM">RPM</label><br>
</td>
</tr>
</table>
</fieldset>
</td>
<td>
<fieldset style="width:150px">
<legend>Filtering</legend>
<input type="radio" id="PID_filtering_Pre" name="filtering" value="Pre" checked>
<label for="LogScale">Pre</label><br>
<input type="radio" id="PID_filtering_Post" name="filtering" value="Post">
<label for="LinearScale">Post</label><br>
</fieldset>
</td>
</tr>
</table>
</p>
<p>
<label for="PID_MaxFreq">Maximum Displayed Frequency</label>
<input id="PID_MaxFreq" name="PID_MaxFreq" type="number" step="1" value="150" onchange="check_nyquist();"/>
<label id="PID_MaxFreq_warning"></label>
</p>
<p>
<label for="PID_MaxPhaseLag">Maximum Displayed Phase Lag</label>
<input id="PID_MaxPhaseLag" name="PID_MaxPhaseLag" type="number" step="1" value="360"/>
</p>
</fieldset>
<fieldset style="max-width:1200px">
<legend>Loop Rate</legend>
<p>
<label for="SCHED_LOOP_RATE">SCHED_LOOP_RATE</label>
<input id="SCHED_LOOP_RATE" name="SCHED_LOOP_RATE" type="number" step="1" value="400"/>
</p>
</fieldset>
<fieldset style="max-width:1200px">
<legend>Roll</legend>
<p>
<label for="ATC_RAT_RLL_P">ATC_RAT_RLL_P</label>
<input id="ATC_RAT_RLL_P" name="ATC_RAT_RLL_P" type="number" step="0.01" value="0.135"/>
</p>
<p>
<label for="ATC_RAT_RLL_I">ATC_RAT_RLL_I</label>
<input id="ATC_RAT_RLL_I" name="ATC_RAT_RLL_I" type="number" step="0.01" value="0.135"/>
</p>
<p>
<label for="ATC_RAT_RLL_D">ATC_RAT_RLL_D</label>
<input id="ATC_RAT_RLL_D" name="ATC_RAT_RLL_D" type="number" step="0.0001" value="0.0036"/>
</p>
<p>
<label for="ATC_RAT_RLL_FLTE">ATC_RAT_RLL_FLTE</label>
<input id="ATC_RAT_RLL_FLTE" name="ATC_RAT_RLL_FLTE" type="number" step="0.01" value="0"/>
</p>
<p>
<label for="ATC_RAT_RLL_FLTD">ATC_RAT_RLL_FLTD</label>
<input id="ATC_RAT_RLL_FLTD" name="ATC_RAT_RLL_FLTD" type="number" step="0.01" value="20"/>
</p>
</fieldset>
<fieldset style="max-width:1200px">
<legend>Pitch</legend>
<p>
<label for="ATC_RAT_PIT_P">ATC_RAT_PIT_P</label>
<input id="ATC_RAT_PIT_P" name="ATC_RAT_PIT_P" type="number" step="0.01" value="0.135"/>
</p>
<p>
<label for="ATC_RAT_PIT_I">ATC_RAT_PIT_I</label>
<input id="ATC_RAT_PIT_I" name="ATC_RAT_PIT_I" type="number" step="0.01" value="0.135"/>
</p>
<p>
<label for="ATC_RAT_PIT_D">ATC_RAT_PIT_D</label>
<input id="ATC_RAT_PIT_D" name="ATC_RAT_PIT_D" type="number" step="0.0001" value="0.0036"/>
</p>
<p>
<label for="ATC_RAT_PIT_FLTE">ATC_RAT_PIT_FLTE</label>
<input id="ATC_RAT_PIT_FLTE" name="ATC_RAT_PIT_FLTE" type="number" step="0.01" value="0"/>
</p>
<p>
<label for="ATC_RAT_PIT_FLTD">ATC_RAT_PIT_FLTD</label>
<input id="ATC_RAT_PIT_FLTD" name="ATC_RAT_PIT_FLTD" type="number" step="0.01" value="20"/>
</p>
</fieldset>
<fieldset style="max-width:1200px">
<legend>Yaw</legend>
<p>
<label for="ATC_RAT_YAW_P">ATC_RAT_YAW_P</label>
<input id="ATC_RAT_YAW_P" name="ATC_RAT_YAW_P" type="number" step="0.01" value="0.09"/>
</p>
<p>
<label for="ATC_RAT_YAW_I">ATC_RAT_YAW_I</label>
<input id="ATC_RAT_YAW_I" name="ATC_RAT_YAW_I" type="number" step="0.01" value="0.009"/>
</p>
<p>
<label for="ATC_RAT_YAW_D">ATC_RAT_YAW_D</label>
<input id="ATC_RAT_YAW_D" name="ATC_RAT_YAW_D" type="number" step="0.0001" value="0"/>
</p>
<p>
<label for="ATC_RAT_YAW_FLTE">ATC_RAT_YAW_FLTE</label>
<input id="ATC_RAT_YAW_FLTE" name="ATC_RAT_YAW_FLTE" type="number" step="0.01" value="2.5"/>
</p>
<p>
<label for="ATC_RAT_YAW_FLTD">ATC_RAT_YAW_FLTD</label>
<input id="ATC_RAT_YAW_FLTD" name="ATC_RAT_YAW_FLTD" type="number" step="0.01" value="0"/>
</p>
</fieldset>
</form>
<script>
var calc_btn = document.getElementById('calculate');
calc_btn.onclick = function() {
calculate_filter();
}
//var clear_btn = document.getElementById('clear_cookies');
//clear_btn.onclick = function() {
// clear_cookies();
//}
</script>
</body>
</html>

160
Tools/autotest/web-firmware/index.html

@ -1,160 +0,0 @@ @@ -1,160 +0,0 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>ArduPilot Firmware Download</title>
<!--CSS -->
<link href="css/main.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="main">
<a href="https://firmware.ardupilot.org/">
<div id="logo">
</div>
</a>
<h2>ArduPilot Firmware builds</h2>
These firmware builds are automatically generated by the
<a href="https://autotest.ardupilot.org">ArduPilot autotest system</a>.<p>
<h2>License</h2>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.<p>
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.<p>
For details see <a href="http://www.gnu.org/licenses/gpl.html">http://www.gnu.org/licenses/gpl.html</a>
<h2>Safety</h2>
Operating a powered vehicle of any kind can be a lot of fun. However,
nothing will ruin your day at the park more quickly than an accident
or running afoul of the law. Since we want you to have a great
experience, please make sure that you do all of the following:
<ul>
<li><b>Operate within all local laws and regulations</b>. For
example, in the United States, current regulations require you to
operate most UAVs under 400 foot above ground level, within line of
sight, and away from obstructions and populated areas. Since these
regulations vary from place to place, even within the same country,
ensure that you understand what you need to do to stay compliant.</li>
<li><b>Never operate the vehicle or software in a way that could be
dangerous to you, other people, or property</b>. Propellers, while
rotating, could easily cut you; if a UAV fell on a person or object,
it could cause a lot of pain and damage; a UAV caught in power lines
could cause an outage for many people. As Ben Franklin said, "An
ounce of prevention is worth a pound of cure."</li>
<li><b>Always keep in mind that software and hardware failures
happen</b>. Although we design our products to minimize such issues,
you should always operate with the understanding that a failure could
occur at any point of time and without warning. As such, you should
take the appropriate precautions to minimize danger in case of
failure.</li>
<li><b>Never use the software or hardware for manned vehicles</b>.
The software and hardware we provide is only for use in unmanned
vehicles.</li>
</ul>
<h2>Firmwares</h2>
<a href="Plane"><img src="images/plane.png" width="80"
alt="Plane">Plane</a> - for fixed wing aircraft<p>
<a href="Copter"><img src="images/copter.png" width="80"
alt="Copter">Copter</a> - for multicopters and
traditional helicopters<p>
<a href="Rover"><img src="images/rover.png" width="80"
alt="Rover">Rover</a> - for land vehicles and boats<p>
<a href="Sub"><img src="images/sub.png" width="80"
alt="Sub">Sub</a> - for ROVs and underwater vehicles<p>
<a href="Blimp"><img src="images/blimp.png" width="80"
alt="Blimp">Blimp</a> - for lighter-than-air vehicles<p>
<a href="AntennaTracker"><img src="images/antenna-tracker.png" width="80"
alt="AntennaTracker">Antenna Tracker</a> -
for antenna tracking of ArduPilot vehicles<p>
<a href="Tools/MissionPlanner"><img src="images/planner.png" width="80"
alt="MissionPlanner">MissionPlanner</a> - Mission Planner tool<p>
<a href="Tools/APMPlanner"><img src="images/ap_rc.png" width="80"
alt="APM Planner 2.0">APM Planner 2.0</a> - APM Planner 2.0 tool<p>
<a href="SiK"><img src="images/3DR_Radio.jpg" width="80"
alt="Radio">SiK</a> - SiK Radio Firmware<p>
<a href="Tools"><img src="images/tools.png" width="80"
alt="Tools">Tools</a> - Build and development tools<p>
<a href="devbuild"><img src="images/tools.png" width="80"
alt="Tools">DevBuild</a> - Developer builds<p>
<a href="http://github.com/ArduPilot/companion"><img src="images/companion.png" width="78"
alt="Companion">Companion</a> - Companion Computer example code <a href="Companion">and Images</a></p><p>
<a href="AP_Periph"><img src="images/tools.png" width="80"
alt="AP_Periph">AP_Periph</a> - UAVCAN Peripheral Firmware<p>
<a href="Tools/FilterTool"><img src="images/filter.png" width="80"
alt="FilterTool">FilterTool</a> - Filter Analysis Tool<p>
<h2>Types of firmware available</h2>
To choose a firmware to download you need to choose:
<ul>
<li>The type of board that you have</li>
<li>Whether you want the stable, beta or latest version of the
firmware</li>
</ul>
The meanings of the versions are
<ul>
<li><b>stable</b> - this is the version recommended for new users. It
has had the most testing.</li>
<li><b>beta</b> - this is the firmware to choose if you want to be
part of beta testing of new versions prior to release as a stable
version. Note that during some development times the beta release
will be the same as the stable release.</li>
<li><b>latest</b> - this is the latest version from our <a href="http://github.com/ArduPilot">git source
code repository</a>. This version is only for developers. The code
may have unknown bugs and extreme care should be taken by anyone
using it.</li>
</ul>
For each vehicle type a firmware image is available for each type of
autopilot board supported by that vehicle type.
<h2>Load your firmware using Mission Planner</h2>
<ul>
<li>You can load the <b>stable</b> version of the firmware by selecting the appropriate icon for your airframe from the Firmware Tab.</li>
<li>You can load the <b>beta</b> version of the firmware by selecting the "BETA firmware" button in the bottom right corner of the screen and then the appropriate icon.</li>
<li>You can load the <b>latest</b> version of the firmware by downloading a firmware image from one of the links and selecting the "Load custom firmware" button in
the bottom right corner of the screen.</li>
</ul>
<h2>Loading firmware on Linux or MacOS</h2>
To load a firmware on a Linux or MacOS machine you will need to
use
the <a href="https://raw.github.com/ArduPilot/ardupilot/master/Tools/scripts/uploader.py">uploader.py</a>
python script. You can run it like this:
<pre>
python Tools/scripts/uploader.py --port /dev/ttyACM0 build/Pixracer/bin/arducopter.apj
</pre>
After starting the script, press the reset button on your device to
make it enter bootloader mode.
<h2>Building the firmware yourself</h2>
To build the firmware yourself please see the <a href="https://ardupilot.org/dev/index.html">ArduPilot development site</a>.
</div>
</body>
</html>

64
Tools/autotest/web/index.html

@ -1,64 +0,0 @@ @@ -1,64 +0,0 @@
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>ArduPilot Automatic Testing</title>
<!--CSS -->
<link rel="stylesheet" href="css/main.css" type="text/css" />
</head>
<body>
<div class="main">
<a href="https://autotest.ardupilot.org/">
<div class="logo">
</div>
</a>
<h2>Automatic test run at ${date}</h2>
<div class="git">Test run on git commit <a href="https://github.com/ArduPilot/ardupilot/commit/${githash}">${githash}</a>
</div>
<h2>Test Results</h2>
<img src="autotest-badge.svg" alt="missing autotest badge"/>
<ul class="testresults">
${{tests:<li>${name} - ${result} (${elapsed} seconds)</li>
}}
</ul>
<h2>Test logs</h2>
<ul class=testlogs>
${{files:<li>${name} - <a href="${fname}">${fname}</a>
}}
</ul>
<h2>Flight Tracks</h2>
<ul class=testlogs>
${{images:${fname}<br><img src="${fname}" alt="${name}" />
}}
</ul>
<h2>Older results</h2>
<div class="git">
Older test results are <a href="history">available here</a>
</div>
</div>
<!-- Global site tag (gtag.js) - Autotest statistics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-75650032-5"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-75650032-5', { 'anonymize_ip': true });
</script>
</body>
</html>

BIN
Tools/bootloaders/BirdCANdy_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/CUAV-Nora_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/CUAV-X7_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/CUAV_GPS_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/CUAVv5Nano_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/CUAVv5_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/CubeBlack_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/CubeOrangePlus_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/CubeOrange_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/CubeYellow_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/Durandal_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/F35Lightning_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/F4BY_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/FreeflyRTK_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/Hitec-Airspeed_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/HitecMosaic_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/HolybroG4_GPS_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/HolybroGPS_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/KakuteF4_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/KakuteF7Mini_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/KakuteF7_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/KakuteH7_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/MambaF405US-I2C_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/MatekF405-STD_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/MatekF405-Wing_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/MatekF405_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/MatekF765-SE_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/MatekF765-Wing_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/Nucleo-G491_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/NucleoH743_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/OMNIBUSF7V2_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/OmnibusNanoV6_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/PH4-mini_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/Pix32v5_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/Pixhawk1-1M_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/Pixhawk1_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/Pixhawk4_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/Pixracer_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/QioTekZealotF427_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/R9Pilot_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/SuccexF4_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/TBS-Colibri-F7_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/VRBrain-v52_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/VRUBrain-v51_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/ZubaxGNSS_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/airbotf4_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/crazyflie2_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/f103-ADSB_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/f103-Airspeed_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/f103-RangeFinder_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/f103-Trigger_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/f103-periph_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/f303-M10070_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/f303-MatekGPS_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/f303-Universal_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/fmuv3_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/fmuv5_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/iomcu_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/luminousbee5_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/mRo-M10095_bl.elf generated

Binary file not shown.

BIN
Tools/bootloaders/mRoControlZeroF7_bl.elf generated

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save