MQTT_SCHEMA VISION - zero1ne-26/doc GitHub Wiki

Vision MQTT μŠ€ν‚€λ§ˆ


κ°œμš”

ν•­λͺ© λ‚΄μš©
μž‘μ„± 주체 Vision νŒ€
μ΅œμ’… μˆ˜μ •μΌ 2026-10-04
μˆ˜μ • λ‚΄μš© μ€€λΉ„λ¬Ό μ±™κΈ°κΈ° μͺ½ 라벨 μˆ˜μ •

ν† ν”½ λͺ©λ‘

ꡬ뢄 Topic (λ°”λ‘œκ°€κΈ°) λ°©ν–₯ μ„€λͺ…
REQUEST server/session/start μ„œλ²„ β†’ Vision μ„Έμ…˜(페λ₯΄μ†Œλ‚˜)이 μ‹œμž‘λμŒμ„ μ•Œλ¦Ό
REQUEST server/session/end μ„œλ²„ β†’ Vision μ„Έμ…˜(페λ₯΄μ†Œλ‚˜)이 λλ‚¬μŒμ„ μ•Œλ¦Ό
RESPONSE cctv/person/zone Vision β†’ μ„œλ²„ ν˜„μž¬ 좔적 쀑인 μ‚¬λžŒμ΄ μœ„μΉ˜ν•œ zone
RESPONSE cctv/person/emotion Vision β†’ μ„œλ²„ ν˜„μž¬ 좔적 쀑인 μ‚¬λžŒμ˜ ν‘œμ • 인식 κ²°κ³Ό
RESPONSE vision/position/spot Vision β†’ μ„œλ²„ ν˜„μž¬ 좔적 쀑인 Spot 의 μœ„μΉ˜
RESPONSE cctv/person/profile Vision β†’ μ„œλ²„ ν˜„μž¬ 좔적 쀑인 μ‚¬λžŒμ˜ μ™Έν˜• μ„€λͺ… (μ„Έμ…˜λ‹Ή 1회)
RESPONSE cctv/item/state Vision β†’ μ„œλ²„ CCTV λ‚΄ 미리 μ„€μ •λœ μ˜μ—­λ‚΄ 물건의 μœ„μΉ˜ μ—¬λΆ€ μƒνƒœ (μ΄ˆλ‹Ή 1회)
REQUEST server/pokemon/start μ„œλ²„ β†’ Vision ν•΄λ‹Ή 포켓λͺ¬μ˜ 포획 νŒμ •μ„ μ‹œμž‘ν•˜λΌλŠ” μ•Œλ¦Ό
REQUEST server/trash/start μ„œλ²„ β†’ Vision μ“°λ ˆκΈ°μ˜ ν”Œλ‘œκΉ… νŒμ •μ„ μ‹œμž‘ν•˜λΌλŠ” μ•Œλ¦Ό
RESPONSE cctv/pokemon/complete Vision β†’ μ„œλ²„ ν•΄λ‹Ή 포켓λͺ¬ 포획 μ™„λ£Œ
RESPONSE cctv/trash/complete Vision β†’ μ„œλ²„ ν”Œλ‘œκΉ…(μ“°λ ˆκΈ° 쀍기) μ™„λ£Œ
RESPONSE cctv/person/action Vision β†’ μ„œλ²„ ν˜„μž¬ 좔적 쀑인 μ‚¬λžŒμ˜ λ™μž‘ 라벨 (λ™μž‘μ΄ λ°”λ€” λ•Œ)

SERVER -> VISION

Topic: server/session/start

방문객이 μ‹œμž‘ μž₯μ†Œμ—μ„œ 페λ₯΄μ†Œλ‚˜λ₯Ό μ‹œμž‘ν•˜λ©΄, λ°±μ—”λ“œκ°€ session_idλ₯Ό Vision에 λ³΄λ‚΄μ€λ‹ˆλ‹€.

Payload

{
  "session_id": "string" // μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜ μ„œλ²„ λ°œκΈ‰κ°’
}
ν•„λ“œ νƒ€μž… ν•„μˆ˜ μ„€λͺ…
session_id string Y μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜ μ„œλ²„μ—μ„œ λ°œκΈ‰ν•˜λŠ” μ„Έμ…˜ μ‹λ³„μž

