# Catkin Build Instructions

## Vấn đề

Thư mục này có `CMakeLists.txt` ở root để hỗ trợ **standalone CMake build**. 
Tuy nhiên, **catkin workspace không được phép có CMakeLists.txt ở root**.

Khi chạy `catkin_make` trong thư mục này, bạn sẽ gặp lỗi:
```
The specified base path contains a CMakeLists.txt but "catkin_make" must be invoked in the root of workspace
```

## Giải pháp

### Option 1: Sử dụng script tự động (Khuyến nghị)

```bash
# Chạy script setup
./setup_catkin_workspace.sh

# Build trong workspace mới
cd ../pnkx_nav_catkin_ws
rm -rf build devel
catkin_make -DCMAKE_BUILD_TYPE=RelWithDebInfo \
  -DCMAKE_CXX_FLAGS="-fsanitize=address -fno-omit-frame-pointer" \
  -DCMAKE_C_FLAGS="-fsanitize=address -fno-omit-frame-pointer" \
  -DCMAKE_EXE_LINKER_FLAGS="-fsanitize=address"
source devel/setup.bash
```

### Option 2: Tạo workspace thủ công

```bash
# Tạo workspace
mkdir -p ~/pnkx_nav_catkin_ws/src
cd ~/pnkx_nav_catkin_ws/src

# Link các packages có package.xml
ln -s /path/to/pnkx_nav_core/src/Navigations/Packages/move_base move_base
# ... link các packages khác nếu cần

# Build
cd ~/pnkx_nav_catkin_ws
catkin_make
```

## Build Systems

Project này hỗ trợ **2 build systems**:

1. **Standalone CMake** (mặc định)
   - Build trực tiếp trong thư mục này: `mkdir build && cd build && cmake .. && make`
   - Không cần catkin workspace

2. **Catkin** (cho ROS integration)
   - Cần tạo workspace riêng (xem hướng dẫn trên)
   - Packages tự động detect catkin mode khi build trong workspace

## Chi tiết

Xem `src/Navigations/Packages/move_base/BUILD_INSTRUCTIONS.md` để biết chi tiết về cách build package `move_base` với cả hai hệ thống.


