-
Notifications
You must be signed in to change notification settings - Fork 2
/
QualisysManual.tex
288 lines (215 loc) · 10.1 KB
/
QualisysManual.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
\documentclass[12pt,a4paper,twoside]{report}
\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage{amsmath,amssymb}
\usepackage{graphicx}
\usepackage{gensymb}
%\usepackage[hmarginratio=1:1]{geometry} %To get even margins on left and right with twoside doc
\usepackage[colorinlistoftodos]{todonotes}
%\usepackage{fullpage} %Kan ikke brukes med pagestyle(fancy)
\usepackage[numbers,round]{natbib}
\usepackage{color}
\usepackage{float}
\usepackage{caption}
\usepackage{subcaption}
\usepackage{booktabs}
\usepackage{natbib}
\usepackage[hidelinks]{hyperref}
%\usepackage{afterpage}
\usepackage{epstopdf}
%\usepackage{listing} %For å liste opp kodebiter i teksten
%\usepackage[parfill]{parskip}
\usepackage{parskip}
\usepackage[super,negative]{nth} %for å få engelske ordenstall
\usepackage[titletoc,title]{appendix}
\usepackage{fancyhdr} %For header med kapittelnummer
\usepackage{fixltx2e} %For å bruke textsubscript
\usepackage{enumitem} %For å ta bort bulletpoints i itemize nomeclature
\usepackage{tabulary} %for å få tabeller med flere linjer
\usepackage{long table} %For tabell over flere sider (Nomenclature)
\usepackage{setspace}
\usepackage{url}
%\linespread{1.3}
\usepackage{listings}
\usepackage{booktabs,array,rotating}
\newcommand{\splitcell}[1]{%
\begin{tabular}{@{}l@{}}#1\end{tabular}%
}
\definecolor{MyRed}{rgb}{0.8,0.0,0.0}
\definecolor{MyDarkRed}{rgb}{0.6,0.0,0.0}
\definecolor{MyDarkerRed}{rgb}{0.3,0.0,0.0}
\usepackage{xcolor,listings}
\definecolor{mygreen}{RGB}{28,172,0} % color values Red, Green, Blue
\definecolor{mylilas}{RGB}{170,55,241}
%\usepackage{enumitem}
%\usepackage{nomencl}
%\makenomenclature
\lstset{
literate={~} {$\sim$}{1}
}
\lstdefinestyle{DOS}
{
backgroundcolor=\color{black},
basicstyle=\scriptsize\color{white}\ttfamily
}
\lstdefinestyle{BashInputStyle}{
language=bash,
basicstyle=\small\sffamily,
numbers=left,
numberstyle=\tiny,
numbersep=3pt,
frame=tb,
columns=fullflexible,
backgroundcolor=\color{yellow!20},
linewidth=0.9\linewidth,
xleftmargin=0.1\linewidth
}
\lstset{language=Matlab,%
%basicstyle=\color{red},
breaklines=true,%
morekeywords={matlab2tikz},
keywordstyle=\color{blue},%
morekeywords=[2]{1}, keywordstyle=[2]{\color{black}},
identifierstyle=\color{black},%
stringstyle=\color{mylilas},
commentstyle=\color{mygreen},%
showstringspaces=false,%without this there will be a symbol in the places where there is a space
numbers=left,%
numberstyle={\tiny \color{black}},% size of the numbers
numbersep=9pt, % this defines how far the numbers are from the text
emph=[1]{for,end,break},emphstyle=[1]\color{red}, %some words to emphasise
%emph=[2]{word1,word2}, emphstyle=[2]{style},
}
%Fancy header
\fancyhead{} % clear all header fields
\fancyhead[RE]{{\leftmark}} %Right Even
\fancyhead[LO]{\nouppercase{\rightmark}} %Left Odd
%\oddsidemargin = 18pt
%\evensidemargin = 18pt
\newcommand{\info}{\todo[linecolor=blue,backgroundcolor=blue!25,bordercolor=blue]}
\newcommand{\HRule}{\rule{\linewidth}{0.5mm}}
\newcommand{\overbar}[1]{\mkern 1.5mu\overline{\mkern-1.5mu#1\mkern-1.5mu}\mkern 1.5mu} %Brukes til GM.
\newcommand{\RR}{\mathbb{R}} % for Real numbers
\newcommand{\ZZ}{\mathbb{Z}} % for Integers
\newcommand{\col}[1]{\left[\begin{matrix} #1 \end{matrix} \right]}
%Kortere titler på seksjoner i header
%\newcommand{\markedsection}[2]{\section[#2]{#2%
% \sectionmark{#1}}rost
% \sectionmark{#1}}
%\newcommand{\markedsubsection}[2]{\subsection[#2]{#2%
% \subsectionmark{#1}}
% \subsectionmark{#1}}
\begin{document}
\pagestyle{plain}
\pagenumbering{gobble} %Switch off page numbering
%Insert blank page after titlepage
%\afterpage{\null\newpage}
%\newcommand\blankpage{
% \null
% \thispagestyle{empty}
%\addtocounter{page}{-1}
% \newpage}
\section{MC lab Manual: \\Importing Data from the Qualisys System into ROS and MATLAB(Linux)}
\textit{By Einar Ueland, March 2016}
\subsection{About}
%For users that want to get Qualisys data from the MC-Lab into MATLAB, the following might be viewed as a standalone part of the manual.
The following approach may be used to read Qualisys data into ROS and MATLAB. The method is convenient for Qualisys data into to MATLAB independent on whether the rest of the system use ROS or not. The method, as described is limited to Linux-operating systems.
The first part of the manual describe how import Qualisys data into ROS, while the second part describe how to get the data from ROS into MATLAB/Simulink.
%Note on MATLAB in ROS: MATLAB is in general found to be quite suitable for use on ROS. The package Robotics Systemic Toolbox (which is included in the NTNU academic license), is a toolbox specifically created for interfacing MATLAB with ROS.
Please note the following:
\begin{itemize}
\begin{item} In the manual, the dollar sign \$ indicate a line of text that should be written in the Linux- terminal window.
\end{item}
\begin{item} In the manual gedit is used as text editor. This can be replaced with the readers favourite text editor. \end{item}
\begin{item} The manual is written and tested for ROS-Indigo and MATLAB 2015b. It is based on MATLAB's manual for importing custom messages \citep{ROSGENMSG},
which is and adapted and expanded to fit that of the MC lab and the Qualisys system. \end{item}
\begin{item}
You need MATLAB version 2015a or newer in order to proceed with the MATLAB section of the manual.
\end{item}
\end{itemize}
\newpage
\subsection{Manual}
If not already installed on the machine you should start by installing ROS.
Follow the instructions on the ROS download page:\\
\url{http://wiki.ros.org/indigo/Installation/Ubuntu}
\newline
%For other users one should note that the qualisys positioning system is a %rather big investment done in the MC-lab at NTNU.
You should now make a ROS workspace in your home directory:\\
\begin{lstlisting}[style=BashInputStyle]
$mkdir -p ~/catkin_ws/src
$cd ~/catkin_ws/src
$catkin_init_workspace
\end{lstlisting}
You now need to make sure that one are sourcing the setup.bash file in your ROS workspace each time you open your terminal window. This can be done by changing the bash file with the following command:
\begin{lstlisting}[style=BashInputStyle]
$ echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
\end{lstlisting}
Now import the Qualisys driver from GitHub. (The driver \citep{Qualisys} is avaiable through the Apache License )
\begin{lstlisting}[style=BashInputStyle]
$ cd ~/catkin_ws/src
$ git clone https://github.com/KumarRobotics/qualisys
$ cd ~/catkin_ws
$ catkin_make
\end{lstlisting}
Open the qualisys.launch file in a text-editor
\begin{lstlisting}[style=BashInputStyle]
$ sudo gedit ~/catkin_ws/src/qualisys/launch/qualisys.launch
\end{lstlisting}
Edit the ip address and port number for the Qualisys system. (As of March 2016 the IP is: 192.168.0.10 and the port is 22222 )
The driver should now be set for interfacing with Qualisys in ROS. To test it, first check that you are able to ping the Qualisys system over the MC lab WiFi.
\begin{lstlisting}[style=BashInputStyle]
$ ping 192.168.0.10
\end{lstlisting}
If you successfully pinged the qualisys system it should now be possible to listen to the data from the Qualisys system.
(Note that the Qualisys system need to recognize the IR-markers in the MC lab in order to transmit data. It may be smart to first to check that the computer running Qualisys software in the MC-Lab sees the marker)
\begin{lstlisting}[style=BashInputStyle]
$ roslaunch qualisys qualisys.launch
$ rostopic list
\end{lstlisting}
The command "rostopic list" prints the ROS active ROS topics. It should now be printed a qualisys topic in terminal. The name will depend on the name set on the Qualisys computer. In this manual the topic is named /qualisys/CSE1.
You can now listen to the data as it is published to ROS
\begin{lstlisting}[style=BashInputStyle]
$ rostopic echo /qualisys/CSE1
\end{lstlisting}
\textbf{Getting Qualisys data to MATLAB}\\
The message sent from the Qualisys system is a custom message that MATLAB does not recognize (most messages in ROS is not custom, and will be recognized by MATLAB).
In order to get the Qualisys data into MATLAB you one to facilitate so that MATLAB recognize the custom message.
Start by creating a new folder $\sim$/qualisysDir. Now copy the folder named qualisys, located in $\sim$/catkin\_ws/src and paste it into the folder $\sim$/qualisysDir
\newline
Now one want to edit the package file so that MATLAB recognizes the messages.
\begin{lstlisting}[style=BashInputStyle]
Sudo gedit ~/qualisysDir/qualisys/package.xml
\end{lstlisting}
Add the following two lines somewhere in the main body of the package.xml file.
\begin{lstlisting}[style=BashInputStyle]
<build_depend>geometry_msgs</build_depend>
<build_depend>std_msgs</build_depend>
\end{lstlisting}
Now open MATLAB.
The first step in MATLAB is to download the ROS custom message package. Type the following lines into the MATLAB command window, and follow instructions to download the ROS custom message package.
\begin{lstlisting}[style=BashInputStyle]
roboticsAddons (in MATLAB 2016)
roboticsSupportPackages (in MATLAB 2015)
\end{lstlisting}
When the download is finished paste the following commands in the MATLAB command window.
\begin{lstlisting}[style=BashInputStyle]
folderpath= '~/qualisysDir'
rosgenmsg(folderpath)
\end{lstlisting}
Now follow the instructions generated by MATLAB in order generate the needed message type. In this process you may need allow writing permission to the file "pathdef.m"
You are now ready to get the data into MATLAB.
Remember that the Qualisys node always need to be launched before reading signals in MATLAB.
\begin{lstlisting}[style=BashInputStyle]
roslaunch qualisys qualisys.launch
\end{lstlisting}
You can now get the data into Simulink by the Subscriber block, or to MATLAB workspace by typing the following commands:
\begin{lstlisting}[style=BashInputStyle]
Subb = rossubscriber('/qualisys/CSE1');
posedata = receive(Subb,10);
\end{lstlisting}
\bibliographystyle{vancouver}
\setcitestyle{square}
\addcontentsline{toc}{chapter}{\bibname}
\bibliography{refsQManual}
\nocite{*}
\end{document}