Skip to content

khj0504/bt_xml_diff_tool

Repository files navigation

🌳 BehaviorTree XML Diff Tool

κ°•λ ₯ν•œ BehaviorTree XML ꡬ쑰 비ꡐ 및 μ‹œκ°ν™” 도ꡬ

πŸ“‹ κ°œμš”

BehaviorTree XML 파일의 ꡬ쑰적 차이점을 λΆ„μ„ν•˜κ³  μ‹œκ°ν™”ν•˜λŠ” 쒅합적인 λ„κ΅¬μž…λ‹ˆλ‹€.

  • Git 브랜치 κ°„ BehaviorTree XML 파일 변경사항 뢄석
  • 직접 XML 파일 비ꡐ ⭐️ NEW!
  • μΈν„°λž™ν‹°λΈŒν•œ D3.js 트리 μ‹œκ°ν™” 제곡

✨ μ£Όμš” κΈ°λŠ₯

  • πŸ” Git 브랜치 κ°„ BehaviorTree XML 비ꡐ
  • πŸ“ XML 파일 직접 비ꡐ ⭐️ NEW!
  • 🎯 μ •ν™•ν•œ ꡬ쑰적 변경사항 감지 (μΆ”κ°€/μ‚­μ œ/μˆ˜μ •λœ λ…Έλ“œ)
  • 🌲 μΈν„°λž™ν‹°λΈŒ 트리 μ‹œκ°ν™” (D3.js 기반)
  • 🎨 색상 μ½”λ”©λœ 변경사항 (빨간색: μ‚­μ œ, μ΄ˆλ‘μƒ‰: μΆ”κ°€, λ…Έλž€μƒ‰: μˆ˜μ •)
  • πŸ“Š SubTree ν™•μž₯ 및 뢄석
  • πŸš€ λ‚΄μž₯ HTTP μ„œλ²„λ‘œ μ¦‰μ‹œ κ²°κ³Ό 확인
  • πŸ–₯️ μžλ™ λΈŒλΌμš°μ € μ‹€ν–‰

πŸš€ λΉ λ₯Έ μ‹œμž‘

μ„€μΉ˜

cd /home/khj/colcon_ws/src/bt_xml_diff_tool
./setup.sh

μ‚¬μš©λ²•

1. XML 파일 직접 비ꡐ ⭐️ μΆ”μ²œ!

# 두 XML 파일 비ꡐ
python3 enhanced_branch_analyzer.py files old_tree.xml new_tree.xml

# 좜λ ₯ 파일λͺ… μ§€μ •
python3 enhanced_branch_analyzer.py files tree_v1.xml tree_v2.xml -o my_result.html

2. Git 브랜치 비ꡐ

# μžλ™ν™”λœ 슀크립트 μ‹€ν–‰ (μΆ”μ²œ)
./run_analysis.sh main feature-branch

# λ˜λŠ” Python 직접 μ‹€ν–‰
python3 enhanced_branch_analyzer.py branches main feature-branch

πŸš€ λΉ λ₯Έ μ‹œμž‘# 브랜치 κ°„ 전체 BehaviorTree 뢄석 (ꢌμž₯)

bt-enhanced-branch develop feature-branch -o 뢄석결과.html

1. μ„€μΉ˜ 및 μ„€μ •

단일 파일 비ꡐ


# 1. ν”„λ‘œμ νŠΈ λ‹€μš΄λ‘œλ“œ

git clone <repository_url> bt_xml_diff_tool# Git 브랜치 기반 파일 비ꡐ

cd bt_xml_diff_toolbt-git-diff path/to/file.xml branch1 branch2 -o result.html

2. μ„€μ • μ‹€ν–‰ (μ˜μ‘΄μ„± 확인 및 κΆŒν•œ μ„€μ •)

./setup.sh## ✨ μ£Όμš” κΈ°λŠ₯


- πŸ” **μžλ™ BehaviorTree 파일 감지**: Git λΈŒλžœμΉ˜μ—μ„œ λ³€κ²½λœ λͺ¨λ“  BT 파일 μžλ™ 뢄석

### 2. μ‚¬μš©λ²•- 🌲 **μ„œλΈŒνŠΈλ¦¬ 변경사항 ν•˜μ΄λΌμ΄νŠΈ**: SubTree λ…Έλ“œ 변경사항 μ „μš© μ‹œκ°ν™”

- 🎨 **λŒ€ν™”ν˜• D3.js μ‹œκ°ν™”**: 쀌/팬 κ°€λŠ₯ν•œ 트리 λ‹€μ΄μ–΄κ·Έλž¨  