μ˜ˆμ‹œ

{
  "session_id": "abc123"
}

Topic: server/session/end

방문객의 μ²΄ν—˜μ΄ λͺ¨λ‘ λλ‚˜λ©΄, λ°±μ—”λ“œκ°€ session_idλ₯Ό Vision에 λ³΄λ‚΄μ€λ‹ˆλ‹€.

Payload

{
  "session_id": "string" // μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜ μ„œλ²„ λ°œκΈ‰κ°’
}
ν•„λ“œ νƒ€μž… ν•„μˆ˜ μ„€λͺ…
session_id string Y μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜ μ„œλ²„μ—μ„œ λ°œκΈ‰ν•˜λŠ” μ„Έμ…˜ μ‹λ³„μž

μ˜ˆμ‹œ

{
  "session_id": "abc123"
}

VISION -> SERVER

Topic: cctv/person/zone

μ„Έμ…˜μ˜ 주체가 μœ„μΉ˜ν•œ zone을 λ°œν–‰ν•©λ‹ˆλ‹€.

Payload

{
  "session_id": "abc123",
  "zone_id": "home"
}
ν•„λ“œ νƒ€μž… ν•„μˆ˜ μ„€λͺ…
session_id string Y μ„Έμ…˜ id
zone_id string Y ν˜„μž¬ μœ„μΉ˜ν•œ zone. μ–΄λŠ zone 에도 μ†ν•˜μ§€ μ•ŠμœΌλ©΄ none

μ„œλ²„κ°€ μ•Œμ•„λ‘¬μ•Ό ν•˜λŠ” λΆ€λΆ„

  • μœ„μΉ˜ 변경이 μžˆμ„ μ‹œμ—λ§Œ λ°œν–‰λ©λ‹ˆλ‹€.
  • λ“±λ‘λœ μ‚¬λžŒμ΄ ν”„λ ˆμž„μ—μ„œ μ‚¬λΌμ‘Œλ‹€κ°€ λ‹€λ₯Έ zone μ—μ„œ λ‹€μ‹œ 작히면 κ·Έλ•Œ μƒˆ zone 이 λ°œν–‰λ©λ‹ˆλ‹€.
  • μ„Έμ…˜μ΄ λ°”λ€Œλ©΄ 이전 μ„Έμ…˜μ˜ zone κ³Ό 같더라도 μƒˆ session_id 둜 λ‹€μ‹œ λ°œν–‰λ©λ‹ˆλ‹€.

Topic: cctv/person/emotion

μ„Έμ…˜μ˜ 주체(페λ₯΄μ†Œλ‚˜λ₯Ό μ‹œμž‘ν•œ μ‚¬λžŒ)의 ν‘œμ •μ΄ λ°”λ€” λ•Œλ§Œ λ°œν–‰ν•©λ‹ˆλ‹€. λ‚΄λΆ€μ μœΌλ‘œ 0.5μ΄ˆλ§ˆλ‹€ νŒμ •ν•©λ‹ˆλ‹€. ν‘œμ • λ³€κ²½ μ‹œμ—λ§Œ λ°œν–‰λ©λ‹ˆλ‹€.

Payload

{
  "session_id": "abc123",
  "timestamp": 1690000000.123,
  "emotion": "joy"
}
ν•„λ“œ νƒ€μž… ν•„μˆ˜ μ„€λͺ…
session_id string Y μ„Έμ…˜ id
timestamp number Y Unix epoch 초 (μ†Œμˆ˜μ  포함)
emotion string Y μΈμ‹λœ ν‘œμ •(joy, surprise, neutral, anger)
κ°’ 의미
joy 기쁨
surprise λ†€λžŒ
neutral 쀑립
anger 화남

μ„œλ²„κ°€ μ•Œμ•„λ‘¬μ•Ό ν•˜λŠ” λΆ€λΆ„

  • ν‘œμ •μ— 변경이 μžˆμ„ μ‹œμ—λ§Œ λ°œν–‰λ©λ‹ˆλ‹€.
  • 얼꡴이 μž‘νžˆμ§€ μ•ŠμœΌλ©΄ λ°œν–‰λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

Topic: vision/position/spot

Spot의 μœ„μΉ˜λ₯Ό λ°œν–‰ν•©λ‹ˆλ‹€. (1초 μ£ΌκΈ°)

