Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
dhomm
Bachelor Thesis - Sensor Localization
Commits
477ea2cc
Commit
477ea2cc
authored
Jan 15, 2022
by
dhomm
Browse files
sensor finder changes
parent
0c31b09e
Changes
2
Hide whitespace changes
Inline
Side-by-side
README.md
View file @
477ea2cc
...
...
@@ -38,6 +38,7 @@ For the metadata palcement: upperarm was the: upper arm chosen
For the metadata palcement: waist was the: waist chosen
Sensor
...
...
Thesis-Code/sensor_finder/sensor_finder.py
View file @
477ea2cc
...
...
@@ -210,7 +210,7 @@ def n_placement_restriction(n, paired_sensors, restrictions):
break
return
p_s
def
sensor_
deci
der
(
sensors
,
placement
,
position_key
):
def
sensor_
fin
der
(
sensors
,
placement
,
position_key
):
"""
This function compares certain thresholds and compares sensors
pairwise to decide which sensor belongs to a given placement.
...
...
@@ -395,6 +395,73 @@ def sensor_decider(sensors, placement, position_key):
else
:
return
"This placement is not in a subset of the used data set"
def
combination_linter
(
file
,
placement
,
bp_key
):
a
=
read
(
"a:"
,
file
=
file
)
s
=
read
(
"s:"
,
file
=
file
)
# remove all sensors except accelerometer and gyroscope
a
=
get_acc_gyr
(
a
)
# get the frequency
try
:
freq1
=
a
[
0
].
info
.
sample_rate
freq2
=
a
[
1
].
info
.
sample_rate
if
freq1
==
freq2
:
freq
=
freq1
else
:
raise
Exception
(
"The frequency of sensor 0 and sensor 1 need to be the same"
)
except
:
raise
Exception
(
"Either there are to few sensors available or sensor 0 and sensor 1 has no frequency or not the same frequency"
)
key
=
bp_key
#"BODY_POSITION"
start
,
end
=
get_walking_sequences
(
s
,
freq
)
sensors
=
get_acc_gyr
(
a
)
# filter body parts which cannot be compared yet
bps
=
[
"chest"
,
"forearm"
,
"wrist"
,
"head"
,
"thigh"
,
"shin"
,
"upperarm"
,
"upper arm"
,
"waist"
]
s_help
=
[]
for
i
in
sensors
:
if
i
.
info
.
metadata
[
key
].
lower
()
in
bps
:
s_help
.
append
(
i
)
sensors
=
s_help
minimum
=
min
([
len
(
stream
)
for
stream
in
sensors
])
sensors
=
[
stream
[
start
:
end
]
for
stream
in
sensors
]
combi
=
list
(
paired_acc_gyr
(
sensors
,
key
))
if
not
minimum
>
end
:
if
minimum
<
start
:
i
=
0
while
i
<
len
(
combi
):
if
len
(
combi
[
i
][
0
])
<
start
or
len
(
combi
[
i
][
1
])
<
start
:
combi
.
pop
(
i
)
print
(
"The matadata placement: "
,
combi
[
i
][
0
].
info
.
metadata
[
key
],
"needed to be discarded since ther was no walking sequence available"
)
discarded_placement
=
combi
[
i
][
0
].
info
.
metadata
[
key
]
else
:
i
+=
1
minimum
=
min
([
len
(
combi
[
i
][
0
])
for
i
in
range
(
len
(
combi
))]
+
[
len
(
combi
[
i
][
1
])
for
i
in
range
(
len
(
combi
))])
if
minimum
<
end
:
end
=
minimum
print
(
"So all sensors could be included in the decisiion process the end needed to be reset to: "
,
end
)
elif
minimum
<
end
:
end
=
minimum
print
(
"So all sensors could be included in the decisiion process the end needed to be reset to: "
,
end
)
if
start
>
end
:
raise
Exception
(
"Somethings wrong with the walking data the start is after the end"
)
result
=
sensor_finder
(
combi
,
placement
,
key
)
acc
,
gyr
=
result
print
(
"For the wanted placement: "
,
placement
,
"the sensor with the metadata placement: "
,
acc
.
info
.
metadata
[
key
],
"was chosen."
)
print
(
"All available metadata placements were: "
,
[
s
[
0
].
info
.
metadata
[
bp_key
]
for
s
in
combi
])
return
result
if
__name__
==
"__main__"
:
# set properties
file
=
"../Proband3.mkv"
placement
=
"forearm"
bp_key
=
"BODY_POSITION"
combination_linter
(
file
,
placement
,
bp_key
)
Write
Preview
Supports
Markdown
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