소개
Codac은 C++, Python, MATLAB용 라이브러리로, 실수, 벡터, 궤적, 불확실 집합 등에 대한 구간 계산과 제약 프로그래밍 도구를 제공합니다. 주로 매개변수 추정, 보장된 적분, 로봇 국소화 등에 사용되며, 해를 엄격하게 경계하여 해를 놓치지 않음과 동시에 가능한 모든 해를 포착하는 신뢰성 있는 결과를 제공합니다. 이 라이브러리는 모바일 로봇 분야의 연구자들을 중심으로 개발되었으며, 비선형 및 미분 시스템의 가능한 해 집합을 근사하는 데 활용됩니다. 공식 웹사이트는 http://codac.io이며, GitHub 저장소는 https://github.com/codac-team/codac입니다.
상세정보
구간 기반 해 근사
Codac은 비선형 방정식 시스템의 해 집합을 초기 박스로부터 시작하여 이분법을 통해 정밀도를 조절하면서 박스들의 집합으로 근사합니다. 예를 들어, 방정식 시스템의 해를 구할 때 초기 박스 [0,2]×[2,4]×[0,10]에서 정밀도 ε=4×10⁻³로 설정하여 3624개의 비중첩 박스로 해 집합을 근사할 수 있습니다.
불등식 시스템 처리
방정식뿐만 아니라 형태 f(x) ∈ [y]와 같은 일반적인 제약 조건도 처리할 수 있습니다. 예를 들어, x₁cos(x₁−x₂)+x₂ ≤ 0을 만족하는 벡터 x∈ℝ²의 집합을 [-10,10]×[-10,10] 초기 영역에서 정밀도 0.004로 근사하여 해 집합을 초록색 박스로, 해가 없는 영역을 파란색으로 시각화할 수 있습니다.
다중 언어 지원
Codac은 C++, Python, MATLAB 인터페이스를 모두 제공하여 사용자가 익숙한 언어로 라이브러리를 활용할 수 있습니다. 공식 문서에는 각 언어별 설치 및 사용 예시가 상세히 제공됩니다.
다운로드 및 설치 방법
Codac은 소스 코드 형태로 GitHub 저장소에서 제공됩니다. 설치를 위해서는 저장소를 클론하거나 ZIP 파일로 다운로드한 후, 공식 문서에 따라 각 언어별 빌드 및 설치 절차를 따라야 합니다. Windows 사용자의 경우, C++ 컴파일러와 필요한 의존성 라이브러리(Eigen 등)를 사전에 설치해야 하며, Python 및 MATLAB 바인딩을 사용하려면 각각의 환경 설정이 필요합니다.
기본 사용법
라이브러리를 사용하기 위해서는 먼저 적절한 네임스페이스를 포함하고, 변수와 함수를 정의한 후, 적절한 계약자(Contractor) 또는 분리자(Separator)를 생성하여 페이빙 알고리즘에 적용해야 합니다. 예를 들어, Python에서는 from codac import *로 시작하여 VectorVar와 AnalyticFunction을 정의하고, CtcInverse 또는 SepInverse를 사용하여 해 집합을 근사할 수 있습니다. 자세한 사용법과 예시는 공식 문서의 ‘Short example’ 섹션에 제공됩니다.
이런 경우에 유용합니다
로봇 국소화나 SLAM과 같이 센서 데이터로부터 로봇의 위치를 추정해야 하는 상황에서, 측정 불확실성을 고려한 신뢰성 있는 경계를 계산하는 데 Codac을 사용할 수 있습니다. 또한, 매개변수 추정 문제에서 관측 데이터와 모델 간의 차이를 구간으로 표현하여 모든 가능한 매개변수 값을 보장하는 데 유용합니다. 미분 방정식의 해를 수치적으로 구할 때 전통적인 방법이 발산하거나 부정확한 결과를 줄 수 있는 경우, Codac은 해 집합에 대한 엄격한 경계를 제공하여 신뢰성 있는 결과를 얻을 수 있도록 도와줍니다.
지원 환경·시스템 요구사항
Codac은 C++11 이상의 표준을 준수하는 컴파일러가 필요하며, 선형 대수 연산을 위해 Eigen 라이브러리를 사용합니다. Python 바인딩을 사용하기 위해서는 Python 3.x와 NumPy가 필요하며, MATLAB 바인딩은 최근 버전의 MATLAB과 호환됩니다. Windows 환경에서는 Visual Studio와 같은 C++ 컴파일러 도구 체인이 필요하며, 의존성 패키지 관리를 위해 vcpkg 또는 유사한 도구의 사용이 권장됩니다.
최신 버전·업데이트
현재 버전은 1.5.7.20250626이며, 이 버전은 2025년 6월 26일에リリース되었습니다. 최신 변경 사항 및 업데이트 내역은 GitHub 저장소의リリース 페이지에서 확인할 수 있습니다.
제한 사항·확인 사항
Codac은 순수 소프트웨어 라이브러리로서 독립적으로 실행되는 애플리케이션이 아니므로, 사용자가 직접 코드를 작성하여 라이브러리를 호출해야 합니다. 또한, 구간 계산의 특성상 높은 정밀도를 요구할 경우 계산 시간이 증가할 수 있으며, 매우 복잡한 시스템의 경우 메모리 사용량이 크게 늘어날 수 있습니다. 라이선스는 LGPL-3.0이므로, proprietary 소프트웨어에 통합할 경우 해당 라이선스 조항을 준수해야 합니다.
시스템 요구사항
별도의 시스템 요구사항이 등록되지 않았습니다.


