7.164 CasADi와 로봇 최적화 프레임워크

1. CasADi의 개요

CasADi는 비선형 최적화와 최적 제어를 위한 오픈 소스 소프트웨어 프레임워크로, 안데르손(Andersson) 등이 개발하였다. 기호-수치 혼합(symbolic-numeric) 접근법에 기반하여, 사용자가 수학적 표현으로 최적화 문제를 정의하면, 자동 미분에 의해 야코비안과 헤시안을 생성하고, IPOPT, qpOASES 등의 해법기에 전달하여 풀어내는 파이프라인을 제공한다. Python, MATLAB, C++ 인터페이스를 지원한다.

2. CasADi의 핵심 기능

2.1 기호 표현(Symbolic Expression)

CasADi의 SX(스칼라 기호)와 MX(행렬 기호) 클래스를 이용하여 수학적 함수를 기호적으로 정의한다. 기본 산술, 삼각 함수, 행렬 연산, 조건문 등이 지원된다.

2.2 자동 미분

정의된 기호 함수에 대해 전방 및 역방향 자동 미분을 제공한다. 야코비안, 헤시안, 방향 미분이 자동으로 생성되며, 희소 패턴이 자동으로 탐지된다.

2.3 함수 객체와 코드 생성

기호 표현을 Function 객체로 컴파일하면 수치 평가가 가능하다. C 코드 생성 기능에 의해 임베디드 시스템에서 실행 가능한 효율적 코드를 산출한다. 생성된 코드는 외부 의존성 없이 독립 실행 가능하다.

2.4 NLP 인터페이스

CasADi의 nlpsol 인터페이스는 NLP를 다양한 해법기에 전달한다.

\min_{\mathbf{x}} \quad f(\mathbf{x}) \quad \text{s.t.} \quad \mathbf{g}_{lb} \leq \mathbf{g}(\mathbf{x}) \leq \mathbf{g}_{ub}, \quad \mathbf{x}_{lb} \leq \mathbf{x} \leq \mathbf{x}_{ub}

IPOPT(내점법), SNOPT(SQP), KNITRO 등의 해법기가 플러그인으로 연동된다.

3. 로봇 최적 제어에서의 CasADi 활용

3.1 직접 배치법 구현

CasADi에서 궤적 최적화의 직접 배치법을 구현하는 전형적 절차는 다음과 같다.

  1. 상태 \mathbf{x}, 제어 \mathbf{u}를 기호 변수로 정의
  2. 동역학 함수 \mathbf{f}(\mathbf{x}, \mathbf{u})를 기호 표현으로 구현
  3. 룽게-쿠타 적분기로 이산 동역학 \mathbf{x}_{k+1} = F(\mathbf{x}_k, \mathbf{u}_k) 구성
  4. 비용 함수와 제약을 격자점에 걸쳐 조립
  5. nlpsol로 NLP를 구성하고 IPOPT로 풀기

CasADi가 동역학 함수의 야코비안과 헤시안을 자동으로 생성하므로, 해석적 미분의 유도 없이 효율적 NLP 해법이 가능하다.

3.2 MPC 구현

CasADi에서 MPC는 매 제어 주기에서 NLP를 재구성하고 풀어야 한다. 웜 스타트를 위해 이전 해를 초기 추정으로 전달하고, 초기 상태만 갱신한다. 코드 생성에 의해 온라인 계산이 가속된다.

4. 로봇 최적화 프레임워크 생태계

4.1 acados

CasADi와 긴밀히 연동되는 실시간 최적 제어 프레임워크이다. CasADi로 모델을 정의하고, acados가 RTI-SQP 또는 내점법으로 실시간 해법을 제공한다. 희소 QP 해법(HPIPM), 리카티 재귀, 코드 생성이 통합되어 있다.

4.2 Drake

MIT에서 개발된 로봇 모델링, 시뮬레이션, 최적화 통합 플랫폼이다. 다체 동역학(multibody dynamics), 접촉 역학, 궤적 최적화, MPC가 단일 프레임워크에서 제공된다. SNOPT, IPOPT, Gurobi, MOSEK 등 다수의 해법기가 지원된다.

4.3 Pinocchio + Crocoddyl

Pinocchio는 로봇 동역학의 효율적 계산(순방향/역방향 동역학, 야코비안, 동역학 미분)을 제공하고, Crocoddyl은 Pinocchio에 기반한 궤적 최적화(DDP/iLQR) 프레임워크이다. 접촉 포함 궤적 최적화에 특화되어 있으며, 보행 로봇과 매니퓰레이터의 전신 운동 계획에 활용된다.

4.4 MATLAB Optimization Toolbox / Robotics Toolbox

MATLAB의 fmincon(NLP 해법), quadprog(QP 해법)과 Robotics System Toolbox의 결합이 교육 및 프로토타이핑에 사용된다. CasADi의 MATLAB 인터페이스와의 연동도 가능하다.

5. 프레임워크 선택 지침

목적권장 프레임워크
비선형 MPC 프로토타이핑CasADi + IPOPT
실시간 임베디드 MPCacados (코드 생성)
접촉 포함 궤적 최적화Crocoddyl / Drake
전신 운동 제어(QP)Pinocchio + qpOASES/OSQP
로봇 학습 + 미분 가능 시뮬레이션JAX / PyTorch + 미분 가능 시뮬레이터
교육/프로토타이핑MATLAB / CasADi(Python)

6. 참고 문헌

  • Andersson, J. A. E., Gillis, J., Horn, G., Rawlings, J. B., & Diehl, M. (2019). “CasADi: A Software Framework for Nonlinear Optimization and Optimal Control.” Mathematical Programming Computation, 11(1), 1–36.
  • Verschueren, R., et al. (2022). “acados — A Modular Open-Source Framework for Fast Embedded Optimal Control.” Mathematical Programming Computation, 14, 147–183.
  • Carpentier, J., et al. (2019). “The Pinocchio C++ Library — A Fast and Flexible Implementation of Rigid Body Dynamics Algorithms and Their Analytical Derivatives.” IEEE International Symposium on System Integration (SII), 614–619.
  • Mastalli, C., et al. (2020). “Crocoddyl: An Efficient and Versatile Framework for Multi-Contact Optimal Control.” Proceedings of ICRA, 2536–2542.

version: 1.0