Wiki » History » Version 1
Gianluca Corsini, 2022-02-28 15:07
1 | 1 | Gianluca Corsini | h1. NMPC for Human Aerial Handover WIKI |
---|---|---|---|
2 | |||
3 | {{toc}} |
||
4 | |||
5 | h2. Foreword |
||
6 | |||
7 | In case of questions, queries, comments, or bug reports, feel free to use the @ISSUES@ system or contact the corresponding authors (contact details in the project's "@OVERVIEW@ panel":https://redmine.laas.fr/projects/nmpc-handover). |
||
8 | |||
9 | h2. Prerequisites |
||
10 | |||
11 | The framework has been written and tested using @Ubuntu 18.04@ since it is the OS used by the LAAS-CNRS robotic platform. It should work seamlessly on a recent Linux version, but there is no guarantee. |
||
12 | Some issues have been found while installing the software on @Ubuntu 16.04@ because of version incompatibility with @Protoc@ and @Protobuf@. |
||
13 | The installation on a non-Linux OS has to be handled by the user. |
||
14 | |||
15 | The installation assumes the use of a package manager (e.g. @apt@) to install some dependencies, as well as the @Gazebo@ simulator. Everything provided in this repository or by the LAAS-CNRS robotic platform aims to be installed locally in the repository folder to avoid polluting the user's system. |
||
16 | |||
17 | |||
18 | h2. I. Software Overview |
||
19 | |||
20 | h3. I.A. Openrobots |
||
21 | |||
22 | Collections of all the open-source software used at LAAS. You can find more details in "Openrobots Wiki-Homepage":https://www.openrobots.org/wiki. |
||
23 | |||
24 | h3. I.B. Robotpkg |
||
25 | |||
26 | "@Robotpkg@":http://robotpkg.openrobots.org/ is a packaging system for installing robotics software developed by the robotics community. |
||
27 | We will use @robotpkg@ to install the required modules for the simulations (state estimation, @Gazebo@ interface...) as well as third-party dependencies (@qpOases@). |
||
28 | |||
29 | h3. I.C. GenoM |
||
30 | |||
31 | @GenoM@ is a generator of modules, designed to be middleware independent, i.e. the same module can be compiled for, e.g., ROS, YARP, or Pocolibs, without any modification. |
||
32 | This allows a great code re-usability and abstracts the user from any specific choice of middleware. |
||
33 | Originally @GenoM@ has been developed tightly with @Pocolibs@, then from version 3, aka @GenoM3@, @ROS@ templates have been provided. |
||
34 | |||
35 | Another specificity of GenoM is the interaction with and between components. |
||
36 | Each component is started independently like a Linux executable (within a @roscore@, for @ROS@, or an @h2@ instance, for @Pocolibs@), then the connection between ports (or topics) is made using a supervisor, "@Genomix@":https://git.openrobots.org/projects/genomix, either with "@MATLAB@":https://git.openrobots.org/projects/matlab-genomix or "@TCL@":https://git.openrobots.org/projects/tcl-genomix. |
||
37 | |||
38 | h3. I.D. TeleKyb |
||
39 | |||
40 | The "@TeleKyb@":https://git.openrobots.org/projects/telekyb3 software platform provides the aerial-robotic oriented software developed at LAAS-CNRS. |
||
41 | In particular, we will use: |
||
42 | * @mrsim@, a Multi-Robot SIMulator. It is designed to be a transparent interface w.r.t. the real aerial vehicles used in LAAS-CNRS. It makes the transition between simulation and experiments transparent, from the software point of view. |
||
43 | * @pom@, a UKF-based state estimator merging state-feedback measurements of different sources (e.g. Motion Capture + IMU). |
||
44 | * @optitrack@, to export the motion capture data to the @genom@ software stack. |
||
45 | * @rotorcraft@, the low-level interface, with either the simulated or real platform. |
||
46 | * @nhfc@, near-hovering flight controller, used for unmodeled take-off and landing. |
||
47 | * @maneuver@, a trajectory planner, providing position and attitude (as quaternions) as well as first- and second-order derivatives. It implements waypoint-to-waypoint trajectory generation. |
||
48 | |||
49 | h3. I.E. Gazebo |
||
50 | |||
51 | To simulate the platform, we use the @Gazebo@ simulator. To interface it with the @genom@ software stack, we use two dedicated components: |
||
52 | * @mrsim-gazebo@ a plugin to interface the simulated multi-rotor with the @genom@ components (in place of @mrsim@). |
||
53 | * @optitrack-gazebo@ emulates the optitrack network interface to publish the model poses. |
||
54 | |||
55 | The installation procedure for @Gazebo@ can be found in the official documentation "Install Gazebo using Ubuntu packages -- ver. 9":http://www.gazebosim.org/tutorials?cat=install&tut=install_ubuntu&ver=9.0. |
||
56 | |||
57 | |||
58 | h2. II. Installation Procedure |
||
59 | |||
60 | This section is a tutorial on how to install the software architecture to run the simulations. |
||
61 | |||
62 | h3. II.A. Clone the Perceptive and torque-control NMPC repository |
||
63 | |||
64 | Clone the repo associated with this project. Its root will act as the @devel@ folder for the following. |
||
65 | <pre><code class="shell"> |
||
66 | git clone git://redmine.laas.fr/laas/nmpc-handover.git |
||
67 | cd ./nmpc-handover |
||
68 | </code></pre> |
||
69 | |||
70 | To simplify the installation, we provide some environment variables in the @env.sh@ file. |
||
71 | In order to run all the installed executables, we need to set up the path to the newly created folders. |
||
72 | We provide an @env.sh@ script that exports all the required variables. |
||
73 | */!\ :* the @source@ command has to be called in the repository root since it uses the @pwd@ command to export the paths. |
||
74 | <pre><code class="shell"> |
||
75 | source env.sh |
||
76 | </code></pre> |
||
77 | |||
78 | h3. II.B. Setup robotpkg |
||
79 | |||
80 | > These steps are taken from the official documentation "Install":http://robotpkg.openrobots.org/install.html. |
||
81 | |||
82 | # Clone the robotpkg latest release. |
||
83 | <pre><code class="shell"> |
||
84 | git clone git://git.openrobots.org/robots/robotpkg |
||
85 | </code></pre> |
||
86 | # Check that the @openrobots/@ folder exists in the repository root, and update the environement variables accordingly, if you haven't already sourced the @env.sh@ file. |
||
87 | <pre><code class="shell"> |
||
88 | export ROBOTPKG_BASE=`pwd`/openrobots |
||
89 | </code></pre> |
||
90 | # Install @robotpkg@. |
||
91 | <pre><code class="shell"> |
||
92 | cd robotpkg/bootstrap |
||
93 | ./bootstrap --prefix=$ROBOTPKG_BASE |
||
94 | </code></pre> |
||
95 | # Install the required components and their dependencies |
||
96 | The installation can be done 'manually' by navigating to the desired folder in @./robotpkg/@ and install with @make update@. +Anyway, we will simplify the process using a set+. |
||
97 | To do so, we need to edit the config file: @$ROBOTPKG_BASE/etc/robotpkg.conf@. Add the following at the end of the file: |
||
98 | <pre><code class="shell"> |
||
99 | PKG_OPTIONS.%-genom3 = \ |
||
100 | codels \ |
||
101 | pocolibs-server \ |
||
102 | pocolibs-client-c |
||
103 | |||
104 | PKGSET.mpcset = \ |
||
105 | architecture/genom3 \ |
||
106 | architecture/genom3-pocolibs \ |
||
107 | localization/pom-genom3 \ |
||
108 | localization/optitrack-genom3 \ |
||
109 | hardware/joystick-genom3 \ |
||
110 | motion/nhfc-genom3 \ |
||
111 | net/genomix \ |
||
112 | optimization/qpoases \ |
||
113 | path/maneuver-genom3 \ |
||
114 | simulation/mrsim-gazebo \ |
||
115 | simulation/optitrack-gazebo \ |
||
116 | supervision/matlab-genomix \ |
||
117 | supervision/tcl-genomix \ |
||
118 | robots/rotorcraft-genom3 |
||
119 | |||
120 | PREFER.lapack = robotpkg |
||
121 | PREFIX.matlab = <path/to/Matlab> |
||
122 | </code></pre> |