Wiki » History » Version 8
Martin Jacquet, 2020-10-19 20:02
1 | 1 | Martin Jacquet | h1. Perceptive and torque-control NMPC wiki |
---|---|---|---|
2 | |||
3 | 2 | Martin Jacquet | h2. I - Software Overview |
4 | 1 | Martin Jacquet | |
5 | 2 | Martin Jacquet | h3. I.1. Openrobots |
6 | 1 | Martin Jacquet | |
7 | Collections of all the open-source software used at LAAS. You can find more details in "Openrobots Wiki-Homepage":https://www.openrobots.org/wiki |
||
8 | > |
||
9 | |||
10 | 2 | Martin Jacquet | h3. I-2. Robotpkg |
11 | 1 | Martin Jacquet | |
12 | 2 | Martin Jacquet | "Robotpkg":http://robotpkg.openrobots.org/ is a packaging system for installing robotics software developed by the robotic community. |
13 | We will use robotpkg to install the required modules for the simulations (state estimation, gazebo interface...) as well as third-party dependencies (qpOases). |
||
14 | 1 | Martin Jacquet | > |
15 | |||
16 | 2 | Martin Jacquet | h3. I-3. GenoM |
17 | 1 | Martin Jacquet | |
18 | 5 | Martin Jacquet | The Generator of Modules, aka GenoM, generator of modules, designed to be middleware independant, i.e. the same module can be compiled for, e.g., ROS or Pocolibs, without any modification. |
19 | 2 | Martin Jacquet | This allows a great code re-usability and to abstract the user from any specific choice of a middleware. |
20 | 5 | Martin Jacquet | Originally GenoM has been developed tightly with Pocolibs, then from version 3, aka GenoM3, ROS templates has been provided. |
21 | 1 | Martin Jacquet | > |
22 | 2 | Martin Jacquet | Another specificity of GenoM is the interaction with and between components. |
23 | Each component is started independantly like a linux executable (within a roscore, for ROS, or a h2 intance, for Pocolibs), then the connection between ports (or topics) is made using a supervisor, "Genomix":https://git.openrobots.org/projects/genomix, either with it "Matlab":https://git.openrobots.org/projects/matlab-genomix or "TCL":https://git.openrobots.org/projects/tcl-genomix. |
||
24 | > |
||
25 | 1 | Martin Jacquet | |
26 | 2 | Martin Jacquet | h3. I-4. Pocolibs |
27 | 1 | Martin Jacquet | |
28 | 2 | Martin Jacquet | "Pocolibs":https://www.openrobots.org/wiki/pocolibs/ is a middleware, like ROS. |
29 | 6 | Martin Jacquet | It aims at being more performant 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, this leads to greater delays and loss of performances. |
30 | 1 | Martin Jacquet | > |
31 | |||
32 | 4 | Martin Jacquet | h3. I-5. TeleKyb |
33 | 2 | Martin Jacquet | |
34 | The "TeleKyb":https://git.openrobots.org/projects/telekyb3 software platform provides the aerial-robotic oriented softwares developped at LAAS-CNRS. |
||
35 | In particular, we will use: |
||
36 | * "mrsim":https://git.openrobots.org/projects/mrsim-genom3 a Multi-Robot SIMulator. It is design to be a transparent interface w.r.t. the real aerial vehicles used in LAAS-CNRS. It makes the transition between simulation and experiment transparent, from the software point of view. |
||
37 | 3 | Martin Jacquet | * "pom":https://git.openrobots.org/projects/pom-genom3 a UKF-based state estimator merging state feedback for different sources (e.g. mocap + IMU) |
38 | * "optitrack":https://git.openrobots.org/projects/optitrack-genom3 export the motion capture data to the genom software stack |
||
39 | * "rotorcraft":https://git.openrobots.org/projects/rotorcraft-genom3 low-level interface, with either the simulated or real platform |
||
40 | * "nhfc":https://git.openrobots.org/projects/nhfc-genom3 near-hovering flight controller, used for unmodeled take-off and post-failure recovery |
||
41 | * "maneuver":https://git.openrobots.org/projects/maneuver-genom3 a global trajectory planner, providing position and attitude (as quaternions) as well as first and second derivatives. It implement take-off and waypoint-to-waypoint motions. A joystick-based velocity control is implemented, but not used in this project. |
||
42 | 1 | Martin Jacquet | > |
43 | |||
44 | 4 | Martin Jacquet | h3. I-6. Gazebo |
45 | 1 | Martin Jacquet | |
46 | 4 | Martin Jacquet | To simulate the platform, we use the "Gazebo":http://gazebosim.org/ simulator. To interface it with the genom software stack, we use two dedicated components: |
47 | * "mrsim-gazebo":https://git.openrobots.org/projects/mrsim-gazebo a plugin to interface the simulated multi-rotor with the genom components (in place of mrsim) |
||
48 | * "optitrack-gazebo":https://git.openrobots.org/projects/optitrack-gazebo emulates the optitrack network interface to publish the model poses |
||
49 | > |
||
50 | 2 | Martin Jacquet | |
51 | h2. II - Installation procedure |
||
52 | 7 | Martin Jacquet | |
53 | This section is a tutorial on how to install the software architecture to run the simulations. |
||
54 | Note that everything has been tested on Ubuntu 18.04 since it is the OS used by the LAAS-CNRS robotic platform. It should work seamlessly on other OS, but there is no guarantee. |
||
55 | > |
||
56 | |||
57 | h3. II-0. Clone the Perceptive and torque-control NMPC repository |
||
58 | |||
59 | Clone the repo associated to this project. Its root will act as the devel folder for the following. |
||
60 | <pre><code class="shell"> |
||
61 | git clone git://redmine.laas.fr/laas/perceptive-torque-nmpc.git |
||
62 | cd ./perceptive-torque-nmpc/ |
||
63 | </code></pre> |
||
64 | |||
65 | h3. II-1. Setup robotpkg |
||
66 | |||
67 | (Steps taken from http://robotpkg.openrobots.org/install.html) |
||
68 | > |
||
69 | 1. Clone the robotpkg lastest release: |
||
70 | <pre><code class="shell"> |
||
71 | git clone git://git.openrobots.org/robots/robotpkg |
||
72 | </code></pre> |
||
73 | |||
74 | 2. Create an install folder called @openrobots/@, and update the environement variables accordingly, to ease the future steps: |
||
75 | <pre><code class="shell"> |
||
76 | mkdir openrobots |
||
77 | export ROBOTPKG_BASE=`pwd`/openrobots |
||
78 | export PATH=$PATH:$ROBOTPKG_BASE/bin:$ROBOTPKG_BASE/sbin |
||
79 | </code></pre> |
||
80 | |||
81 | 3. Install robotpkg |
||
82 | <pre><code class="shell"> |
||
83 | cd robotpkg/bootstrap |
||
84 | ./bootstrap --prefix=$ROBOTPKG_BASE |
||
85 | </code></pre> |
||
86 | 8 | Martin Jacquet | |
87 | 4. Install the required components and there dependencies |
||
88 | The installation can be done 'manually' by navigating to the desired folder in @./robotpkg/@ and install with @make update@; but we will simplify the process using a _set_. |
||
89 | To do so, we need to edit the config file: @$ROBOTPKG_BASE/etc/robotpkg.conf@. Add the following at the end of the file: |
||
90 | <pre><code class="shell"> |
||
91 | PKG_OPTIONS.%-genom3 = \ |
||
92 | codels \ |
||
93 | pocolibs-server \ |
||
94 | pocolibs-client-c |
||
95 | |||
96 | PKGSET.mpcset = \ |
||
97 | sysutils/arduio-genom3 \ |
||
98 | architecture/genom3 \ |
||
99 | architecture/genom3-pocolibs \ |
||
100 | net/genomix \ |
||
101 | simulation/optitrack-gazebo \ |
||
102 | robots/rotorcraft-genom3 \ |
||
103 | localization/pom-genom3 \ |
||
104 | localization/optitrack-genom3 \ |
||
105 | motion/nhfc-genom3 \ |
||
106 | path/maneuver-genom3 \ |
||
107 | optimization/qpoases \ |
||
108 | supervision/tcl-genomix \ |
||
109 | supervision/matlab-genomix \ |
||
110 | simulation/mrsim-genom3 \ |
||
111 | simulation/mrsim-gazebo \ |
||
112 | simulation/libmrsim |
||
113 | |||
114 | PKGSET.robotset = \ |
||
115 | sysutils/arduio-genom3 \ |
||
116 | architecture/genom3 \ |
||
117 | architecture/genom3-pocolibs \ |
||
118 | net/genomix \ |
||
119 | robots/rotorcraft-genom3 \ |
||
120 | localization/pom-genom3 \ |
||
121 | localization/optitrack-genom3 \ |
||
122 | motion/nhfc-genom3 \ |
||
123 | path/maneuver-genom3 |
||
124 | |||
125 | PKGSET.robotmpcset = \ |
||
126 | sysutils/arduio-genom3 \ |
||
127 | architecture/genom3 \ |
||
128 | architecture/genom3-pocolibs \ |
||
129 | net/genomix \ |
||
130 | robots/rotorcraft-genom3 \ |
||
131 | localization/pom-genom3 \ |
||
132 | localization/optitrack-genom3 \ |
||
133 | motion/nhfc-genom3 \ |
||
134 | path/maneuver-genom3 \ |
||
135 | optimization/qpoases \ |
||
136 | |||
137 | PREFER.lapack = robotpkg |
||
138 | PREFIX.matlab = <path/to/Matlab> |
||
139 | </code></pre> |