Payload

{
  "session_id": "abc123",
  "timestamp": 1690000000.123,
  "x": 100.0,
  "y": 100.0,
  "zone_id": "home"
}
ν•„λ“œ νƒ€μž… ν•„μˆ˜ μ„€λͺ…
session_id string Y μ„Έμ…˜ id. μ—΄λ¦° μ„Έμ…˜μ΄ μ—†μœΌλ©΄ "none"
timestamp number Y Unix epoch 초 (μ†Œμˆ˜μ  포함)
x number Y μ›”λ“œ μ’Œν‘œ X (cm)
y number Y μ›”λ“œ μ’Œν‘œ Y (cm)
zone_id string Y ν˜„μž¬ μœ„μΉ˜ν•œ zone. μ–΄λŠ zone에도 μ—†μœΌλ©΄ "none"

μ„œλ²„ 처리

  • μ„œλ²„λŠ” 이 토픽을 ꡬ독해 zone_idλ₯Ό λ°±μ˜€ν”ΌμŠ€ μž₯μ†Œ(locations.zone_id)둜 λ§€ν•‘ν•œ λ’€ orchestration/{sessionId}/spot/position(retained)으둜 μž¬λ°œν–‰ν•œλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ MQTT_SCHEMA-ORCHESTRATION_SERVER Β§20 μ°Έκ³ .

μ’Œν‘œκ³„

μ‚¬λžŒ μœ„μΉ˜, 슀팟 μœ„μΉ˜Β·λ°©ν–₯, zone은 λͺ¨λ‘ 같은 μ›”λ“œ μ’Œν‘œκ³„λ₯Ό 곡유

ν•­λͺ© μ •μ˜
원점 (0, 0) μ²΄ν—˜ μ‹œμž‘ 지점 (변동 κ°€λŠ₯μ„± 있음)
λ‹¨μœ„ cm. [x, y] = [100, 50] 이면 μ›μ μ—μ„œ xλ°©ν–₯ 1m, yλ°©ν–₯ 0.5m 지점
μΆ• λ°”λ‹₯ ν‰λ©΄μ˜ x, y 두 μΆ•. λ°©ν–₯은 μΊ˜λ¦¬λΈŒλ ˆμ΄μ…˜ μ‹œ 원점 마컀의 μΆ•μœΌλ‘œ μ •μ˜ (μ „μ‹œμž₯ λ²½κ³Ό μ •ν™•νžˆ ν‰ν–‰ν•˜μ§€ μ•Šμ„ 수 있음)
카메라 천μž₯ 카메라 4λŒ€(51/52/53/54)λ₯Ό 곡톡 μΊ˜λ¦¬λΈŒλ ˆμ΄μ…˜ β€” λͺ¨λ“  카메라가 같은 μ’Œν‘œκ³„ 곡유

μ°Έκ³ 

  • λ§΅ 이미지에 찍으렀면 "μ›”λ“œ cm β†’ λ§΅ ν”½μ…€" λ³€ν™˜μ΄ ν•„μš”ν•  것 κ°™μŠ΅λ‹ˆλ‹€.
  • 각 zone이 μ–΄λŠ μ’Œν‘œμ— μœ„μΉ˜ν•΄ μžˆλŠ”μ§€λ„ ν•„μš”ν•˜μ‹€ 것 κ°™μ€λ°μš”. https://github.com/zero1ne-26/doc/wiki/λ°”λ‹₯μ’Œν‘œκ³„ λ₯Ό λ΄μ£Όμ‹œλ©΄ 될 것 κ°™μŠ΅λ‹ˆλ‹€.

Zone μ •μ˜

μ „μ‹œμž₯ λ‚΄ 5개 ꡬ역 μ •μ˜

zone_id μž₯μ†Œ
vehicle μ°¨λŸ‰
park 곡원
home μ§‘
mart 마트
  • μ–΄λŠ zone 에도 μ†ν•˜μ§€ μ•ŠμœΌλ©΄ zone_id λŠ” none 으둜 λ‚˜κ°‘λ‹ˆλ‹€.

Topic: cctv/person/profile

