Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
masterarbeit-kai
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Philipp Adolf
masterarbeit-kai
Commits
e4c891ad
Commit
e4c891ad
authored
Jun 29, 2017
by
wester
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
kinect update
parent
7bad8df5
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
57 additions
and
98 deletions
+57
-98
KinectTutorial3.vcxproj
3_PointCloud/KinectTutorial3.vcxproj
+1
-0
KinectTutorial3.vcxproj.filters
3_PointCloud/KinectTutorial3.vcxproj.filters
+4
-0
SteamVrTrackingServer.cpp
3_PointCloud/SteamVrTrackingServer.cpp
+14
-82
SteamVrTrackingServer.h
3_PointCloud/SteamVrTrackingServer.h
+11
-0
example.pnts
3_PointCloud/example.pnts
+0
-0
main.cpp
3_PointCloud/main.cpp
+26
-16
main.h
3_PointCloud/main.h
+1
-0
No files found.
3_PointCloud/KinectTutorial3.vcxproj
View file @
e4c891ad
...
...
@@ -93,6 +93,7 @@
</ItemGroup>
<ItemGroup>
<ClInclude
Include=
"glut.h"
/>
<ClInclude
Include=
"SteamVrTrackingServer.h"
/>
<ClInclude
Include=
"main.h"
/>
</ItemGroup>
<Import
Project=
"$(VCTargetsPath)\Microsoft.Cpp.targets"
/>
...
...
3_PointCloud/KinectTutorial3.vcxproj.filters
View file @
e4c891ad
...
...
@@ -32,5 +32,8 @@
<ClInclude
Include=
"main.h"
>
<Filter>
Header Files
</Filter>
</ClInclude>
<ClInclude
Include=
"SteamVrTrackingServer.h"
>
<Filter>
Header Files
</Filter>
</ClInclude>
</ItemGroup>
</Project>
\ No newline at end of file
3_PointCloud/SteamVrTrackingServer.cpp
View file @
e4c891ad
#include <chrono>
#include <csignal>
#include <iostream>
#include <thread>
#include <sstream>
#include <openvr.h>
#include "SteamVrTrackingServer.h"
struct
Config
{
std
::
string
hostname
=
"127.0.0.1"
;
int
port
=
5672
;
std
::
string
exchange
=
"irpose"
;
bool
debug
=
false
;
int
messages_per_second
=
60
;
}
config_
;
bool
running_
=
true
;
vr
::
IVRSystem
*
vr_system_
=
nullptr
;
vr
::
TrackedDevicePose_t
tracked_device_poses_
[
vr
::
k_unMaxTrackedDeviceCount
];
void
signalHandler
(
int
signum
)
{
running_
=
false
;
}
bool
init
()
bool
init
VR
()
{
// Loading the SteamVR Runtime
...
...
@@ -57,7 +44,7 @@ bool init()
return
true
;
}
void
shutdown
()
void
shutdown
VR
()
{
if
(
vr_system_
)
{
...
...
@@ -134,16 +121,7 @@ void printMatrix(const vr::HmdMatrix34_t &htm)
}
}
int
main2
(
int
argc
,
char
*
argv
[])
{
if
(
!
init
())
{
shutdown
();
return
1
;
}
if
(
false
)
{
void
printVRDevices
()
{
std
::
cout
<<
"List of available VR devices:"
<<
std
::
endl
;
for
(
int
nDevice
=
0
;
nDevice
<
vr
::
k_unMaxTrackedDeviceCount
;
++
nDevice
)
{
...
...
@@ -172,23 +150,16 @@ int main2(int argc, char *argv[])
std
::
cout
<<
"
\t\t
Type: "
<<
type
<<
std
::
endl
;
std
::
cout
<<
"
\t\t
Serial: "
<<
serial
<<
std
::
endl
;
}
}
shutdown
();
return
0
;
}
signal
(
SIGINT
,
signalHandler
);
std
::
cout
<<
"Tracking started. Cancel with Ctrl-C"
<<
std
::
endl
;
std
::
chrono
::
duration
<
double
,
std
::
milli
>
cycle_time
;
if
(
config_
.
messages_per_second
>
0
)
int
main2
(
int
argc
,
char
*
argv
[])
{
if
(
!
initVR
())
{
cycle_time
=
std
::
chrono
::
duration
<
double
,
std
::
milli
>
(
1000.0
/
config_
.
messages_per_second
);
shutdownVR
();
return
1
;
}
while
(
running_
)
{
auto
start
=
std
::
chrono
::
steady_clock
::
now
();
printVRDevices
();
handleInput
();
...
...
@@ -248,48 +219,9 @@ int main2(int argc, char *argv[])
std
::
cout
<<
"Pose of device "
<<
nDevice
<<
" ("
<<
type
<<
")"
<<
std
::
endl
;
printMatrix
(
htm
);
}
const
uint32_t
size
=
1024
;
char
serial
[
size
];
vr_system_
->
GetStringTrackedDeviceProperty
(
nDevice
,
vr
::
ETrackedDeviceProperty
::
Prop_SerialNumber_String
,
serial
,
size
);
auto
timestamp
=
std
::
chrono
::
duration_cast
<
std
::
chrono
::
microseconds
>
(
std
::
chrono
::
system_clock
::
now
().
time_since_epoch
()).
count
();
std
::
ostringstream
message
;
message
<<
"%YAML:1.0
\n
"
;
message
<<
"object_type:
\"
"
<<
model_type
<<
"
\"\n
"
;
message
<<
"serial:
\"
"
<<
serial
<<
"
\"\n
"
;
message
<<
"timestamp:
\"
"
<<
std
::
to_string
(
timestamp
)
<<
"
\"\n
"
;
message
<<
"pose: !!opencv-matrix
\n
rows: 4
\n
cols: 4
\n
dt: f
\n
data: [ "
;
message
<<
htm
.
m
[
0
][
0
]
<<
", "
;
message
<<
htm
.
m
[
0
][
1
]
<<
", "
;
message
<<
htm
.
m
[
0
][
2
]
<<
", "
;
message
<<
htm
.
m
[
0
][
3
]
<<
", "
;
message
<<
htm
.
m
[
1
][
0
]
<<
", "
;
message
<<
htm
.
m
[
1
][
1
]
<<
", "
;
message
<<
htm
.
m
[
1
][
2
]
<<
", "
;
message
<<
htm
.
m
[
1
][
3
]
<<
", "
;
message
<<
htm
.
m
[
2
][
0
]
<<
", "
;
message
<<
htm
.
m
[
2
][
1
]
<<
", "
;
message
<<
htm
.
m
[
2
][
2
]
<<
", "
;
message
<<
htm
.
m
[
2
][
3
]
<<
", "
;
message
<<
"0.0, 0.0, 0.0, 1.0 ]
\n
"
;
message
<<
"source_type:
\"
steam_vr
\"\n
"
;
message
<<
"source_serial:
\"
steam_vr_1
\"\n
"
;
if
(
config_
.
debug
)
{
std
::
cout
<<
message
.
str
()
<<
std
::
endl
;
}
}
if
(
config_
.
messages_per_second
>
0
)
{
std
::
this_thread
::
sleep_until
(
start
+
cycle_time
);
}
}
shutdown
();
shutdown
VR
();
return
0
;
}
3_PointCloud/SteamVrTrackingServer.h
0 → 100644
View file @
e4c891ad
#pragma once
#include <iostream>
#include <sstream>
#include <openvr.h>
bool
initVR
();
void
shutdownVR
();
\ No newline at end of file
3_PointCloud/example.pnts
View file @
e4c891ad
No preview for this file type
3_PointCloud/main.cpp
View file @
e4c891ad
#include "main.h"
#include "glut.h"
#include "SteamVRTrackingServer.h"
#include <cmath>
#include <cstdio>
...
...
@@ -93,13 +94,6 @@ void getRgbData(IMultiSourceFrame* frame, bool writFrameToFile) {
// Get data from frame
colorframe
->
CopyConvertedFrameDataToArray
(
colorwidth
*
colorheight
*
4
,
rgbimage
,
ColorImageFormat_Rgba
);
if
(
writFrameToFile
)
{
points
.
clear
();
points
.
reserve
(
width
*
height
*
3
);
colors
.
clear
();
colors
.
reserve
(
width
*
height
*
3
);
}
// Write color array for vertices
float
*
fdest
=
(
float
*
)
frameColors
;
for
(
int
i
=
0
;
i
<
width
*
height
;
i
++
)
{
...
...
@@ -132,13 +126,19 @@ void getRgbData(IMultiSourceFrame* frame, bool writFrameToFile) {
if
(
colorframe
)
colorframe
->
Release
();
}
void
getKinectData
()
{
void
getKinectData
(
bool
writeFrameInVector
)
{
IMultiSourceFrame
*
frame
=
NULL
;
if
(
SUCCEEDED
(
reader
->
AcquireLatestFrame
(
&
frame
)))
{
getDepthData
(
frame
);
getRgbData
(
frame
,
writeFile
);
writeFile
=
false
;
if
(
writeFrameInVector
)
{
points
.
clear
();
points
.
reserve
(
width
*
height
*
3
);
colors
.
clear
();
colors
.
reserve
(
width
*
height
*
3
);
}
getDepthData
(
frame
);
getRgbData
(
frame
,
writeFrameInVector
);
glBindBuffer
(
GL_ARRAY_BUFFER
,
vboId
);
glBufferData
(
GL_ARRAY_BUFFER
,
width
*
height
*
3
*
sizeof
(
GLfloat
),
framePositions
,
GL_DYNAMIC_DRAW
);
...
...
@@ -178,8 +178,6 @@ void writePointCloud() {
myfile
.
close
();
}
void
rotateCamera
()
{
...
...
@@ -190,11 +188,17 @@ void rotateCamera() {
glMatrixMode
(
GL_MODELVIEW
);
glLoadIdentity
();
gluLookAt
(
x
,
0
,
z
,
0
,
0
,
radius
/
2
,
0
,
1
,
0
);
angle
+=
0.002
;
//
angle += 0.002;
}
void
drawKinectData
()
{
getKinectData
();
getKinectData
(
writeFile
);
if
(
writeFile
)
{
writePointCloud
();
writeFile
=
false
;
}
rotateCamera
();
glClear
(
GL_COLOR_BUFFER_BIT
|
GL_DEPTH_BUFFER_BIT
);
...
...
@@ -212,7 +216,7 @@ void drawKinectData() {
glDisableClientState
(
GL_VERTEX_ARRAY
);
glDisableClientState
(
GL_COLOR_ARRAY
);
writePointCloud
();
}
void
keyPressed
(
unsigned
char
key
,
int
x
,
int
y
)
...
...
@@ -232,6 +236,12 @@ void keyPressed(unsigned char key, int x, int y)
int
main
(
int
argc
,
char
*
argv
[])
{
if
(
!
init
(
argc
,
argv
))
return
1
;
if
(
!
initKinect
())
return
1
;
if
(
!
initVR
())
{
shutdownVR
();
}
// OpenGL setup
glClearColor
(
0
,
0
,
0
,
0
);
glClearDepth
(
1.0
f
);
...
...
3_PointCloud/main.h
View file @
e4c891ad
...
...
@@ -6,6 +6,7 @@ const int colorheight = 1080;
void
drawKinectData
();
void
keyPressed
(
unsigned
char
key
,
int
x
,
int
y
);
void
writePointCloud
();
struct
pntsHeader
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment