Skip to content

Commit

Permalink
Add support for FlighGear SITL.
Browse files Browse the repository at this point in the history
      Add flightgear_bridge submodule.
      Add traget px4_sitl_nolockstep with disabled  LOCKSTEP simulation.
      Add flightgear viewer targets and startup scripts
      Add a few posible vehicles plane (rascal), autogyro (tf-g1), and rover (tf-r1))
  • Loading branch information
slimonslimon committed Apr 26, 2020
1 parent 3832214 commit 3199cd2
Show file tree
Hide file tree
Showing 11 changed files with 418 additions and 2 deletions.
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -45,3 +45,6 @@
[submodule "platforms/qurt/dspal"]
path = platforms/qurt/dspal
url = https://github.com/ATLFlight/dspal.git
[submodule "Tools/flightgear_bridge"]
path = Tools/flightgear_bridge
url = https://github.com/ThunderFly-aerospace/PX4-FlightGear-Bridge.git
58 changes: 58 additions & 0 deletions ROMFS/px4fmu_common/init.d-posix/1033_rascal
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
#!/bin/sh
#
# @name Plane SITL
#

sh /etc/init.d/rc.fw_defaults

if [ $AUTOCNF = yes ]
then
param set EKF2_ARSP_THR 8
param set EKF2_FUSE_BETA 1
#param set EKF2_MAG_ACCLIM 0
#param set EKF2_MAG_YAWLIM 0

param set FW_LND_AIRSPD_SC 1.1
param set FW_LND_ANG 5
param set FW_THR_LND_MAX 0
param set FW_LND_HHDIST 30
param set FW_LND_FL_PMIN 9.5
param set FW_LND_FL_PMAX 20
param set FW_LND_FLALT 5
param set FW_LND_TLALT 15

param set FW_L1_PERIOD 25

param set FW_P_TC 0.4
param set FW_PR_FF 0.40
param set FW_PR_I 0.05
param set FW_PR_P 0.05

param set FW_R_TC 0.45
param set FW_RR_FF 0.40
param set FW_RR_I 0.132
param set FW_RR_P 0.085

param set FW_W_EN 1

param set MIS_LTRMIN_ALT 30
param set MIS_TAKEOFF_ALT 20
param set MIS_DIST_1WP 2500
param set MIS_DIST_WPS 10000

param set NAV_ACC_RAD 15
param set NAV_DLL_ACT 2
param set NAV_LOITER_RAD 50

param set RWTO_TKOFF 1
#param set FW_THR_SLEW_MAX 0.3 # fix takeoff failure for JSBsim in autonomous mission mode.
param set RWTO_MAX_PITCH 20
param set RWTO_MAX_ROLL 10
#param set RWTO_MAX_THR 0.6 # fix takeoff failure for JSBsim in autonomous mission mode.
param set RWTO_PSP 8
param set RWTO_AIRSPD_SCL 1.8

fi

set MIXER_FILE etc/mixers-sitl/plane_sitl.main.mix
set MIXER custom
58 changes: 58 additions & 0 deletions ROMFS/px4fmu_common/init.d-posix/1034_rascal-electric
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
#!/bin/sh
#
# @name Plane SITL
#

sh /etc/init.d/rc.fw_defaults

if [ $AUTOCNF = yes ]
then
param set EKF2_ARSP_THR 8
param set EKF2_FUSE_BETA 1
#param set EKF2_MAG_ACCLIM 0
#param set EKF2_MAG_YAWLIM 0

param set FW_LND_AIRSPD_SC 1.1
param set FW_LND_ANG 5
param set FW_THR_LND_MAX 0
param set FW_LND_HHDIST 30
param set FW_LND_FL_PMIN 9.5
param set FW_LND_FL_PMAX 20
param set FW_LND_FLALT 5
param set FW_LND_TLALT 15

param set FW_L1_PERIOD 25

param set FW_P_TC 0.4
param set FW_PR_FF 0.40
param set FW_PR_I 0.05
param set FW_PR_P 0.05

param set FW_R_TC 0.45
param set FW_RR_FF 0.40
param set FW_RR_I 0.132
param set FW_RR_P 0.085

param set FW_W_EN 1

param set MIS_LTRMIN_ALT 30
param set MIS_TAKEOFF_ALT 20
param set MIS_DIST_1WP 2500
param set MIS_DIST_WPS 10000

param set NAV_ACC_RAD 15
param set NAV_DLL_ACT 2
param set NAV_LOITER_RAD 50

param set RWTO_TKOFF 1
#param set FW_THR_SLEW_MAX 0.3 # fix takeoff failure for JSBsim in autonomous mission mode.
param set RWTO_MAX_PITCH 20
param set RWTO_MAX_ROLL 10
#param set RWTO_MAX_THR 0.6 # fix takeoff failure for JSBsim in autonomous mission mode.
param set RWTO_PSP 8
param set RWTO_AIRSPD_SCL 1.8

fi

set MIXER_FILE etc/mixers-sitl/plane_sitl.main.mix
set MIXER custom
43 changes: 43 additions & 0 deletions ROMFS/px4fmu_common/init.d-posix/1061_tf-r1
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
#!/bin/sh
#
# @name ThunderFly TF-R1 UAV Rover
# @type Rover
# @class Rover
#
# @url https://github.com/ThunderFly-aerospace/TF-R1/
# @maintainer ThunderFly s.r.o.
#

sh /etc/init.d/rc.rover_defaults

if [ $AUTOCNF = yes ]
then
param set GND_L1_DIST 5
param set GND_SP_CTRL_MODE 1
param set GND_SPEED_D 3
param set GND_SPEED_I 0.001
param set GND_SPEED_IMAX 0.125
param set GND_SPEED_P 0.25
param set GND_SPEED_THR_SC 1
param set GND_SPEED_TRIM 15
param set GND_SPEED_MAX 25
param set GND_THR_CRUISE 0.3
param set GND_THR_IDLE 0
param set GND_THR_MAX 0.5
param set GND_THR_MIN 0

param set MIS_LTRMIN_ALT 0.01
param set MIS_TAKEOFF_ALT 0.01
param set NAV_ACC_RAD 0.5
param set NAV_LOITER_RAD 2

param set CBRK_AIRSPD_CHK 162128

param set GND_MAX_ANG 0.6
param set GND_WHEEL_BASE 3.0

fi

set MAV_TYPE 10

set MIXER_FILE etc/mixers-sitl/rover_sitl.main.mix
64 changes: 64 additions & 0 deletions ROMFS/px4fmu_common/init.d-posix/17001_tf-g1
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
#!/bin/sh
#
# @name ThunderFly TF-G1
# ThunderFly TF-G1 autogyro airframe. Only for FlightGear simulator
#
# @type Autogyro
# @class Autogyro
#
# @url https://github.com/ThunderFly-aerospace/TF-G1/
#
#

sh /etc/init.d/rc.fw_defaults

if [ $AUTOCNF = yes ]
then
param set EKF2_ARSP_THR 8
param set EKF2_FUSE_BETA 1
param set ASPD_STALL 10.0

param set FW_P_RMAX_NEG 20.0
param set FW_P_RMAX_POS 60.0
param set FW_W_RMAX 10
param set FW_W_EN 1

param set FW_PR_IMAX 0.4
param set FW_R_TC 0.4
param set FW_RR_FF 0.5
param set FW_RR_I 0.1
param set FW_RR_IMAX 0.2
param set FW_RR_P 0.08

param set MIS_LTRMIN_ALT 50
param set MIS_TAKEOFF_ALT 3

param set NAV_ACC_RAD 20
param set NAV_DLL_ACT 2
param set NAV_LOITER_RAD 100

param set RWTO_TKOFF 1
param set MAV_BROADCAST 1

param set FW_ARSP_SCALE_EN 0

param set FW_AIRSPD_MAX 35
param set FW_AIRSPD_MIN 7
param set FW_AIRSPD_TRIM 15

param set FW_P_LIM_MAX 25
param set FW_P_LIM_MIN -5
param set FW_R_LIM 30

param set FW_MAN_P_MAX 30.0
param set FW_MAN_R_MAX 30.0