μ„Έμ…˜μ˜ 주체의 겉λͺ¨μŠ΅μ„ VLM 이 μ€„κΈ€λ‘œ μ„€λͺ…ν•΄ λ°œν–‰ν•©λ‹ˆλ‹€. μ„Έμ…˜ λ‹Ή ν•œ 번 λ°œν–‰λ©λ‹ˆλ‹€.

Payload

{
  "session_id": "abc123",
  "description": "20λŒ€ 초반으둜 λ³΄μ΄λŠ” μ—¬μ„±μœΌλ‘œ, 검은 머리λ₯Ό λ’€λ‘œ λ¬Άμ—ˆλ‹€. 흰색 ν›„λ“œν‹°μ— 검은색 λ°”μ§€, 흰색과 검은색이 μ„žμΈ μš΄λ™ν™”λ₯Ό μ‹ μ—ˆλ‹€. μ•ˆκ²½μ΄λ‚˜ λͺ¨μžλŠ” μ“°μ§€ μ•Šμ•˜κ³  가방은 μ—†λ‹€."
}
ν•„λ“œ νƒ€μž… ν•„μˆ˜ μ„€λͺ…
session_id string Y μ„Έμ…˜ id
description string Y μ™Έν˜• μ„€λͺ…

QoS / 기타 μ„€μ •

ν•­λͺ© λ‚΄μš©
QoS 1
Retain false
기타

Item find

find specific item in cctv using trained network.

Topic: cctv/item/state

cctv둜 home table 에 μžˆλŠ” 물건을 μ‹λ³„ν•˜κ³ , μ˜μ—­ 밖에 μžˆλŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€.

Payload

{
  "I1": 1,
  "I2": 1,
  "I3": 1,
  "I4": 1,
  "I5": 1,
}
ν•„λ“œ νƒ€μž… ν•„μˆ˜ μ„€λͺ…
I1 char Y item 1 states, 0x01 in zone, 0x02 out of zone, 0x03 Null
I2 char Y item 2 states, 0x01 in zone, 0x02 out of zone, 0x03 Null
I3 char Y item 3 states, 0x01 in zone, 0x02 out of zone, 0x03 Null
I4 char Y item 4 states, 0x01 in zone, 0x02 out of zone, 0x03 Null
I5 char Y item 5 states, 0x01 in zone, 0x02 out of zone, 0x03 Null
  • item 1 : λ„μ‹œλ½ν†΅
  • item 2 : λ…ΈνŠΈ
  • item 3 : 파우치
  • item 4 : μœ μΉ˜μ›κ°€λ°©
  • item 5 : ν…€λΈ”λŸ¬

곡원 λ―Έμ…˜ (포켓λͺ¬ 포획 / ν”Œλ‘œκΉ…)

κ³΅μ›μ˜ 포켓λͺ¬ μΈν˜• 3μ’…κ³Ό μ“°λ ˆκΈ°λŠ” 각각 미리 κ·Έλ €λ‘” ꡬ역(zone)을 κ°–μŠ΅λ‹ˆλ‹€. start λ₯Ό 보낸 물건만 νŒλ‹¨ν•˜λ©°, λ―Έμ…˜μ„ μ™„λ£Œν•˜λ©΄ complete λ₯Ό λ°œν–‰ν•©λ‹ˆλ‹€.

Topic: server/pokemon/start

ν•΄λ‹Ή 포켓λͺ¬μ˜ 포획 λ―Έμ…˜μ„ μ‹œμž‘ν•©λ‹ˆλ‹€.

Payload

{
  "session_id": "abc123",
  "pokemon": "psyduck"
}
ν•„λ“œ νƒ€μž… ν•„μˆ˜ μ„€λͺ…
session_id string Y μ„Έμ…˜ id
pokemon string Y ν¬νšν•  포켓λͺ¬ (psyduck, wobbuffet, exeggutor)
κ°’ 의미
psyduck κ³ λΌνŒŒλ•
wobbuffet 마자용
exeggutor λ‚˜μ‹œ

Topic: server/trash/start

μ“°λ ˆκΈ°μ˜ ν”Œλ‘œκΉ… λ―Έμ…˜μ„ μ‹œμž‘ν•©λ‹ˆλ‹€.

Payload

{
  "session_id": "abc123"
}
ν•„λ“œ νƒ€μž… ν•„μˆ˜ μ„€λͺ…
session_id string Y μ„Έμ…˜ id

