A complete drone Gazebo simulation with GenoM3 components, Fiacre, TINA, Hippo models.
290
The most updated version of this README is available here: https://redmine.laas.fr/projects/hippodrone/gollum/index
This container contains a complete simulation and control of a drone flying around. The drone is controlled with 5 GenoM3 components identical to the ones used on the real drones (nhfc, maneuver, pom, rotorcraft, optitrack). The simulation is done in Gazebo, with a plugin simulating the effects of the propellers velocity and resulting forces on the quadcopter.The simulation also provides mocaps and IMU data as to feed the GenoM3 components which localize the drone.
You need to have docker installed ;-)... but also gzclient (the gazebo client) as we run the Gazebo display on the host (version 9 or 11 seems to works fine).
You need to open two terminals.
Terminal 1:
Enlarge the terminal as it will be split in 6 subpanes.
docker run -it --rm --name hippodrone felixfi/hippodrone:bionic
At the docker prompt type:
./start-simu-docker.sh
This will open a tmux multipane window containing the 5 GenoM3 components and an eltclsh window.
Terminal 2: Set two environment variables:
export GAZEBO_MASTER_IP=$(docker inspect --format '{{ .NetworkSettings.IPAddress }}' hippodrone)
hippodrone is the name of the running container you launched in terminal 1
export GAZEBO_MASTER_URI=$GAZEBO_MASTER_IP:11345
then launch the gazebo client:
gzclient --verbose
The Gazebo window should show up with a quadcopter idle in the middle of the environment.
Back in Terminal 1
At the eltclsh > prompt in the bottom left pane type the three commands:
source start.tcl
init
setup
At this point the drone should start spinning its propellers and hoover a few centimeters above ground. Type:
fly_around
and it will fly to random positions in a 10x10x10 meter cube. When you have enough, you can break the fly_around with Ctrl-c and type land to get the drone to land. Then, kill the experiment with kill-all and exit the eltclsh pane/window with Ctrl-d.
This version runs the same experiment, except that instead of the 5 GenoM3 modules flying the drone, we now use their formal model in Fiacre with the Hippo engine.
After starting the docker as above, use the script ./start-simu-hippo-docker.sh instead of ./start-simu-docker.sh .
The setup is different, the top pane is the gzserver one, the middle pane is the hippo traces one, and the bottom pane is the eltclsh one.
The rest of the demo is the same.
Note in the Hippo window the messages you get due to temporal constraints being violated... This may vary a lot according to the CPU you have.
This experiment runs exactly the same on the real drones at LAAS in our flying arena.
The drone experiments: https://redmine.laas.fr/projects/drone-v-v/gollum/index
GenoM3: https://git.openrobots.org/projects/genom3
Fiacre: http://projects.laas.fr/fiacre/
Tina: http://projects.laas.fr/tina/
Hippo: http://projects.laas.fr/hippo/
A paper describing a similar experiment with an outdoor wheeled robot: https://hal.laas.fr/hal-03017661v4
Content type
Image
Digest
Size
629.9 MB
Last updated
almost 5 years ago
docker pull felixfi/hippodrone