param set FW_THR_CRUISE 0.8
param set FW_THR_IDLE 0
param set COM_DISARM_PRFLT 0

fi


set MIXER_FILE etc/mixers-sitl/autogyro_sitl.main.mix
set MIXER custom
37 changes: 37 additions & 0 deletions ROMFS/px4fmu_common/mixers-sitl/autogyro_sitl.main.mix
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
Mixer for SITL autogyro.
=========================================================

# 0 mixer for the rudder (Rotor roll)
M: 1
O: 10000 10000 0 -10000 10000
S: 0 2 10000 10000 0 -10000 10000

# 1 mixer for the pusher/puller throttle
M: 1
O: 10000 10000 0 -10000 10000
S: 0 3 0 20000 -10000 -10000 10000

# 2 mixer for the aileron
M: 1
O: 10000 10000 0 -10000 10000
S: 0 0 -10000 -10000 0 -10000 10000

# 3 mixer for the elevator (Rotor pitch)
M: 1
O: 10000 10000 0 -10000 10000
S: 0 1 10000 10000 0 -10000 10000

# 4 mixer for the prerotator AUX1
M: 1
O: 10000 10000 0 -10000 10000
S: 1 5 10000 10000 0 -10000 10000

# 5 mixer for the manual elevator AUX2
M: 1
O: 10000 10000 0 -10000 10000
S: 1 6 10000 10000 0 -10000 10000

# 6 mixer for the release device AUX3
M: 1
O: 10000 10000 0 -10000 10000
S: 1 7 10000 10000 0 -10000 10000
1 change: 1 addition & 0 deletions Tools/flightgear_bridge
Submodule flightgear_bridge added at 03887d
8 changes: 6 additions & 2 deletions Tools/setup/ubuntu.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
## Installs:
## - Common dependencies and tools for nuttx, jMAVSim, Gazebo
## - NuttX toolchain (omit with arg: --no-nuttx)
## - jMAVSim and Gazebo9 simulator (omit with arg: --no-sim-tools)
## - jMAVSim, Gazebo9 and FlightGear simulator (omit with arg: --no-sim-tools)
##
## Not Installs:
## - FastRTPS and FastCDR
Expand Down Expand Up @@ -109,7 +109,7 @@ fi
# Python3 dependencies
echo
echo "Installing PX4 Python3 dependencies"
pip3 install --user -r ${DIR}/requirements.txt
python3 -m pip install --user -r ${DIR}/requirements.txt

# NuttX toolchain (arm-none-eabi-gcc)
if [[ $INSTALL_NUTTX == "true" ]]; then
Expand Down Expand Up @@ -200,6 +200,10 @@ if [[ $INSTALL_SIM == "true" ]]; then
protobuf-compiler \
;

# FlightGear
sudo add-apt-repository -y -u ppa:saiarcot895/flightgear
sudo DEBIAN_FRONTEND=noninteractive apt-get -y --quiet install flightgear

fi

if [[ $INSTALL_NUTTX == "true" ]]; then
Expand Down
10 changes: 10 additions & 0 deletions Tools/sitl_run.sh
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,13 @@ elif [ "$program" == "gazebo" ] && [ ! -n "$no_sim" ]; then
echo "You need to have gazebo simulator installed!"
exit 1
fi
elif [ "$program" == "flightgear" ] && [ -z "$no_sim" ]; then
echo "FG setup"
cd "${src_path}/Tools/flightgear_bridge/"
"${src_path}/Tools/flightgear_bridge/FG_run.py" ${model}.json 0
"${build_path}/build_flightgear_bridge/flightgear_bridge" 0 `./get_FGbridge_params.py ${model}.json` &
FG_BRIDGE_PID=`echo $!`

fi

pushd "$rootfs" >/dev/null
Expand Down Expand Up @@ -171,4 +178,7 @@ elif [ "$program" == "gazebo" ]; then
if [[ ! -n "$HEADLESS" ]]; then
kill -9 $GUI_PID
fi
elif [ "$program" == "flightgear" ]; then
kill $FG_BRIDGE_PID
kill -9 `cat /tmp/px4fgfspid_0`
fi
Loading

0 comments on commit 3199cd2

Please sign in to comment.