Topic: cctv/pokemon/complete

포켓λͺ¬μ„ ν¬νšν•˜μ—¬ λ―Έμ…˜μ„ μ™„λ£Œν•˜λ©΄ λ°œν–‰λ©λ‹ˆλ‹€.

Payload

{
  "session_id": "abc123",
  "pokemon": "psyduck"
}
ν•„λ“œ νƒ€μž… ν•„μˆ˜ μ„€λͺ…
session_id string Y μ„Έμ…˜ id
pokemon string Y 포획된 포켓λͺ¬ (psyduck, wobbuffet, exeggutor)

Topic: cctv/trash/complete

μ“°λ ˆκΈ°λ₯Ό μ£Όμ›Œ ν”Œλ‘œκΉ…μ„ μ™„λ£Œν•˜λ©΄ λ°œν–‰λ©λ‹ˆλ‹€.

Payload

{
  "session_id": "abc123"
}
ν•„λ“œ νƒ€μž… ν•„μˆ˜ μ„€λͺ…
session_id string Y μ„Έμ…˜ id

μ°Έκ³ 

vision νŒ€μ—μ„œ 보고 μžˆλŠ” λΉ„μ „μš© λŒ€μ‹œλ³΄λ“œκ°€ λ”°λ‘œ μžˆλŠ”λ°μš”. κ·Έμͺ½μ—μ„œλŠ” μ•„λž˜ 멘트λ₯Ό μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. κ·Έλƒ₯ 참고만 ν•΄μ£Όμ„Έμš”!

λŒ€μƒ start complete
psyduck 주변에 λ…Έλž€μƒ‰ 였리 포켓λͺ¬μΈ κ³ λΌνŒŒλ•μ΄ 좜λͺ°ν–ˆλ‹€! μ‹ λ‚œλ‹€-! κ³ λΌνŒŒλ•μ„ λΆ™μž‘μ•˜λ‹€!
wobbuffet 주변에 νŒŒλž€μƒ‰ μƒŒλ“œλ°± 포켓λͺ¬μΈ 마자용이 좜λͺ°ν–ˆλ‹€! μ‹ λ‚œλ‹€-! λ§ˆμžμš©μ„ λΆ™μž‘μ•˜λ‹€!
exeggutor 주변에 μ•Όμžμˆ˜ 포켓λͺ¬μΈ λ‚˜μ‹œκ°€ 좜λͺ°ν–ˆλ‹€! μ‹ λ‚œλ‹€-! λ‚˜μ‹œλ₯Ό λΆ™μž‘μ•˜λ‹€!
μ“°λ ˆκΈ° 주변에 μ“°λ ˆκΈ°κ°€ μžˆμŠ΅λ‹ˆλ‹€. ν”Œλ‘œκΉ… ν™œλ™μ„ ν•˜λ©΄μ„œ 체λ ₯을 κΈΈλŸ¬λ΄…μ‹œλ‹€! μ“°λ ˆκΈ°λ₯Ό μ£Όμ› λ‹€! 건강도 μ±™κΈ°κ³  ν™˜κ²½λ„ μ±™κΈ°κ³ !

Topic: cctv/person/action

μ‚¬λžŒμ˜ action을 μ‹€μ‹œκ°„μœΌλ‘œ κ°μ§€ν•©λ‹ˆλ‹€.

Payload

{
  "session_id": "abc123",
  "action_label": "squat down"
}
ν•„λ“œ νƒ€μž… ν•„μˆ˜ μ„€λͺ…
session_id string Y μ„Έμ…˜ id
action_label string Y 행동 라벨

μ„œλ²„ μΈ‘ 해석 (2026-09-19) β€” Vision은 κ°μ§€ν•œ λ™μž‘ 1건만 λ°œν–‰ν•˜κ³ , νƒœμŠ€ν¬ μ™„λ£Œ νŒμ •μ—λŠ” κ΄€μ—¬ν•˜μ§€ μ•ŠλŠ”λ‹€. μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜ μ„œλ²„λŠ” type='person_action' νƒœμŠ€ν¬μ— λ§€ν•‘λœ action_labels[]λ₯Ό AND 쑰건으둜 λ³Έλ‹€ β€” λ°°μ—΄μ˜ λ™μž‘μ„ μ „λΆ€ 달성해야 νƒœμŠ€ν¬κ°€ μ™„λ£Œλœλ‹€(μˆœμ„œ 무관, 달성뢄은 μœ μ§€). 달성/미달성 ν˜„ν™©μ€ μ„œλ²„κ°€ νƒœλΈ”λ¦Ώμ— tasks[].action_progress.{cleared,remaining}으둜 내렀보낸닀.

