κ°λ ₯ν 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# λ 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# μλνλ μ€ν¬λ¦½νΈ μ€ν (μΆμ²)
./run_analysis.sh main feature-branch
# λλ Python μ§μ μ€ν
python3 enhanced_branch_analyzer.py branches main feature-branchbt-enhanced-branch develop feature-branch -o λΆμκ²°κ³Ό.html
# 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
./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
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 λλ ν°λ―Έλμμ killbt_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 λ±)
xml.etree.ElementTreejson,subprocess,pathlibtyping,dataclasses,enum
./run_analysis.sh main feature-new-bt-structure./run_analysis.sh develop hotfix-bt-issue -o hotfix_analysis.html./run_analysis.sh main feature-branch -p 9000β οΈ Warning: Not in a Git repository
ν΄κ²°μ± : Git μ μ₯μ λλ ν 리 λ΄μμ λꡬλ₯Ό μ€ννμΈμ.
β 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