菜单

无人机仿真模块

下载

本章内容:使用Sunray中的仿真模块进行PX4仿真
使用前提:PX4仿真环境,可参考仿真平台搭建

编译功能包

复制代码
cd Sunray
# 编译sunray_simulator模块
catkin_make --source Simulation/sunray_simulator --build build/sunray_simulator

添加环境变量

复制代码
## 写入环境变量
source ~/.Sunray/devel/setup.bash
export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:~/Sunray/Simulation/sunray_simulator/models
export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:~/Sunray/Simulation/sunray_simulator/models/scence_models
export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:~/Sunray/Simulation/sunray_simulator/models/sensor_models
export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:~/Sunray/Simulation/sunray_simulator/models/drone_models
export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:~/Sunray/Simulation/sunray_simulator/models/aws_models
export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:~/Sunray/Simulation/sunray_simulator/models/ugv_models
export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:~/Sunray/Simulation/sunray_simulator/texture
export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:~/Sunray/Simulation/sunray_simulator/worlds

相关说明

在使用前需要了解Sunray仿真模块中的几个文件夹

  • Sunray/Simulation/sunray_simulator/launch_basic:该文件夹下存储着无人机/车启动底层逻辑的launch文件
  • Sunray/Simulation/sunray_simulator/models:该文件夹下存放着Sunray系列无人机/车相关的仿真模型以及其他传感器和环境相关的仿真模型
  • Sunray/Simulation/sunray_simulator/worlds:该模式将响应外部发送的控制指令(通过话题发布)
  • Sunray/Simulation/sunray_simulator/testure:该文件夹下存放着.world中展示的贴图文件
  • Sunray/Simulation/sunray_simulator/launch_ego:该文件夹下存放着ego相关的launch文件
  • Sunray/Simulation/sunray_simulator/launch_fuel:该文件夹下存放着fuel相关的launch文件
  • Sunray/Simulation/sunray_simulator/launch_rviz:该文件夹下存放着rviz相关的launch文件
  • Sunray/Simulation/sunray_simulator/launch_slam:该文件夹下存放着slam相关的launch文件
  • Sunray/Simulation/sunray_simulator/launch_test:该文件夹下存放着测试相关的launch文件
  • Sunray/Simulation/sunray_simulator/launch_uav_demo:该文件夹下存放着不同状态的无人机在不同仿真世界的launch文件
  • Sunray/Simulation/sunray_simulator/launch_ugv_demo:该文件夹下存放着不同状态的无人车在仿真世界的launch文件

启动无人机仿真

  • 启动一台无人机仿真
复制代码
# 启动px4仿真加载模型
roslaunch sunray_simulator sunray_sim_1uav.launch
/
  • 启动三台无人机仿真
复制代码
# 启动px4仿真加载模型
roslaunch sunray_simulator sunray_sim_3uav.launch
/
  • 启动其他仿真世界
复制代码
# 启动px4仿真加载模型
roslaunch sunray_simulator sunray_sim_football_field.launch
/

启动无人车仿真

  • 启动一台无人车仿真
复制代码
# 启动仿真加载ugv模型
roslaunch sunray_simulator sunray_sim_1ugv.launch
/
  • 启动三台无人车仿真
复制代码
# 启动仿真加载ugv模型
roslaunch sunray_simulator sunray_sim_3ugv.launch
/

仿真启动文件说明

  • 更换无人机机型: <arg name="vehicle" default="sunray150"/> vehicle参数用来指定仿真的模型,Sunray/Simulation/sunray_simulator/models文件夹下定义了多款无人机和不同的传感器的搭配的机型,如:sunray150_with_mid360sunray300_with_cam
  • 更换仿真世界地图:<arg name="world" default="$(find sunray_simulator)/worlds/sunray_empty_world.world"/> world参数用来指定gazebo中的仿真环境,在Sunray/Simulation/sunray_simulator/worlds中定义了多个gazebo环境可进行跟换,如:bookstore.worldoutdoor.worldfootball_field.world
  • 更改无人机初始位置: <arg name="uav_init_x" default="0.0"/> <arg name="uav_init_y" default="0.0"/>用来指定无人机的初始位置,还可以包括Z值, <arg name="uav_init_yaw" default="0.0"/>用来指定无人机的初始偏航角
  • Gazebo 配置: <arg name="gazebo_enable" default="true"/> <arg name="gui" default="true"/>gazebo_enable参数决定是否启用 Gazebo 仿真环境(默认启用),gui参数决定是否显示 Gazebo 图形界面(默认显示)
复制代码
<?xml version="1.0"?>
<launch>
	<!-- Gazebo 配置 -->
    <arg name="gazebo_enable" default="true"/>
    <arg name="gui" default="true"/>
    <arg name="world" default="$(find sunray_simulator)/worlds/sunray_empty_world.world"/>
    <!-- 启动 Gazebo -->
    <group if="$(arg gazebo_enable)">
        <include file="$(find gazebo_ros)/launch/empty_world.launch">
            <arg name="world_name" value="$(arg world)"/>
            <arg name="gui" value="$(arg gui)"/>
			<arg name="use_sim_time" value="false"/>
        </include>
    </group>

    <!-- 无人机配置 -->
    <!-- 无人机模型名称 -->
    <arg name="vehicle" default="sunray150"/>
    <!--无人机编号-->
    <arg name="uav_id" default="1"/>
    <!-- 无人机初始位置 -->
    <arg name="uav_init_x" default="0.0"/>
    <arg name="uav_init_y" default="0.0"/>
    <arg name="uav_init_yaw" default="0.0"/>

    <!-- UAV1 -->
    <include file="$(find sunray_simulator)/launch_basic/sunray_px4_basic.launch">
        <arg name="uav_id" value="$(arg uav_id)" />
        <arg name="vehicle" value="$(arg vehicle)" />
        <arg name="uav_init_x" value="$(arg uav_init_x)"/>
        <arg name="uav_init_y" value="$(arg uav_init_y)"/>
        <arg name="uav_init_yaw" value="$(arg uav_init_yaw)"/>
    </include>
</launch>
上一个
无人机控制模块
下一个
教程与演示模块
最近修改: 2025-06-16