Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Keisuke ANDO
socceR
Commits
20665a73
Commit
20665a73
authored
Dec 06, 2022
by
Keisuke ANDO
😌
Browse files
アップデート README.Rmd, README.md
parent
4452e7e2
Changes
2
Hide whitespace changes
Inline
Side-by-side
README.Rmd
View file @
20665a73
...
...
@@ -3,15 +3,82 @@ title: "socceR"
output: github_document
---
### RCLファイルを読む関数ができました --- 使い方
RoboCup Soccer 2Dの試合分析のためのツール群
## 機能
### `read_rcl`
指定されたrclファイルを解析し、tibbleにして返します。
```{r, message=FALSE, collapse = TRUE}
# tidyverseをインポートする
library(tidyverse)
# 作った関数を読み込む
source("R/read_rcl.R")
rcl <- read_rcl("data/20220405162804-HELIOS_base_3-vs-enemy_2.rcl")
head(rcl)
```
### `read_rcg`
指定されたrcgファイルを解析し、tibbleにして返します。
```{r, message=FALSE, collapse = TRUE}
library(tidyverse)
source("R/read_rcg.R")
rcg <- read_rcg("data/20220405162804-HELIOS_base_3-vs-enemy_2.rcg")
head(rcg)
```
## plotlyを使ったビジュアライゼーションのサンプル
```{r, message=FALSE, eval=FALSE}
library(plotly)
ball_path <- rcg |>
dplyr::group_nest(step, ball_x, ball_y) |>
dplyr::mutate(move_dist_x = ball_x - dplyr::lag(ball_x),
move_dist_y = ball_y - dplyr::lag(ball_y),
move_dist = sqrt(move_dist_x^2 + move_dist_y^2),
move_dist = dplyr::if_else(is.na(move_dist), 0, move_dist)) |>
dplyr::filter(move_dist != 0 & move_dist < 40)
ball_path |>
plotly::plot_ly(showlegend = FALSE) |>
plotly::add_markers(
data = ball_path,
x = ~ball_x,
y = ~ball_y,
z = ~move_dist,
marker = list(color = ~move_dist,
size = 3,
colorscale = "Viridis",
opacity = 0.8,
showscale = FALSE)
) |>
plotly::add_paths(
data = ball_path |>
dplyr::select(step, ball_x, ball_y, move_dist) |>
dplyr::mutate(base = 0) |>
tidyr::pivot_longer(c(move_dist, base)) |>
dplyr::group_by(step),
x = ~ball_x,
y = ~ball_y,
z = ~value,
color = ~value
) |>
plotly::hide_colorbar() |>
plotly::layout(
scene = list(
xaxis = list(title = "ボールのX座標"),
yaxis = list(title = "ボールのY座標"),
zaxis = list(title = "ボールの飛距離"),
camera = list(eye = list(x = 0.8, y = -1.8, z = 0.8),
center = list(x = 0.0, y = 0.0, z = -0.2))
)
)
# ファイルを指定するだけ
read_rcl("data/20220304142841-HELIOS_base_1-vs-ThunderLeague_1.rcl")
```
\ No newline at end of file
```
![plotly-visualization-sample](image/plotly-visualization-sample.png)
README.md
View file @
20665a73
socceR
================
### RCLファイルを読む関数ができました — 使い方
RoboCup Soccer 2Dの試合分析のためのツール群
## 機能
### `read_rcl`
指定されたrclファイルを解析し、tibbleにして返します。
```
r
# tidyverseをインポートする
library
(
tidyverse
)
# 作った関数を読み込む
source
(
"R/read_rcl.R"
)
rcl
<-
read_rcl
(
"data/20220405162804-HELIOS_base_3-vs-enemy_2.rcl"
)
head
(
rcl
)
## # A tibble: 6 x 6
## step team unum command args line
## <chr> <chr> <chr> <chr> <list> <chr>
## 1 0 HELIOS_base 1 init <chr [1]> "0,114\tRecv HELIOS_base_1: (init~
## 2 0 HELIOS_base 1 version <chr [1]> "0,114\tRecv HELIOS_base_1: (init~
## 3 0 HELIOS_base 1 goalie <chr [0]> "0,114\tRecv HELIOS_base_1: (init~
## 4 0 HELIOS_base 1 synch_see <chr [0]> "0,115\tRecv HELIOS_base_1: (sync~
## 5 0 HELIOS_base 1 ear <chr [0]> "0,115\tRecv HELIOS_base_1: (sync~
## 6 0 HELIOS_base 1 off <chr [1]> "0,115\tRecv HELIOS_base_1: (sync~
```
### `read_rcg`
指定されたrcgファイルを解析し、tibbleにして返します。
```
r
library
(
tidyverse
)
source
(
"R/read_rcg.R"
)
rcg
<-
read_rcg
(
"data/20220405162804-HELIOS_base_3-vs-enemy_2.rcg"
)
# ファイルを指定するだけ
read_rcl
(
"data/20220304142841-HELIOS_base_1-vs-ThunderLeague_1.rcl"
)
## # A tibble: 485,911 x 6
## step team unum command args line
## <chr> <chr> <chr> <chr> <list> <chr>
## 1 0 HELIOS_base 1 init <chr [1]> "0,19\tRecv HELIOS_base_1: (init~
## 2 0 HELIOS_base 1 version <chr [1]> "0,19\tRecv HELIOS_base_1: (init~
## 3 0 HELIOS_base 1 goalie <chr [0]> "0,19\tRecv HELIOS_base_1: (init~
## 4 0 HELIOS_base 1 synch_see <chr [0]> "0,19\tRecv HELIOS_base_1: (sync~
## 5 0 HELIOS_base 1 ear <chr [0]> "0,19\tRecv HELIOS_base_1: (sync~
## 6 0 HELIOS_base 1 off <chr [1]> "0,19\tRecv HELIOS_base_1: (sync~
## 7 0 HELIOS_base 1 clang <chr [0]> "0,19\tRecv HELIOS_base_1: (sync~
## 8 0 HELIOS_base 1 ver <chr [1]> "0,19\tRecv HELIOS_base_1: (sync~
## 9 0 HELIOS_base 1 turn <chr [1]> "0,20\tRecv HELIOS_base_1: (turn~
## 10 0 HELIOS_base 1 turn_neck <chr [1]> "0,20\tRecv HELIOS_base_1: (turn~
## # ... with 485,901 more rows
head
(
rcg
)
## # A tibble: 6 x 21
## step side unum type state x y vx vy body neck vq vw
## <int> <chr> <int> <int> <int> <dbl> <dbl> <dbl> <dbl> <dbl> <int> <chr> <int>
## 1 1 l 1 0 9 -49 0 0 0 54.7 0 h 180
## 2 1 l 2 17 1 -25 -5 0 0 -118. 0 h 180
## 3 1 l 3 8 1 -25 5 0 0 108. 0 h 180
## 4 1 l 4 13 1 -25 -10 0 0 -117. 0 h 180
## 5 1 l 5 6 1 -25 10 0 0 -174. 0 h 180
## 6 1 l 6 11 1 -25 0 0 0 114. 0 h 180
## # ... with 8 more variables: stamina <dbl>, effort <dbl>, recovery <dbl>,
## # capacity <dbl>, ball_x <dbl>, ball_y <dbl>, ball_vx <dbl>, ball_vy <dbl>
```
## plotlyを使ったビジュアライゼーションのサンプル
```
r
library
(
plotly
)
ball_path
<-
rcg
|>
dplyr
::
group_nest
(
step
,
ball_x
,
ball_y
)
|>
dplyr
::
mutate
(
move_dist_x
=
ball_x
-
dplyr
::
lag
(
ball_x
),
move_dist_y
=
ball_y
-
dplyr
::
lag
(
ball_y
),
move_dist
=
sqrt
(
move_dist_x
^
2
+
move_dist_y
^
2
),
move_dist
=
dplyr
::
if_else
(
is.na
(
move_dist
),
0
,
move_dist
))
|>
dplyr
::
filter
(
move_dist
!=
0
&
move_dist
<
40
)
ball_path
|>
plotly
::
plot_ly
(
showlegend
=
FALSE
)
|>
plotly
::
add_markers
(
data
=
ball_path
,
x
=
~
ball_x
,
y
=
~
ball_y
,
z
=
~
move_dist
,
marker
=
list
(
color
=
~
move_dist
,
size
=
3
,
colorscale
=
"Viridis"
,
opacity
=
0.8
,
showscale
=
FALSE
)
)
|>
plotly
::
add_paths
(
data
=
ball_path
|>
dplyr
::
select
(
step
,
ball_x
,
ball_y
,
move_dist
)
|>
dplyr
::
mutate
(
base
=
0
)
|>
tidyr
::
pivot_longer
(
c
(
move_dist
,
base
))
|>
dplyr
::
group_by
(
step
),
x
=
~
ball_x
,
y
=
~
ball_y
,
z
=
~
value
,
color
=
~
value
)
|>
plotly
::
hide_colorbar
()
|>
plotly
::
layout
(
scene
=
list
(
xaxis
=
list
(
title
=
"ボールのX座標"
),
yaxis
=
list
(
title
=
"ボールのY座標"
),
zaxis
=
list
(
title
=
"ボールの飛距離"
),
camera
=
list
(
eye
=
list
(
x
=
0.8
,
y
=
-1.8
,
z
=
0.8
),
center
=
list
(
x
=
0.0
,
y
=
0.0
,
z
=
-0.2
))
)
)
```
![
plotly-visualization-sample
](
image/plotly-visualization-sample.png
)
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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