mirror of
https://github.com/paparazzi/paparazzi.git
synced 2026-05-23 04:45:37 +08:00
Set Gazebo world in flight plan (#2172)
* update documentation * include flight_plan.h in nps_fdm_gazebo.cpp
This commit is contained in:
committed by
Gautier Hattenberger
parent
3f10a79d51
commit
85c2b23c9f
+93
-68
@@ -9,75 +9,100 @@
|
||||
Usage:
|
||||
1. Make sure gazebo 7 or 8 is installed. (sudo apt-get install gazebo8 libgazebo8-dev)
|
||||
2. Prepare the Gazebo world and model:
|
||||
a) Prepare the UAV model (see conf/simulator/gazebo/models/ardrone/):
|
||||
Place the aircraft model in the conf/simulator/gazebo/models/
|
||||
folder, this folder is added to Gazebo's search path when NPS is
|
||||
launched.
|
||||
Gazebo uses a Front, Left, Up coordinate system for aircraft, so
|
||||
make sure the +x axis points forwards.
|
||||
The model should include a link for each motor with the same names
|
||||
as those listed in NPS_ACTUATOR_NAMES (see below), e.g. 'nw_motor'.
|
||||
Camera links should have the name specified in .dev_name in the
|
||||
corresponding video_config_t struct, see sw/airborne/boards/pc_sim.h
|
||||
and sw/airborne/modules/computer_vision/video_thread_nps.c.
|
||||
b) Prepare the world (see conf/simulator/gazebo/worlds/ardrone.world).
|
||||
Pay attention to the following:
|
||||
The real-time update rate should be set to zero, as this is
|
||||
already handled by Paparazzi:
|
||||
<physics type="ode">
|
||||
<max_step_size>0.001</max_step_size>
|
||||
<real_time_update_rate>0</real_time_update_rate><!-- Handled by Paparazzi! -->
|
||||
</physics>
|
||||
Spherical coordinates should be provided for navigation.
|
||||
At this moment, there is an issue where Gazebo incorrectly
|
||||
uses a WSU coordinate system instead of ENU. This can be fixed
|
||||
by setting the heading to 180 degrees as shown below:
|
||||
<spherical_coordinates>
|
||||
<surface_model>EARTH_WGS84</surface_model>
|
||||
<latitude_deg>51.9906</latitude_deg>
|
||||
<longitude_deg>4.37679</longitude_deg>
|
||||
<elevation>0</elevation>
|
||||
<heading_deg>180</heading_deg><!-- Temporary fix for issue https://bitbucket.org/osrf/gazebo/issues/2022/default-sphericalcoordinates-frame-should -->
|
||||
</spherical_coordinates>
|
||||
1. Prepare the UAV model (see conf/simulator/gazebo/models/ardrone/):
|
||||
- Place the aircraft model in the conf/simulator/gazebo/models/
|
||||
folder, this folder is added to Gazebo's search path when NPS is
|
||||
launched.
|
||||
- Gazebo uses a Front, Left, Up coordinate system for aircraft, so
|
||||
make sure the +x axis points forwards.
|
||||
- The model should include a link for each motor with the same names
|
||||
as those listed in NPS_ACTUATOR_NAMES (see below), e.g. 'nw_motor'.
|
||||
- Camera links should have the name specified in .dev_name in the
|
||||
corresponding video_config_t struct, see sw/airborne/boards/pc_sim.h
|
||||
and sw/airborne/modules/computer_vision/video_thread_nps.c.
|
||||
2. Prepare the world (see conf/simulator/gazebo/worlds/ardrone.world).
|
||||
Pay attention to the following:
|
||||
- The real-time update rate should be set to zero, as this is
|
||||
already handled by Paparazzi:
|
||||
@code{.xml}
|
||||
<physics type="ode">
|
||||
<max_step_size>0.001</max_step_size>
|
||||
<real_time_update_rate>0</real_time_update_rate><!-- Handled by Paparazzi! -->
|
||||
</physics>
|
||||
@endcode
|
||||
- Spherical coordinates should be provided for navigation.
|
||||
At this moment, there is an issue where Gazebo incorrectly
|
||||
uses a WSU coordinate system instead of ENU. This can be fixed
|
||||
by setting the heading to 180 degrees as shown below:
|
||||
@code{.xml}
|
||||
<spherical_coordinates>
|
||||
<surface_model>EARTH_WGS84</surface_model>
|
||||
<latitude_deg>51.9906</latitude_deg>
|
||||
<longitude_deg>4.37679</longitude_deg>
|
||||
<elevation>0</elevation>
|
||||
<heading_deg>180</heading_deg><!-- Temporary fix for issue https://bitbucket.org/osrf/gazebo/issues/2022/default-sphericalcoordinates-frame-should -->
|
||||
</spherical_coordinates>
|
||||
@endcode
|
||||
3. Prepare the airframe file (see examples/ardrone2_gazebo.xml):
|
||||
a) Select Gazebo as the FDM (Flight Dynamics Model)
|
||||
<target name="nps" board="pc">
|
||||
<module name="fdm" type="gazebo"/>
|
||||
</target>
|
||||
b) Add actuator thrusts and torques to the SIMULATOR section:
|
||||
<section name="SIMULATOR" prefix="NPS_">
|
||||
<define name="ACTUATOR_NAMES" value="nw_motor, ne_motor, se_motor, sw_motor" type="string[]"/>
|
||||
<define name="ACTUATOR_THRUSTS" value="1.55, 1.55, 1.55, 1.55" type="float[]"/>
|
||||
<define name="ACTUATOR_TORQUES" value="0.155, -0.155, 0.155, -0.155" type="float[]"/>
|
||||
...
|
||||
<section>
|
||||
The thrusts and torques are expressed in SI units (N, Nm) and should
|
||||
be in the same order as the ACTUATOR_NAMES.
|
||||
c) In the same section, bypass the AHRS and INS as these are not
|
||||
supported yet:
|
||||
<section name="SIMULATOR" prefix="NPS_">
|
||||
...
|
||||
<define name="BYPASS_AHRS" value="1"/>
|
||||
<define name="BYPASS_INS" value="1"/>
|
||||
...
|
||||
<section>
|
||||
d) If required, enable video thread simulation:
|
||||
<section name="SIMULATOR" prefix="NPS_">
|
||||
...
|
||||
<define name="SIMULATE_VIDEO" value="1"/>
|
||||
...
|
||||
<section>
|
||||
e) If required, specify the Gazebo world and aircraft name:
|
||||
<section name="SIMULATOR" prefix="NPS_">
|
||||
...
|
||||
<define name="GAZEBO_WORLD" value="my_world.world"/>
|
||||
<define name="GAZEBO_AC_NAME" value="my_uav"/>
|
||||
<section>
|
||||
4. Make sure all included modules work with nps. At the moment, most of
|
||||
the modules that depend on video_thread are only built when ap is
|
||||
selected as the target. As a quick fix, try to remove the target
|
||||
attribute from the makefile element in the module xml, e.g.:
|
||||
<makefile target="ap"> ---> <makefile>
|
||||
1. Select Gazebo as the FDM (Flight Dynamics Model)
|
||||
@code{.xml}
|
||||
<target name="nps" board="pc">
|
||||
<module name="fdm" type="gazebo"/>
|
||||
</target>
|
||||
@endcode
|
||||
2. Add actuator thrusts and torques to the SIMULATOR section:
|
||||
@code{.xml}
|
||||
<section name="SIMULATOR" prefix="NPS_">
|
||||
<define name="ACTUATOR_NAMES" value="nw_motor, ne_motor, se_motor, sw_motor" type="string[]"/>
|
||||
<define name="ACTUATOR_THRUSTS" value="1.55, 1.55, 1.55, 1.55" type="float[]"/>
|
||||
<define name="ACTUATOR_TORQUES" value="0.155, -0.155, 0.155, -0.155" type="float[]"/>
|
||||
...
|
||||
<section>
|
||||
@endcode
|
||||
The thrusts and torques are expressed in SI units (N, Nm) and should
|
||||
be in the same order as the ACTUATOR_NAMES.
|
||||
3. In the same section, bypass the AHRS and INS as these are not
|
||||
supported yet:
|
||||
@code{.xml}
|
||||
<section name="SIMULATOR" prefix="NPS_">
|
||||
...
|
||||
<define name="BYPASS_AHRS" value="1"/>
|
||||
<define name="BYPASS_INS" value="1"/>
|
||||
...
|
||||
</section>
|
||||
@endcode
|
||||
4. If required, enable video thread simulation:
|
||||
@code{.xml}
|
||||
<section name="SIMULATOR" prefix="NPS_">
|
||||
...
|
||||
<define name="SIMULATE_VIDEO" value="1"/>
|
||||
...
|
||||
</section>
|
||||
@endcode
|
||||
5. If required, set the aircraft model in the airframe file:
|
||||
@code{.xml}
|
||||
<section name="SIMULATOR" prefix="NPS_">
|
||||
...
|
||||
<define name="GAZEBO_AC_NAME" value="my_uav"/>
|
||||
</section>
|
||||
@endcode
|
||||
6. Make sure all included modules work with nps. At the moment, most of
|
||||
the modules that depend on video_thread are only built when ap is
|
||||
selected as the target. To fix this, add nps to the target attribute
|
||||
in the module xml, e.g.:
|
||||
@code{.xml}
|
||||
<makefile target="ap|nps">
|
||||
@endcode
|
||||
4. If required, set the simulation environment in the flight plan file:
|
||||
@code{.xml}
|
||||
<flight_plan ...>
|
||||
<header>
|
||||
...
|
||||
#define NPS_GAZEBO_WORLD "my.world"
|
||||
</header>
|
||||
...
|
||||
<flight_plan>
|
||||
@endcode
|
||||
</description>
|
||||
</doc>
|
||||
<header/>
|
||||
|
||||
@@ -51,6 +51,7 @@ extern "C" {
|
||||
#include "nps_autopilot.h"
|
||||
|
||||
#include "generated/airframe.h"
|
||||
#include "generated/flight_plan.h"
|
||||
#include "autopilot.h"
|
||||
|
||||
#include "math/pprz_isa.h"
|
||||
|
||||
Reference in New Issue
Block a user