Wiki » History » Version 3
Gianluca Corsini, 2022-02-28 15:22
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 | 2 | Gianluca Corsini | h3. I.D. Pocolibs |
39 | 1 | Gianluca Corsini | |
40 | 2 | Gianluca Corsini | @Pocolibs@ is a middleware, like @ROS@. |
41 | It aims at being lighter and faster than ROS, when running on a single machine, thanks to the exploitation of shared memory. @ROS@, on the other hand, uses a network layer for sending messages between nodes, which leads to greater delays and loss of performance. |
||
42 | |||
43 | h3. I.E. TeleKyb |
||
44 | |||
45 | 1 | Gianluca Corsini | The "@TeleKyb@":https://git.openrobots.org/projects/telekyb3 software platform provides the aerial-robotic oriented software developed at LAAS-CNRS. |
46 | In particular, we will use: |
||
47 | 2 | Gianluca Corsini | * @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 seamless, from the software point of view. |
48 | 1 | Gianluca Corsini | * @pom@, a UKF-based state estimator merging state-feedback measurements of different sources (e.g. Motion Capture + IMU). |
49 | * @optitrack@, to export the motion capture data to the @genom@ software stack. |
||
50 | * @rotorcraft@, the low-level interface, with either the simulated or real platform. |
||
51 | * @nhfc@, near-hovering flight controller, used for unmodeled take-off and landing. |
||
52 | * @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. |
||
53 | |||
54 | 2 | Gianluca Corsini | h3. I.F. Gazebo |
55 | 1 | Gianluca Corsini | |
56 | To simulate the platform, we use the @Gazebo@ simulator. To interface it with the @genom@ software stack, we use two dedicated components: |
||
57 | * @mrsim-gazebo@ a plugin to interface the simulated multi-rotor with the @genom@ components (in place of @mrsim@). |
||
58 | * @optitrack-gazebo@ emulates the optitrack network interface to publish the model poses. |
||
59 | |||
60 | 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. |
||
61 | |||
62 | |||
63 | h2. II. Installation Procedure |
||
64 | |||
65 | This section is a tutorial on how to install the software architecture to run the simulations. |
||
66 | |||
67 | h3. II.A. Clone the Perceptive and torque-control NMPC repository |
||
68 | |||
69 | Clone the repo associated with this project. Its root will act as the @devel@ folder for the following. |
||
70 | <pre><code class="shell"> |
||
71 | git clone git://redmine.laas.fr/laas/nmpc-handover.git |
||
72 | cd ./nmpc-handover |
||
73 | </code></pre> |
||
74 | |||
75 | To simplify the installation, we provide some environment variables in the @env.sh@ file. |
||
76 | In order to run all the installed executables, we need to set up the path to the newly created folders. |
||
77 | We provide an @env.sh@ script that exports all the required variables. |
||
78 | 2 | Gianluca Corsini | */!\ :* the @source@ command has to be called within this repository's root since it uses the @pwd@ command to export the paths. |
79 | 1 | Gianluca Corsini | <pre><code class="shell"> |
80 | source env.sh |
||
81 | </code></pre> |
||
82 | |||
83 | h3. II.B. Setup robotpkg |
||
84 | |||
85 | > These steps are taken from the official documentation "Install":http://robotpkg.openrobots.org/install.html. |
||
86 | |||
87 | # Clone the robotpkg latest release. |
||
88 | <pre><code class="shell"> |
||
89 | git clone git://git.openrobots.org/robots/robotpkg |
||
90 | </code></pre> |
||
91 | # 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. |
||
92 | <pre><code class="shell"> |
||
93 | export ROBOTPKG_BASE=`pwd`/openrobots |
||
94 | </code></pre> |
||
95 | # Install @robotpkg@. |
||
96 | <pre><code class="shell"> |
||
97 | cd robotpkg/bootstrap |
||
98 | ./bootstrap --prefix=$ROBOTPKG_BASE |
||
99 | </code></pre> |
||
100 | # Install the required components and their dependencies |
||
101 | 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+. |
||
102 | 2 | Gianluca Corsini | To do so, we need to edit the config file: @$ROBOTPKG_BASE/etc/robotpkg.conf@. Add the following lines at the end of the file: |
103 | 1 | Gianluca Corsini | <pre><code class="shell"> |
104 | PKG_OPTIONS.%-genom3 = \ |
||
105 | codels \ |
||
106 | pocolibs-server \ |
||
107 | pocolibs-client-c |
||
108 | |||
109 | PKGSET.mpcset = \ |
||
110 | architecture/genom3 \ |
||
111 | architecture/genom3-pocolibs \ |
||
112 | localization/pom-genom3 \ |
||
113 | localization/optitrack-genom3 \ |
||
114 | hardware/joystick-genom3 \ |
||
115 | motion/nhfc-genom3 \ |
||
116 | net/genomix \ |
||
117 | optimization/qpoases \ |
||
118 | path/maneuver-genom3 \ |
||
119 | simulation/mrsim-gazebo \ |
||
120 | simulation/optitrack-gazebo \ |
||
121 | supervision/matlab-genomix \ |
||
122 | supervision/tcl-genomix \ |
||
123 | robots/rotorcraft-genom3 |
||
124 | |||
125 | PREFER.lapack = robotpkg |
||
126 | 2 | Gianluca Corsini | PREFIX.matlab = <path/to/MATLAB> |
127 | 1 | Gianluca Corsini | </code></pre> |
128 | 2 | Gianluca Corsini | |
129 | The last line (<path/to/MATLAB>) needs to point to the @MATLAB@ root folder in the system (e.g. @/opt/Matlab@). |
||
130 | 3 | Gianluca Corsini | It is recommended to use @MATLAB@ for the proposed simulations since the syntax is more intuitive and comprehensible for an end-user who will modify them. |
131 | If @MATLAB@ is not installed on the system, please install it, since the provided interface to the @GenoM@ components is provided only in @MATLAB@. |
||
132 | Also, all the above is meant for using Pocolibs, not @ROS@. Future versions of this tutorial might come to use the @ROS@ install. |
||
133 | 1 | Gianluca Corsini | |
134 | 3 | Gianluca Corsini | Now return to the @robotpkg@ folder and install the custom set by typing: |
135 | <pre><code class="shell"> |
||
136 | cd robotpkg |
||
137 | make update-mpcset |
||
138 | </code></pre> |