#### 🎯 원클릭 뢄석 (μΆ”μ²œ)- ⚑ **μ‹€μ‹œκ°„ μ• λ‹ˆλ©”μ΄μ…˜**: λ³€κ²½λœ λ…Έλ“œμ— νŽ„μŠ€ 효과

- πŸ“Š **포괄적 리포트**: HTML 기반 상세 뢄석 λ³΄κ³ μ„œ

```bash- πŸŽ›οΈ **μΈν„°λž™ν‹°λΈŒ 컨트둀**: 쀌, 필터링, λ“œλž˜κ·Έ 지원

# κΈ°λ³Έ μ‚¬μš©λ²•

./run_analysis.sh <source_branch> <target_branch>## πŸ“‚ 파일 ꡬ쑰



# μ˜ˆμ‹œ### 🌟 핡심 파일

./run_analysis.sh develop feature-bt-tree-viz- `enhanced_branch_analyzer.py` - 메인 브랜치 뢄석 도ꡬ

- `bt_tree_parser.py` - BehaviorTree XML νŒŒμ„œ

# κ³ κΈ‰ μ˜΅μ…˜- `bt_tree_comparator.py` - 트리 ꡬ쑰 비ꡐ

./run_analysis.sh develop feature-branch -o my_analysis.html -p 8090- `git_bt_diff.py` - Git 톡합 κΈ°λŠ₯

```- `tree_visualizer_enhanced.py` - D3.js μ‹œκ°ν™”

- `setup.sh` - μ„€μΉ˜ 슀크립트

μ‹€ν–‰ν•˜λ©΄ μžλ™μœΌλ‘œ:

1. 브랜치 κ°„ 변경사항 뢄석### πŸ“– λ¬Έμ„œ

2. HTML κ²°κ³Ό 생성- `README.md` - ν”„λ‘œμ νŠΈ κ°œμš”

3. HTTP μ„œλ²„ μ‹œμž‘- `USAGE_GUIDE.md` - 상세 μ‚¬μš©λ²• κ°€μ΄λ“œ

4. λΈŒλΌμš°μ €μ—μ„œ `http://localhost:8080/result.html` 접속 κ°€λŠ₯

## 🎯 μ‚¬μš© μ˜ˆμ‹œ

#### πŸ”§ 단계별 μ‹€ν–‰

```bash

```bash# 개발 λΈŒλžœμΉ˜μ™€ ν”Όμ²˜ 브랜치 비ꡐ

# 1. 뢄석 μ‹€ν–‰cd /your/bt/repository

python3 enhanced_branch_analyzer.py <source_branch> <target_branch> -o result.htmlbt-enhanced-branch develop feature-new-navigation -o nav_changes.html



# 2. μ„œλ²„ μ‹œμž‘# νŠΉμ • BehaviorTree 파일 브랜치 κ°„ 비ꡐ

./start_server.sh [port]bt-git-diff behavior_trees/main.xml main feature-branch -o main_tree_diff.html

3. λΈŒλΌμš°μ €μ—μ„œ 확인

http://localhost:8080/result.html## πŸ“‹ μš”κ΅¬μ‚¬ν•­


- Python 3.6+

## πŸ“Š 뢄석 κ²°κ³Ό ν™”λ©΄- Git (브랜치 λΆ„μ„μš©)

- λͺ¨λ˜ μ›Ή λΈŒλΌμš°μ € (HTML λ³΄κ³ μ„œ ν™•μΈμš©)

μƒμ„±λœ HTML νŒŒμΌμ—μ„œ λ‹€μŒμ„ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€:

## πŸ“ž 지원

### 🎨 색상 μ½”λ“œ

- πŸ”΄ **빨간색**: μ‚­μ œλœ λ…Έλ“œμžμ„Έν•œ μ‚¬μš©λ²•μ€ `USAGE_GUIDE.md`λ₯Ό μ°Έμ‘°ν•˜μ„Έμš”.

- 🟒 **μ΄ˆλ‘μƒ‰**: μΆ”κ°€λœ λ…Έλ“œ  

- 🟑 **λ…Έλž€μƒ‰**: μˆ˜μ •λœ λ…Έλ“œ---

- πŸ”΅ **νŒŒλž€μƒ‰**: μ΄λ™λœ λ…Έλ“œ*ROBOTISμ—μ„œ κ°œλ°œν•œ BehaviorTree 뢄석 도ꡬ*
- βšͺ **νšŒμƒ‰**: λ³€κ²½λ˜μ§€ μ•Šμ€ λ…Έλ“œ

### πŸ“‹ 뢄석 정보
- **λ³€κ²½ 톡계**: 총 λ³€κ²½ 파일 수, ꡬ쑰적 변경사항 수
- **νŒŒμΌλ³„ 상세**: 각 BT 파일의 λ³€κ²½ λ‚΄μ—­
- **μΈν„°λž™ν‹°λΈŒ 트리**: 쀌, 팬, 툴팁 지원

