Commit 20665a73 authored by Keisuke ANDO's avatar Keisuke ANDO 😌
Browse files

アップデート README.Rmd, README.md

parent 4452e7e2
...@@ -3,15 +3,82 @@ title: "socceR" ...@@ -3,15 +3,82 @@ title: "socceR"
output: github_document output: github_document
--- ---
### RCLファイルを読む関数ができました --- 使い方 RoboCup Soccer 2Dの試合分析のためのツール群
## 機能
### `read_rcl`
指定されたrclファイルを解析し、tibbleにして返します。
```{r, message=FALSE, collapse = TRUE} ```{r, message=FALSE, collapse = TRUE}
# tidyverseをインポートする
library(tidyverse) library(tidyverse)
# 作った関数を読み込む
source("R/read_rcl.R") 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") ![plotly-visualization-sample](image/plotly-visualization-sample.png)
```
\ No newline at end of file
socceR socceR
================ ================
### RCLファイルを読む関数ができました — 使い方 RoboCup Soccer 2Dの試合分析のためのツール群
## 機能
### `read_rcl`
指定されたrclファイルを解析し、tibbleにして返します。
``` r ``` r
# tidyverseをインポートする
library(tidyverse) library(tidyverse)
# 作った関数を読み込む
source("R/read_rcl.R") 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")
# ファイルを指定するだけ head(rcg)
read_rcl("data/20220304142841-HELIOS_base_1-vs-ThunderLeague_1.rcl") ## # A tibble: 6 x 21
## # A tibble: 485,911 x 6 ## step side unum type state x y vx vy body neck vq vw
## step team unum command args line ## <int> <chr> <int> <int> <int> <dbl> <dbl> <dbl> <dbl> <dbl> <int> <chr> <int>
## <chr> <chr> <chr> <chr> <list> <chr> ## 1 1 l 1 0 9 -49 0 0 0 54.7 0 h 180
## 1 0 HELIOS_base 1 init <chr [1]> "0,19\tRecv HELIOS_base_1: (init~ ## 2 1 l 2 17 1 -25 -5 0 0 -118. 0 h 180
## 2 0 HELIOS_base 1 version <chr [1]> "0,19\tRecv HELIOS_base_1: (init~ ## 3 1 l 3 8 1 -25 5 0 0 108. 0 h 180
## 3 0 HELIOS_base 1 goalie <chr [0]> "0,19\tRecv HELIOS_base_1: (init~ ## 4 1 l 4 13 1 -25 -10 0 0 -117. 0 h 180
## 4 0 HELIOS_base 1 synch_see <chr [0]> "0,19\tRecv HELIOS_base_1: (sync~ ## 5 1 l 5 6 1 -25 10 0 0 -174. 0 h 180
## 5 0 HELIOS_base 1 ear <chr [0]> "0,19\tRecv HELIOS_base_1: (sync~ ## 6 1 l 6 11 1 -25 0 0 0 114. 0 h 180
## 6 0 HELIOS_base 1 off <chr [1]> "0,19\tRecv HELIOS_base_1: (sync~ ## # ... with 8 more variables: stamina <dbl>, effort <dbl>, recovery <dbl>,
## 7 0 HELIOS_base 1 clang <chr [0]> "0,19\tRecv HELIOS_base_1: (sync~ ## # capacity <dbl>, ball_x <dbl>, ball_y <dbl>, ball_vx <dbl>, ball_vy <dbl>
## 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
``` ```
## 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)
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment