本章内容:使用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_mid360、sunray300_with_cam<arg name="world" default="$(find sunray_simulator)/worlds/sunray_empty_world.world"/>
world参数用来指定gazebo中的仿真环境,在Sunray/Simulation/sunray_simulator/worlds
中定义了多个gazebo环境可进行跟换,如:bookstore.world、outdoor.world、football_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"/>
用来指定无人机的初始偏航角 <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>