도착 직후 λ¬΄μ‹œ ꡬ간 (2026-09-20) β€” μ„œλ²„λŠ” μ„Έμ…˜μ΄ κ·Έ νƒœμŠ€ν¬μ˜ μž₯μ†Œμ— λ„μ°©ν•œ μ‹œκ°μ„ κΈ°μ€€μœΌλ‘œ, app_settings.person_action_arrival_delay_seconds(κΈ°λ³Έ 5초)κ°€ μ§€λ‚˜κΈ° 전에 μˆ˜μ‹ ν•œ cctv/person/action은 λ¬΄μ‹œν•œλ‹€. 도착 직후 카메라 ν”„λ ˆμž„μ΄ μ•ˆμ •ν™”λ˜κΈ° μ „ μ˜€νƒμœΌλ‘œ νƒœμŠ€ν¬κ°€ λ‘œλ”© 쀑인데도 μ™„λ£Œλœ κ²ƒμ²˜λŸΌ λ³΄μ΄λŠ” 문제λ₯Ό 막기 μœ„ν•¨ β€” Vision μͺ½ λ°œν–‰ 둜직 변경은 ν•„μš” μ—†λ‹€.

μžμ„Έν•œ λ‚΄μš©μ€ μ˜€μΌ€μŠ€νŠΈλ ˆμ΄μ…˜ μ„œλ²„ μŠ€ν‚€λ§ˆλ₯Ό μ°Έκ³ .

action label μ’…λ₯˜

저희 ν”„λ‘œμ νŠΈμ—μ„œ λ‚˜μ˜¬ 수 μžˆλŠ” λΌλ²¨λ“€μž…λ‹ˆλ‹€. μ•„λž˜ 라벨듀 μ™Έμ˜ action은 κ²€μΆœλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€! 행동이 λ³€κ²½λ˜μ—ˆμ„ μ‹œμ—λ§Œ λ°œν–‰λ©λ‹ˆλ‹€.

action label λ™μž‘ μ„€λͺ… μ‚¬μš©λœ 데이터
sitting down μ„œ μžˆλ‹€κ°€ μ•‰λŠ” λ™μž‘ NTU60
standing up (from sitting position) 앉아 μžˆλ‹€κ°€ μΌμ–΄μ„œλŠ” λ™μž‘ NTU60
squat down 슀쿼트처럼 λ¬΄λ¦Žμ„ κ΅½ν˜€ μͺΌκ·Έλ € μ•‰λŠ” λ™μž‘ NTU120
jump up μ œμžλ¦¬μ—μ„œ μœ„λ‘œ 점프 NTU60
hopping (one foot jumping) ν•œ 발둜 폴짝폴짝 λ›°κΈ° NTU60
running on the spot 제자리 λ›°κΈ° NTU120
side kick μ˜†μœΌλ‘œ 발차기 NTU120
kicking something μ•žμœΌλ‘œ 발둜 μ°¨λŠ” λ™μž‘ NTU60
hand waving 손을 쒌우둜 흔듀어 인사 NTU60
cheer up 두 νŒ”μ„ μœ„λ‘œ λ“€κΈ° NTU60
put the palms together 두 손바λ‹₯을 κ°€μŠ΄ μ•žμ— λͺ¨μŒ (ν•©μž₯) NTU60
cross arms νŒ”μ§± 끼기 NTU120
arm circles νŒ”μ„ 크게 μ›μœΌλ‘œ 돌리기 NTU120
arm swings νŒ”μ„ μ•žλ’€λ‘œ 흔듀기 NTU120
stretch oneself κΈ°μ§€κ°œ 켜기 NTU120
touch head (headache) 머리λ₯Ό μ†μœΌλ‘œ 짚음 (두톡) NTU60
touch neck (neckache) λͺ©μ„ μ†μœΌλ‘œ 짚음 (λͺ© κ²°λ¦Ό) NTU60