## πŸ› οΈ κ³ κΈ‰ μ‚¬μš©λ²•

### λͺ…λ Ήν–‰ μ˜΅μ…˜

```bash
# enhanced_branch_analyzer.py μ˜΅μ…˜
python3 enhanced_branch_analyzer.py <source> <target> [options]

Options:
  -o, --output FILE    좜λ ₯ HTML 파일λͺ… (κΈ°λ³Έ: enhanced_analysis_result.html)
  -h, --help          도움말 ν‘œμ‹œ

# run_analysis.sh μ˜΅μ…˜  
./run_analysis.sh <source> <target> [options]

Options:
  -o, --output FILE    좜λ ₯ HTML 파일λͺ… (κΈ°λ³Έ: bt_diff_result.html)
  -p, --port PORT     HTTP μ„œλ²„ 포트 (κΈ°λ³Έ: 8080)
  -h, --help          도움말 ν‘œμ‹œ

μ„œλ²„ 관리

# νŠΉμ • 포트둜 μ„œλ²„ μ‹œμž‘
./start_server.sh 8090

# μ„œλ²„ 쀑지
Ctrl+C λ˜λŠ” ν„°λ―Έλ„μ—μ„œ kill

πŸ“ ν”„λ‘œμ νŠΈ ꡬ쑰

bt_xml_diff_tool/
β”œβ”€β”€ enhanced_branch_analyzer.py    # 메인 뢄석 도ꡬ
β”œβ”€β”€ bt_tree_parser.py             # XML νŒŒμ‹± λͺ¨λ“ˆ
β”œβ”€β”€ bt_tree_comparator.py         # ꡬ쑰 비ꡐ λͺ¨λ“ˆ  
β”œβ”€β”€ tree_visualizer_enhanced.py   # μ‹œκ°ν™” λͺ¨λ“ˆ
β”œβ”€β”€ git_bt_diff.py               # Git 톡합 λͺ¨λ“ˆ
β”œβ”€β”€ run_analysis.sh              # 원클릭 μ‹€ν–‰ 슀크립트
β”œβ”€β”€ start_server.sh              # HTTP μ„œλ²„ μ‹œμž‘ 슀크립트
β”œβ”€β”€ setup.sh                     # μ„€μΉ˜ 및 μ„€μ • 슀크립트
β”œβ”€β”€ README.md                    # 이 파일
└── USAGE_GUIDE.md              # 상세 μ‚¬μš© κ°€μ΄λ“œ

πŸ”§ μ‹œμŠ€ν…œ μš”κ΅¬μ‚¬ν•­

  • Python 3.6+
  • Git
  • μ›Ή λΈŒλΌμš°μ € (Chrome, Firefox, Safari λ“±)

Python λͺ¨λ“ˆ (ν‘œμ€€ 라이브러리)

  • xml.etree.ElementTree
  • json, subprocess, pathlib
  • typing, dataclasses, enum

🎯 μ‚¬μš© μ˜ˆμ‹œ

μ˜ˆμ‹œ 1: Feature 브랜치 뢄석

./run_analysis.sh main feature-new-bt-structure

μ˜ˆμ‹œ 2: μ»€μŠ€ν…€ 좜λ ₯ 파일

./run_analysis.sh develop hotfix-bt-issue -o hotfix_analysis.html

μ˜ˆμ‹œ 3: λ‹€λ₯Έ 포트둜 μ„œλ²„ μ‹€ν–‰

./run_analysis.sh main feature-branch -p 9000

🚨 문제 ν•΄κ²°

Git μ €μž₯μ†Œκ°€ μ•„λ‹Œ 경우

⚠️  Warning: Not in a Git repository

ν•΄κ²°μ±…: Git μ €μž₯μ†Œ 디렉토리 λ‚΄μ—μ„œ 도ꡬλ₯Ό μ‹€ν–‰ν•˜μ„Έμš”.

Python λͺ¨λ“ˆ λˆ„λ½

❌ Missing required Python modules

ν•΄κ²°μ±…: Python 3.6+ μ„€μΉ˜ ν›„ ./setup.sh μž¬μ‹€ν–‰

포트 μ‚¬μš© 쀑 였λ₯˜

OSError: [Errno 98] Address already in use

ν•΄κ²°μ±…: λ‹€λ₯Έ 포트 μ‚¬μš© λ˜λŠ” κΈ°μ‘΄ ν”„λ‘œμ„ΈμŠ€ μ’…λ£Œ

pkill -f "python3 -m http.server"
./start_server.sh 8081

About

BehaviorTree XML Diff Tool with Enhanced Visualization

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors