Skip to content

Commit b3e96a0

Browse files
authored
Merge branch 'main' into pr-multicopter_altitude_hold_mavsdk_test
2 parents c0f605d + 9198125 commit b3e96a0

File tree

79 files changed

+1452
-993
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

79 files changed

+1452
-993
lines changed

ROMFS/px4fmu_common/init.d-posix/airframes/4001_gz_x500

-2
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@ PX4_SIM_MODEL=${PX4_SIM_MODEL:=x500}
1313

1414
param set-default SIM_GZ_EN 1
1515

16-
param set-default SENS_EN_GPSSIM 1
17-
param set-default SENS_EN_BAROSIM 0
1816
param set-default SENS_EN_MAGSIM 1
1917

2018
param set-default CA_AIRFRAME 0

ROMFS/px4fmu_common/init.d-posix/airframes/4003_gz_rc_cessna

-2
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@ PX4_SIM_MODEL=${PX4_SIM_MODEL:=rc_cessna}
1212

1313
param set-default SIM_GZ_EN 1
1414

15-
param set-default SENS_EN_GPSSIM 1
16-
param set-default SENS_EN_BAROSIM 0
1715
param set-default SENS_EN_MAGSIM 1
1816
param set-default SENS_EN_ARSPDSIM 1
1917

ROMFS/px4fmu_common/init.d-posix/airframes/4004_gz_standard_vtol

-2
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@ PX4_SIM_MODEL=${PX4_SIM_MODEL:=standard_vtol}
1313

1414
param set-default SIM_GZ_EN 1
1515

16-
param set-default SENS_EN_GPSSIM 1
17-
param set-default SENS_EN_BAROSIM 0
1816
param set-default SENS_EN_MAGSIM 1
1917
param set-default SENS_EN_ARSPDSIM 1
2018

ROMFS/px4fmu_common/init.d-posix/airframes/4006_gz_px4vision

-2
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@ PX4_SIM_MODEL=${PX4_SIM_MODEL:=px4vision}
1414

1515
param set-default SIM_GZ_EN 1
1616

17-
param set-default SENS_EN_GPSSIM 1
18-
param set-default SENS_EN_BAROSIM 0
1917
param set-default SENS_EN_MAGSIM 1
2018

2119
# Commander Parameters

ROMFS/px4fmu_common/init.d-posix/airframes/4008_gz_advanced_plane

-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ PX4_SIM_MODEL=${PX4_SIM_MODEL:=advanced_plane}
1111

1212
param set-default SIM_GZ_EN 1
1313

14-
param set-default SENS_EN_GPSSIM 1
1514
param set-default SENS_EN_MAGSIM 1
1615
param set-default SENS_EN_ARSPDSIM 1
1716

ROMFS/px4fmu_common/init.d-posix/airframes/4009_gz_r1_rover

-3
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,7 @@ param set-default PP_LOOKAHD_MAX 10
4646
param set-default PP_LOOKAHD_MIN 1
4747

4848
# Simulated sensors
49-
param set-default SENS_EN_GPSSIM 1
50-
param set-default SENS_EN_BAROSIM 0
5149
param set-default SENS_EN_MAGSIM 1
52-
param set-default SENS_EN_ARSPDSIM 0
5350

5451
# Actuator mapping
5552
param set-default SIM_GZ_WH_FUNC1 101 # right wheel

ROMFS/px4fmu_common/init.d-posix/airframes/4011_gz_lawnmower

-3
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,7 @@ PX4_SIM_MODEL=${PX4_SIM_MODEL:=lawnmower}
1212
param set-default SIM_GZ_EN 1 # Gazebo bridge
1313

1414
# Simulated sensors
15-
param set-default SENS_EN_GPSSIM 1
16-
param set-default SENS_EN_BAROSIM 0
1715
param set-default SENS_EN_MAGSIM 1
18-
param set-default SENS_EN_ARSPDSIM 0
1916
# We can arm and drive in manual mode when it slides and GPS check fails:
2017
param set-default COM_ARM_WO_GPS 1
2118

ROMFS/px4fmu_common/init.d-posix/airframes/4012_gz_rover_ackermann

