Actions
Installing simulation environment » History » Revision 37
« Previous |
Revision 37/49
(diff)
| Next »
Christophe Reymann, 2018-05-19 16:55
Installing simulation environment¶
Dependencies¶
- Python3 with setuptools, docopt, numpy, pyaml, rospkg, catkin_pkg
- Eigen3
- GDAL (version > 2)
- CMake
- OpenCV3
- libglew, libglew-dev
- ROS kinetic (on ubuntu: ros-kinetic-desktop ros-kinetic-tf2-eigen OR ros-kinetic-ros-base ros-kinetic-tf2-eigen ros-kinetic-opencv3 ros-kinetic-cv-bridge ros-kinetic-tf2-ros)
- Blender
- A c++14 compatible compiler
On own computer¶
Make sure ROS environment is sourced, then:
git clone ssh://git@redmine.laas.fr/laas/users/simon/agridrone/precidrones-main.git && cd precidrones-main/dev && rsync -r /net/skyscanner/volume1/data/precidrone/IGN . && make world
And make sure to import the morse simulations before using them, for example (in the precidrones-main/dev folder):
morse import morse/preci1
On LXD vm¶
Install and configure lxd:sudo snap install --edge lxd sudo lxd init
Lxd will ask for configuration, I used:
- clustering: no
- new storage pool: yes
- name: default
- type: zfs
- create new zfs pool: yes
- use existing block device: no
- size in GB of the new loop device: 40
- connect to a MAAS server: no
- create local network bridge: yes
- bridge name: lxdbr0
- ipv4 address: auto
- ipv6 address: auto
- LXD availqble over the network: yes
- address to bind lxd to: all
- port: 8443
- trust password: <password>
- auto update stale cached images: yes
- print YAML lxd preseed: yes
Creating the container:
sudo lxc launch ubuntu:16.04 precidrone-sim
Install nvidia container runtime (see github ):
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) curl -s -L https://nvidia.github.io/nvidia-container-runtime/$distribution/nvidia-container-runtime.list | sudo tee /etc/apt/sources.list.d/nvidia-container-runtime.list sudo apt install nvidia-container-runtime
Configuring the container (check display number and adjust, eg X0 -> X1 for DISPLAY=:1; idem for nvidia-libs version number):
sudo lxc config device add precidrone-sim nvgpu gpu sudo lxc config set precidrone-sim nvidia.runtime true sudo lxc config device add precidrone-sim nvidia-libs disk path=/usr/lib/nvidia-384 source=/usr/lib/nvidia-384 sudo lxc config device add precidrone-sim X0 disk path=/tmp/.X11-unix/X0 source=/tmp/.X11-unix/X0 sudo lxc config device add precidrone-sim Xauthority disk path=/home/ubuntu/.Xauthority source=${HOME}/.Xauthority sudo lxc config device add precidrone-sim precidrone-simroot disk source=/net/skyscanner/volume1/data/precidrone path=/home/ubuntu/sim printf "uid $(id -u) 1000\ngid $(id -g) 1000" | sudo lxc config set precidrone-sim raw.idmap - sudo lxc restart precidrone-sim
Then open shell in the container:
sudo lxc exec precidrone-sim -- sudo -i -u ubuntu
Installing dependencies:
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116 sudo apt update sudo apt install ros-kinetic-ros-base ros-kinetic-tf2-eigen ros-kinetic-opencv3 ros-kinetic-cv-bridge ros-kinetic-tf2-ros sudo apt install python3-pip python3-setuptools python3-docopt python3-numpy python3-yaml sudo pip3 install rospkg catkin_pkg sudo apt install libglew1.13 libglew-dev sudo apt install blender
A GDAL >2 doesn't ship with ubuntu 16.04, you can do
sudo add-apt-repository -y ppa:ubuntugis/ppa sudo apt update sudo apt install libgdal20 libgdal-dev
If necessary compile sim source:
cd sim/precidrones-main/dev make DEVEL=t INSTALL_USER=t CMAKE_BUILD_TYPE=Release -j8Before running the simulation:
- Import morse simulation scenario, for example:
morse import sim/precidrones-main/dev/morse/preci1
- Export display variable (check that it is the right one!) and source ros global and workspace setup (you can put it in the .bashrc or .profile):
export DISPLAY=:0 source /opt/ros/kinetic/setup.bash source /home/ubuntu/sim/precidrones-main/dev/ros_workspace/devel/setup.bash
Only one container has to be setup, then it can simply be copied across machines:
TODO
Updated by Christophe Reymann over 6 years ago · 49 revisions