跳至内容

带仿真场景Gazebo的多车模拟

本主题介绍如何使用以下工具模拟多个无人飞行器 仿真场景Gazebo (Gz) 和 SITL。

信息

使用 Gazebo 进行多车模拟仅支持 Linux 系统。

与其他模拟器相比,Gazebo 可以非常方便地设置多载具场景。

首先使用 PX4 SITL 生成代码:

生产 px4_sitl

然后,PX4 的每个实例都可以在自己的终端中启动,并指定一个唯一的实例编号及其所需的 环境变量:

ARGS ./build/px4_sitl_default/bin/px4 [-i <;实例e>;]
  • 实例>;:载具的实例编号。
    • 每辆车必须有一个唯一的实例编号。如果没有给出,实例编号默认为零。
    • 当与 PX4_SIM_MODEL,Gazebo 会自动选择一个唯一的模型名称,其形式为 ${PX4_SIM_MODEL}_instance.
  • ARGS:中描述的环境变量列表。 仿真场景Gazebo模拟 > 用途/配置选项.

这样可以实现更大的灵活性和定制化。

配备 ROS 2 和仿真场景Gazebo的多辆汽车

使用 ROS 2 的多辆汽车 是可能的。

  • 首先按照以下安装说明进行安装 仿真场景Gazebo.

  • 然后将系统配置为 ROS 2 / PX4 操作.

  • 在不同终端手动启动多飞行器模拟。本示例将生成 2 架 X500 四旋翼飞行器和 1 架FPX 固定翼飞行器:

    px4_sys_autostart=4001 PX4_SIM_MODEL=gz_x500 ./build/px4_sitl_default/bin/px4 -i 1
    px4_sys_autostart=4001 px4_gz_model_pose="0,1"; PX4_SIM_MODEL=gz_x500 ./build/px4_sitl_default/bin/px4 -i 2
    px4_sys_autostart=4003 px4_gz_model_pose="0,2"; PX4_SIM_MODEL=gz_rc_cessna ./build/px4_sitl_default/bin/px4 -i 3
  • 启动代理:

    MicroXRCEAgent udp4 -p 8888

    代理将自动连接所有客户端。

  • 运行 ros2 主题列表 查看主题列表,列表应该是这样的:

/parameter_events
/px4_1/fmu/in/obstacle_distance
/px4_1/fmu/in/offboard_control_mode
/px4_1/fmu/in/onboard_computer_status
/px4_1/fmu/in/sensor_optical_flow
/px4_1/fmu/in/telemetry_status
/px4_1/fmu/in/trajectory_setpoint
/px4_1/fmu/in/vehicle_attitude_setpoint
/px4_1/fmu/in/vehicle_command
/px4_1/fmu/in/vehicle_mocap_odometry
/px4_1/fmu/in/vehicle_rates_setpoint
/px4_1/fmu/in/vehicle_trajectory_bezier
/px4_1/fmu/in/vehicle_trajectory_waypoint
/px4_1/fmu/in/vehicle_visual_odometry
/px4_1/fmu/out/failsafe_flags
/px4_1/fmu/out/sensor_combined
/px4_1/fmu/out/timesync_status
/px4_1/fmu/out/vehicle_attitude
/px4_1/fmu/out/vehicle_control_mode
/px4_1/fmu/out/vehicle_global_position
/px4_1/fmu/out/vehicle_gps_position
/px4_1/fmu/out/veicle_local_position
/px4_1/fmu/out/vehicle_odometry
/px4_1/fmu/out/vehicle_status
/px4_2/fmu/in/obstacle_distance
/px4_2/fmu/in/offboard_control_mode
/px4_2/fmu/in/onboard_computer_status
/px4_2/fmu/in/sensor_optical_flow
/px4_2/fmu/in/telemetry_status
/px4_2/fmu/in/trajectory_setpoint
/px4_2/fmu/in/vehicle_attitude_setpoint
/px4_2/fmu/in/vehicle_command
/px4_2/fmu/in/vehicle_mocap_odometry
/px4_2/fmu/in/vehicle_rates_setpoint
/px4_2/fmu/in/vehicle_trajectory_bezier
/px4_2/fmu/in/vehicle_trajectory_waypoint
/px4_2/fmu/in/vehicle_visual_odometry
/px4_2/fmu/out/failsafe_flags
/px4_2/fmu/out/sensor_combined
/px4_2/fmu/out/timesync_status
/px4_2/fmu/out/vehicle_attitude
/px4_2/fmu/out/vehicle_control_mode
/px4_2/fmu/out/vehicle_global_position
/px4_2/fmu/out/vehicle_gps_position
/px4_2/fmu/out/veicle_local_position
/px4_2/fmu/out/vehicle_odometry
/px4_2/fmu/out/vehicle_status
/px4_3/fmu/in/obstacle_distance
/px4_3/fmu/in/offboard_control_mode
/px4_3/fmu/in/board_computer_status
/px4_3/fmu/in/sensor_optical_flow
/px4_3/fmu/in/telemetry_status
/px4_3/fmu/in/trajectory_setpoint
/px4_3/fmu/in/vehicle_attitude_setpoint
/px4_3/fmu/in/vehicle_command
/px4_3/fmu/in/vehicle_mocap_odometry
/px4_3/fmu/in/vehicle_rates_setpoint
/px4_3/fmu/in/vehicle_trajectory_bezier
/px4_3/fmu/in/vehicle_trajectory_waypoint
/px4_3/fmu/in/vehicle_visual_odometry
/px4_3/fmu/out/failsafe_flags
/px4_3/fmu/out/sensor_combined
/px4_3/fmu/out/timesync_status
/px4_3/fmu/out/vehicle_attitude
/px4_3/fmu/out/vehicle_control_mode
/px4_3/fmu/out/vehicle_global_position
/px4_3/fmu/out/vehicle_gps_position
/px4_3/fmu/out/veicle_local_position
/px4_3/fmu/out/vehicle_odometry
/px4_3/fmu/out/vehicle_status
/rosout