-3
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,7 @@ param set-default PP_LOOKAHD_MAX 10
4545
param set-default PP_LOOKAHD_MIN 1
4646

4747
# Simulated sensors
48-
param set-default SENS_EN_GPSSIM 1
49-
param set-default SENS_EN_BAROSIM 0
5048
param set-default SENS_EN_MAGSIM 1
51-
param set-default SENS_EN_ARSPDSIM 0
5249

5350
# Wheels
5451
param set-default SIM_GZ_WH_FUNC1 101

ROMFS/px4fmu_common/init.d-posix/airframes/4015_gz_r1_rover_mecanum

-3
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,7 @@ param set-default PP_LOOKAHD_MAX 10
4545
param set-default PP_LOOKAHD_MIN 1
4646

4747
# Simulated sensors
48-
param set-default SENS_EN_GPSSIM 1
49-
param set-default SENS_EN_BAROSIM 0
5048
param set-default SENS_EN_MAGSIM 1
51-
param set-default SENS_EN_ARSPDSIM 0
5249

5350
# Actuator mapping
5451
param set-default SIM_GZ_WH_FUNC1 102 # right wheel front

ROMFS/px4fmu_common/init.d-posix/airframes/4018_gz_quadtailsitter

-4
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,7 @@ PX4_SIM_MODEL=${PX4_SIM_MODEL:=quadtailsitter}
1313

1414
param set-default SIM_GZ_EN 1 # Gazebo bridge
1515

16-
param set-default SENS_EN_GPSSIM 1
17-
param set-default SENS_EN_BAROSIM 0
1816
param set-default SENS_EN_MAGSIM 1
19-
param set-default SENS_EN_ARSPDSIM 0
20-
2117

2218
param set-default MAV_TYPE 20
2319

ROMFS/px4fmu_common/init.d-posix/airframes/4020_gz_tiltrotor

-3
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,7 @@ PX4_SIM_MODEL=${PX4_SIM_MODEL:=tiltrotor}
1313

1414
param set-default SIM_GZ_EN 1 # Gazebo bridge
1515

16-
param set-default SENS_EN_GPSSIM 1
17-
param set-default SENS_EN_BAROSIM 0
1816
param set-default SENS_EN_MAGSIM 1
19-
param set-default SENS_EN_ARSPDSIM 0
2017

2118
param set-default MAV_TYPE 21
2219

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#!/bin/sh
2+
#
3+
# @name Gazebo x500 with downward optical flow and distance sensor
4+
#
5+
# @type Quadrotor
6+
#
7+
8+
PX4_SIM_MODEL=${PX4_SIM_MODEL:=x500_flow}
9+
10+
. ${R}etc/init.d-posix/airframes/4001_gz_x500
11+
12+
echo "Disabling Sim GPS"
13+
param set-default SYS_HAS_GPS 0
14+
param set-default SIM_GPS_USED 0
15+
param set-default EKF2_GPS_CTRL 0

ROMFS/px4fmu_common/init.d-posix/airframes/71002_gz_spacecraft_2d

-2
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@ PX4_SIM_MODEL=${PX4_SIM_MODEL:=spacecraft_2d}
1515

1616
param set-default SIM_GZ_EN 1
1717

18-
param set-default SENS_EN_GPSSIM 1
19-
param set-default SENS_EN_BAROSIM 1
2018
param set-default SENS_EN_MAGSIM 1
2119
param set-default COM_ARM_CHK_ESCS 0 # We don't have ESCs
2220
param set-default FD_ESCS_EN 0 # We don't have ESCs - but maybe we need this later?

ROMFS/px4fmu_common/init.d-posix/airframes/8011_gz_omnicopter

-2
Original file line numberDiff line numberDiff line change
@@ -83,8 +83,6 @@ param set-default CA_ROTOR7_AY -0.211325
8383
param set-default CA_ROTOR7_AZ -0.57735
8484

8585
param set-default SIM_GZ_EN 1
86-
param set-default SENS_EN_GPSSIM 1
87-
param set-default SENS_EN_BAROSIM 0
8886
param set-default SENS_EN_MAGSIM 1
8987

9088
param set-default SIM_GZ_EC_FUNC1 101

