mirror of
https://github.com/PX4/PX4-Autopilot.git
synced 2026-05-27 02:06:27 +08:00
Add support for specifying spawn location in Gazebo multi sim
This commit adds support for specifying the spawn location of vehicles in the Gazebo multi-vehicle simulator script (frame:number:x:y). Behavior when x and y are not specified remains the same as before.
This commit is contained in:
@@ -15,6 +15,10 @@ function cleanup() {
|
|||||||
function spawn_model() {
|
function spawn_model() {
|
||||||
MODEL=$1
|
MODEL=$1
|
||||||
N=$2 #Instance Number
|
N=$2 #Instance Number
|
||||||
|
X=$3
|
||||||
|
Y=$4
|
||||||
|
X=${X:=0.0}
|
||||||
|
Y=${Y:=$((3*${N}))}
|
||||||
|
|
||||||
SUPPORTED_MODELS=("iris" "iris_rtps" "plane" "standard_vtol" "rover" "r1_rover" "typhoon_h480")
|
SUPPORTED_MODELS=("iris" "iris_rtps" "plane" "standard_vtol" "rover" "r1_rover" "typhoon_h480")
|
||||||
if [[ " ${SUPPORTED_MODELS[*]} " != *"$MODEL"* ]];
|
if [[ " ${SUPPORTED_MODELS[*]} " != *"$MODEL"* ]];
|
||||||
@@ -33,9 +37,9 @@ function spawn_model() {
|
|||||||
../bin/px4 -i $N -d "$build_path/etc" -w sitl_${MODEL}_${N} -s etc/init.d-posix/rcS >out.log 2>err.log &
|
../bin/px4 -i $N -d "$build_path/etc" -w sitl_${MODEL}_${N} -s etc/init.d-posix/rcS >out.log 2>err.log &
|
||||||
python3 ${src_path}/Tools/sitl_gazebo/scripts/jinja_gen.py ${src_path}/Tools/sitl_gazebo/models/${MODEL}/${MODEL}.sdf.jinja ${src_path}/Tools/sitl_gazebo --mavlink_tcp_port $((4560+${N})) --mavlink_udp_port $((14560+${N})) --mavlink_id $((1+${N})) --gst_udp_port $((5600+${N})) --video_uri $((5600+${N})) --mavlink_cam_udp_port $((14530+${N})) --output-file /tmp/${MODEL}_${N}.sdf
|
python3 ${src_path}/Tools/sitl_gazebo/scripts/jinja_gen.py ${src_path}/Tools/sitl_gazebo/models/${MODEL}/${MODEL}.sdf.jinja ${src_path}/Tools/sitl_gazebo --mavlink_tcp_port $((4560+${N})) --mavlink_udp_port $((14560+${N})) --mavlink_id $((1+${N})) --gst_udp_port $((5600+${N})) --video_uri $((5600+${N})) --mavlink_cam_udp_port $((14530+${N})) --output-file /tmp/${MODEL}_${N}.sdf
|
||||||
|
|
||||||
echo "Spawning ${MODEL}_${N}"
|
echo "Spawning ${MODEL}_${N} at ${X} ${Y}"
|
||||||
|
|
||||||
gz model --spawn-file=/tmp/${MODEL}_${N}.sdf --model-name=${MODEL}_${N} -x 0.0 -y $((3*${N})) -z 0.0
|
gz model --spawn-file=/tmp/${MODEL}_${N}.sdf --model-name=${MODEL}_${N} -x ${X} -y ${Y} -z 0.0
|
||||||
|
|
||||||
popd &>/dev/null
|
popd &>/dev/null
|
||||||
|
|
||||||
@@ -102,8 +106,10 @@ else
|
|||||||
IFS=,
|
IFS=,
|
||||||
for target in ${SCRIPT}; do
|
for target in ${SCRIPT}; do
|
||||||
target="$(echo "$target" | tr -d ' ')" #Remove spaces
|
target="$(echo "$target" | tr -d ' ')" #Remove spaces
|
||||||
target_vehicle="${target%:*}"
|
target_vehicle=$(echo $target | cut -f1 -d:)
|
||||||
target_number="${target#*:}"
|
target_number=$(echo $target | cut -f2 -d:)
|
||||||
|
target_x=$(echo $target | cut -f3 -d:)
|
||||||
|
target_y=$(echo $target | cut -f4 -d:)
|
||||||
|
|
||||||
if [ $n -gt 255 ]
|
if [ $n -gt 255 ]
|
||||||
then
|
then
|
||||||
@@ -113,7 +119,7 @@ else
|
|||||||
|
|
||||||
m=0
|
m=0
|
||||||
while [ $m -lt ${target_number} ]; do
|
while [ $m -lt ${target_number} ]; do
|
||||||
spawn_model ${target_vehicle} $n
|
spawn_model ${target_vehicle} $n $target_x $target_y
|
||||||
m=$(($m + 1))
|
m=$(($m + 1))
|
||||||
n=$(($n + 1))
|
n=$(($n + 1))
|
||||||
done
|
done
|
||||||
|
|||||||
Reference in New Issue
Block a user