From d78a842ca802396c4d0d88ca6d17c9ddd0e4d770 Mon Sep 17 00:00:00 2001 From: Timothy Scott Date: Fri, 17 May 2019 14:51:16 +0200 Subject: [PATCH] Rover: add airframe configuration for Aion R1 Rover (#12026) * Added Aion R1 airframe * Tuned PID values for Aion R1 * Changed to generic mixer and cleaned up configuration --- .../airframes/50003_aion_robotics_r1_rover | 73 +++++++++++++++++++ .../init.d/airframes/CMakeLists.txt | 1 + ROMFS/px4fmu_common/mixers/CMakeLists.txt | 1 + .../generic_differential_rover.main.mix | 25 +++++++ 4 files changed, 100 insertions(+) create mode 100644 ROMFS/px4fmu_common/init.d/airframes/50003_aion_robotics_r1_rover create mode 100644 ROMFS/px4fmu_common/mixers/generic_differential_rover.main.mix diff --git a/ROMFS/px4fmu_common/init.d/airframes/50003_aion_robotics_r1_rover b/ROMFS/px4fmu_common/init.d/airframes/50003_aion_robotics_r1_rover new file mode 100644 index 0000000000..cd3faa7dd2 --- /dev/null +++ b/ROMFS/px4fmu_common/init.d/airframes/50003_aion_robotics_r1_rover @@ -0,0 +1,73 @@ +#!/bin/sh +# +# @name Aion Robotics R1 UGV +# +# @url http://docs.aionrobotics.com/en/latest/r1-ugv.html +# +# @type Rover +# @class Rover +# +# @output MAIN0 Speed of left wheels +# @output MAIN1 Speed of right wheels +# +# @maintainer Timothy Scott +# +# @board px4_fmu-v2 exclude +# + +sh /etc/init.d/rc.ugv_defaults + +if [ $AUTOCNF = yes ] +then + param set BAT_N_CELLS 4 + + param set EKF2_GBIAS_INIT 0.01 + param set EKF2_ANGERR_INIT 0.01 + param set EKF2_MAG_TYPE 1 + + param set FW_AIRSPD_MIN 0 + param set FW_AIRSPD_TRIM 1 + param set FW_AIRSPD_MAX 3 + + param set GND_WR_P 1 + param set GND_WR_I 0.9674 + param set GND_WR_IMAX 0.1 + param set GND_WR_D 0.1 + param set GND_SP_CTRL_MODE 1 + param set GND_L1_DIST 10 + param set GND_THR_IDLE 0 + param set GND_THR_CRUISE 0 + param set GND_THR_MAX 0.5 + # TODO: Set to -1.0, to allow reversing. This will require many changes in the codebase + # to support negative throttle. + param set GND_THR_MIN 0.0 + param set GND_SPEED_P 0.25 + param set GND_SPEED_I 0.001 + param set GND_SPEED_D 3 + param set GND_SPEED_IMAX 0.125 + param set GND_SPEED_THR_SC 1 + + param set MIS_LTRMIN_ALT 0.01 + param set MIS_TAKEOFF_ALT 0.01 + + param set NAV_ACC_RAD 0.5 + + # Provide ESC a constant 1500 us pulse, which corresponds to + # idle on the Roboclaw motor controller on the Aion R1 + param set PWM_DISARMED 1500 + param set PWM_MAIN_DIS0 1500 + param set PWM_MAIN_DIS1 1500 + param set PWM_MAX 2000 + param set PWM_MIN 1000 + + # Enable Airspeed check circuit breaker because Rovers will have no airspeed sensor + param set CBRK_AIRSPD_CHK 162128 +fi + +# Configure this as ugv +set MAV_TYPE 10 + +# Set mixer +set MIXER generic_differential_rover + +set PWM_MAIN_REV2 1 diff --git a/ROMFS/px4fmu_common/init.d/airframes/CMakeLists.txt b/ROMFS/px4fmu_common/init.d/airframes/CMakeLists.txt index fca7f6e709..49c0fff59d 100644 --- a/ROMFS/px4fmu_common/init.d/airframes/CMakeLists.txt +++ b/ROMFS/px4fmu_common/init.d/airframes/CMakeLists.txt @@ -141,4 +141,5 @@ px4_add_romfs_files( 50000_generic_ground_vehicle 50001_axialracing_ax10 50002_traxxas_stampede_2wd + 50003_aion_robotics_r1_rover ) diff --git a/ROMFS/px4fmu_common/mixers/CMakeLists.txt b/ROMFS/px4fmu_common/mixers/CMakeLists.txt index ed45ced5d1..77634fdd86 100644 --- a/ROMFS/px4fmu_common/mixers/CMakeLists.txt +++ b/ROMFS/px4fmu_common/mixers/CMakeLists.txt @@ -52,6 +52,7 @@ px4_add_romfs_files( firefly6.main.mix fw_generic_wing.main.mix FX79.main.mix + generic_differential_rover.main.mix hexa_cox.main.mix hexa_+.main.mix hexa_x.main.mix diff --git a/ROMFS/px4fmu_common/mixers/generic_differential_rover.main.mix b/ROMFS/px4fmu_common/mixers/generic_differential_rover.main.mix new file mode 100644 index 0000000000..1efffff300 --- /dev/null +++ b/ROMFS/px4fmu_common/mixers/generic_differential_rover.main.mix @@ -0,0 +1,25 @@ +Generic differential-drive rover +=========================== + +This mixer is suitable for controlling any differential-drive rover. That is, +a rover where the left wheels and right wheels are driven independently, +allowing turning in place. It outputs to channels 0 (left wheels) and +1 (right wheels) + +Inputs to the mixer come from channel group 0 (vehicle attitude), channels 2 (yaw), and 3 (thrust). + +See the README for more information on the scaler format. + + +Throttle of left wheels of rover on Output 0 +--------------------------------------- +M: 2 +S: 0 2 10000 10000 0 -10000 10000 +S: 0 3 10000 10000 0 -10000 10000 + + +Throttle of right wheels of rover on Output 1 +--------------------------------------- +M: 2 +S: 0 2 -10000 -10000 0 -10000 10000 +S: 0 3 10000 10000 0 -10000 10000