ROMFS/px4fmu_common/init.d-posix/airframes/CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ px4_add_romfs_files(
9191
4018_gz_quadtailsitter
9292
4019_gz_x500_gimbal
9393
4020_gz_tiltrotor
94+
4021_gz_x500_flow
9495

9596
6011_gazebo-classic_typhoon_h480
9697
6011_gazebo-classic_typhoon_h480.post

ROMFS/px4fmu_common/init.d-posix/px4-rc.simulator

+91-28
Original file line numberDiff line numberDiff line change
@@ -73,76 +73,139 @@ elif [ "$PX4_SIMULATOR" = "gz" ] || [ "$(param show -q SIM_GZ_EN)" = "1" ]; then
7373
exit 1
7474
fi
7575

76-
# look for running ${gz_command} gazebo world
76+
# Look for an already running world
7777
gz_world=$( ${gz_command} topic -l | grep -m 1 -e "^/world/.*/clock" | sed 's/\/world\///g; s/\/clock//g' )
7878

7979
# shellcheck disable=SC2153
8080
if [ -z "${gz_world}" ] && [ -n "${PX4_GZ_WORLD}" ]; then
8181

82-
# source generated gz_env.sh for GZ_SIM_RESOURCE_PATH
82+
# Setup gz environment variables
8383
if [ -f ./gz_env.sh ]; then
8484
. ./gz_env.sh
8585

8686
elif [ -f ../gz_env.sh ]; then
8787
. ../gz_env.sh
8888
fi
8989

90-
echo "INFO [init] starting gazebo with world: ${PX4_GZ_WORLDS}/${PX4_GZ_WORLD}.sdf"
90+
echo "INFO [init] Starting gazebo with world: ${PX4_GZ_WORLDS}/${PX4_GZ_WORLD}.sdf"
9191

92-
${gz_command} ${gz_sub_command} --verbose=1 -r -s "${PX4_GZ_WORLDS}/${PX4_GZ_WORLD}.sdf" &
92+
${gz_command} ${gz_sub_command} --verbose=${GZ_VERBOSE:=1} -r -s "${PX4_GZ_WORLDS}/${PX4_GZ_WORLD}.sdf" &
9393

9494
if [ -z "${HEADLESS}" ]; then
95-
# HEADLESS not set, starting gui
96-
${gz_command} ${gz_sub_command} -g &
95+
echo "INFO [init] Starting gz gui"
96+
${gz_command} ${gz_sub_command} -g > /dev/null 2>&1 &
9797
fi
98-
9998
else
100-
# Gazebo is already running, do not start the simulator, nor the GUI
99+
# Gazebo is already running
101100
echo "INFO [init] gazebo already running world: ${gz_world}"
102101
PX4_GZ_WORLD=${gz_world}
103102
fi
103+
104104
else
105105
echo "INFO [init] Standalone PX4 launch, waiting for Gazebo"
106106
fi
107107

108-
# start gz_bridge
108+
# Start gz_bridge - either spawn a model or connect to existing one
109109
if [ -n "${PX4_SIM_MODEL#*gz_}" ] && [ -z "${PX4_GZ_MODEL_NAME}" ]; then
110-
# model specified, gz_bridge will spawn model
110+
# Spawn a model
111+
MODEL_NAME="${PX4_SIM_MODEL#*gz_}"
112+
MODEL_NAME_INSTANCE="${MODEL_NAME}_${px4_instance}"
111113

114+
POSE_ARG=""
112115
if [ -n "${PX4_GZ_MODEL_POSE}" ]; then
113-
# model pose provided: [x, y, z, roll, pitch, yaw]
116+
pos_x=$(echo "${PX4_GZ_MODEL_POSE}" | awk -F',' '{print $1}')
117+
pos_y=$(echo "${PX4_GZ_MODEL_POSE}" | awk -F',' '{print $2}')
118+
pos_z=$(echo "${PX4_GZ_MODEL_POSE}" | awk -F',' '{print $3}')
119+
pos_x=${pos_x:-0}
120+
pos_y=${pos_y:-0}
121+
pos_z=${pos_z:-0}
122+
123+
POSE_ARG=", pose: { position: { x: ${pos_x}, y: ${pos_y}, z: ${pos_z} } }"
124+
echo "INFO [init] Spawning model at position: ${pos_x} ${pos_y} ${pos_z}"
125+
fi
114126

115-
# Clean potential input line formatting.
116-
model_pose="$( echo "${PX4_GZ_MODEL_POSE}" | sed -e 's/^[ \t]*//; s/[ \t]*$//; s/,/ /g; s/ / /g; s/ /,/g' )"
117-
echo "INFO [init] PX4_GZ_MODEL_POSE set, spawning at: ${model_pose}"
127+
echo "INFO [init] Spawning model"
128+
# Spawn model
129+
${gz_command} service -s "/world/${PX4_GZ_WORLD}/create" --reqtype gz.msgs.EntityFactory \
130+
--reptype gz.msgs.Boolean --timeout 5000 \
131+
--req "sdf_filename: \"${PX4_GZ_MODELS}/${MODEL_NAME}\", name: \"${MODEL_NAME_INSTANCE}\", allow_renaming: false${POSE_ARG}" > /dev/null 2>&1
118132

119-
else
120-
# model pose not provided, origin will be used
133+
# Start gz_bridge
134+
if ! gz_bridge start -w "${PX4_GZ_WORLD}" -n "${MODEL_NAME_INSTANCE}"; then
135+
echo "ERROR [init] gz_bridge failed to start and spawn model"
136+
exit 1
137+
fi
138+
139+
# Set physics parameters for faster-than-realtime simulation if needed
140+
check_scene_info() {
141+
SERVICE_INFO=$(${gz_command} service -i --service "/world/${PX4_GZ_WORLD}/scene/info" 2>&1)
142+
if echo "$SERVICE_INFO" | grep -q "Service providers"; then
143+
return 0
144+
else
145+
return 1
146+
fi
147+
}
121148

122-
echo "WARN [init] PX4_GZ_MODEL_POSE not set, spawning at origin."
123-
model_pose="0,0,0,0,0,0"
149+
ATTEMPTS=30
150+
while [ $ATTEMPTS -gt 0 ]; do
151+
if check_scene_info; then
152+
echo "INFO [init] Gazebo world is ready"
153+
break
154+
fi
155+
ATTEMPTS=$((ATTEMPTS-1))
156+
if [ $ATTEMPTS -eq 0 ]; then
157+
echo "ERROR [init] Timed out waiting for Gazebo world"
158+
exit 1
159+
fi
160+
echo "INFO [init] Waiting for Gazebo world..."
161+
sleep 1
162+
done
163+
164+
if [ -n "${PX4_SIM_SPEED_FACTOR}" ]; then
165+
echo "INFO [init] Setting simulation speed factor: ${PX4_SIM_SPEED_FACTOR}"
166+
${gz_command} service -s "/world/${PX4_GZ_WORLD}/set_physics" --reqtype gz.msgs.Physics \
167+
--reptype gz.msgs.Boolean --timeout 5000 \
168+
--req "real_time_factor: ${PX4_SIM_SPEED_FACTOR}" > /dev/null 2>&1
124169
fi
125170

126-
# start gz bridge with pose arg.
127-
if ! gz_bridge start -p "${model_pose}" -m "${PX4_SIM_MODEL#*gz_}" -w "${PX4_GZ_WORLD}" -i "${px4_instance}"; then
128-
echo "ERROR [init] gz_bridge failed to start and spawn model"
129-
exit 1
171+
172+
# Set up camera to follow the model if requested
173+
if [ -n "${PX4_GZ_FOLLOW}" ]; then
174+
175+
# Wait for model to spawn
176+
sleep 1
177+
178+
echo "INFO [init] Setting camera to follow ${MODEL_NAME_INSTANCE}"
179+
180+
# Set camera to follow the model
181+
${gz_command} service -s "/gui/follow" --reqtype gz.msgs.StringMsg \
182+
--reptype gz.msgs.Boolean --timeout 5000 \
183+
--req "data: \"${MODEL_NAME_INSTANCE}\"" > /dev/null 2>&1
184+
185+
# Set default camera offset if not specified
186+
follow_x=${PX4_GZ_FOLLOW_OFFSET_X:--2.0}
187+
follow_y=${PX4_GZ_FOLLOW_OFFSET_Y:--2.0}
188+
follow_z=${PX4_GZ_FOLLOW_OFFSET_Z:-2.0}
189+
190+
# Set camera offset
191+
${gz_command} service -s "/gui/follow/offset" --reqtype gz.msgs.Vector3d \
192+
--reptype gz.msgs.Boolean --timeout 5000 \
193+
--req "x: ${follow_x}, y: ${follow_y}, z: ${follow_z}" > /dev/null 2>&1
194+
195+
echo "INFO [init] Camera follow offset set to ${follow_x}, ${follow_y}, ${follow_z}"
130196
fi
131197

132198
elif [ -n "${PX4_GZ_MODEL_NAME}" ]; then
133-
# model name specificed, gz_bridge will attach to existing model
134-
199+
# Connect to existing model
135200
echo "INFO [init] PX4_GZ_MODEL_NAME set, PX4 will attach to existing model"
136-
if ! gz_bridge start -n "${PX4_GZ_MODEL_NAME}" -w "${PX4_GZ_WORLD}"; then
201+
if ! gz_bridge start -w "${PX4_GZ_WORLD}" -n "${PX4_GZ_MODEL_NAME}"; then
137202
echo "ERROR [init] gz_bridge failed to start and attach to existing model"
138203
exit 1
139204
fi
140-
141205
else
142-
echo "ERROR [init] failed to pass only PX4_GZ_MODEL_NAME or PX4_SIM_MODEL"
206+
echo "ERROR [init] failed to pass either PX4_GZ_MODEL_NAME or PX4_SIM_MODEL"
143207
exit 1
144208
fi
145-
146209
# Start the sensor simulator modules
147210
if param compare -s SENS_EN_BAROSIM 1
148211
then

ROMFS/px4fmu_common/init.d/rcS

+7-4
Original file line numberDiff line numberDiff line change
@@ -488,11 +488,14 @@ else
488488
rc_input start $RC_INPUT_ARGS
489489

490490
# Manages USB interface
491-
if ! cdcacm_autostart start
491+
if param greater -s SYS_USB_AUTO -1
492492
then
493-
sercon
494-
echo "Starting MAVLink on /dev/ttyACM0"
495-
mavlink start -d /dev/ttyACM0
493+
if ! cdcacm_autostart start
494+
then
495+
sercon
496+
echo "Starting MAVLink on /dev/ttyACM0"
497+
mavlink start -d /dev/ttyACM0
498+
fi
496499
fi
497500

498501
#

boards/bitcraze/crazyflie/syslink/syslink_main.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ class Syslink
139139

140140
// nrf chip schedules battery updates with SYSLINK_SEND_PERIOD_MS
141141
static constexpr uint32_t SYSLINK_BATTERY_STATUS_INTERVAL_US = 10_ms;
142-
Battery _battery{1, nullptr, SYSLINK_BATTERY_STATUS_INTERVAL_US, battery_status_s::BATTERY_SOURCE_POWER_MODULE};
142+
Battery _battery{1, nullptr, SYSLINK_BATTERY_STATUS_INTERVAL_US, battery_status_s::SOURCE_POWER_MODULE};
143143

144144
int32_t _rssi;
145145
battery_state _bstate;

boards/px4/sitl/default.px4board

+2
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,9 @@ CONFIG_MODULES_ROVER_MECANUM=y
5050
CONFIG_MODULES_ROVER_POS_CONTROL=y
5151
CONFIG_MODULES_SENSORS=y
5252
CONFIG_COMMON_SIMULATION=y
53+
CONFIG_MODULES_SIMULATION_GZ_MSGS=y
5354
CONFIG_MODULES_SIMULATION_GZ_BRIDGE=y
55+
CONFIG_MODULES_SIMULATION_GZ_PLUGINS=y
5456
CONFIG_MODULES_SIMULATION_SENSOR_AGP_SIM=y
5557
CONFIG_MODULES_TEMPERATURE_COMPENSATION=y
5658
CONFIG_MODULES_UUV_ATT_CONTROL=y

0 commit comments

Comments
 (0)