티스토리 뷰

Trajectory optimization(TO)을 몇달간 공부하고 사용하면서 알게 된 사실들을 조금 정리해보려 한다. 분명 강력한 오프라인 플래너지만 확실히 한계점도 존재한다. 이제는 벌써 트렌드와는 멀어진 기술이지만 개인적으로 학습 기반으로 넘어가기 전에 Trajectory optimization과 MPC는 해보고 가는 게 좋다 생각했다. 나처럼 TO를 처음 접하고 고통 받는 사람들을 위해 명확한 사실은 아니지만, 대충 내가 느낀 걸 적어본다.

​1. 스케일 Down to 스케일 Up

모든 문제 해결의 시작은 단순화이다. TO 문제 또한 가장 먼저 문제를 단순화시키고 단순화 된 문제에서 원하는 해결책을 찾았다면 그 다음 조금씩 Scale up 한다. 단순화 하는 방법으로는 차원 줄이기, 제약 사항 늘리기, 로봇 형상 단순화하기 등이 있다. 차원을 줄여서 먼저 해결하는 것이 가장 편하고 보스턴 다이나믹스 처럼 로봇 자체의 형상을 구, 상자 등의 모양으로 단순화 하는 방법도 있다. 여기서 잘 되는 경우 조금씩 디테일과 복잡함을 추가하여 문제를 접근한다. 안그러면 나중에 디버깅이 불가능해진다.

2. 모델 기반이라는 한계점과 장점

우선 모델 기반이라는 사실은 장점이 될 수도 단점이 될 수도 있다. 실제 최적화 문제의 제약조건으로 Kinematics와 Dynamics를 넣게 되는데, 만약 내가 모델에 대한 완벽한 Kinematics과 Dynamics을 알고 있다면 최적화 문제는 생각보다 쉬워진다. 이것은 분명히 장점이다. 내가 원하는 동작이 명확한데 그에 맞는 움직임이 나오지 않는다고 생각이 든다면, 빼먹지 않은 Kinematics, Dynamics 제약 조건이 없는 지 고민해봐야 한다. 기본적으로 Time step으로 실행되기 때문에 위 두 제약 조건이 없을 경우 로봇 동작이 매우 이상해져서 다른 제약조건들을 전부 위반하는 경우가 대다수이다.

3. 목적 함수 조정하기

개인적으로 TO와 RL의 근본적인 차이는 없다 생각한다. 어쨌든 둘 다 일종의 최적화 방식을 취하는 형태이고 그 방향이 목적함수에 의해 결정된다. 따라서 TO에서도 목적 함수를 잘 만드는 것이 좋다. Bilevel optimization을 굳이 사용하지 않아도 이와 비슷한 작동을 하도록 만드는 목적함수를 만들 수도 있다. 목적 함수 형태로 유명한 것은 Mayer 형태와 Bolza 형태가 있다. Mayer 형태는 목적함수가 종료 시점에만 의존하는 경우를 말한다. 시스템 상태 및 제어 입력이 마지막 시점에만 평가되는 형태인데, 종료 상황에서의 로봇 테스크가 중요한 경우 사용한다. Bolza 형태는 Mayer 형태를 일반화한 것이다. 종료 시점에서의 비용과 경로에 대한 누적 비용까지 고려한다. 따라서 종료 시점과 그 경로 사이의 중요도 비율을 조절할 수 있다. 따라서 더 일반적인 Bolza 형태에서 종료 시점과 경로에 대한 파라미터만 조절하여 원하는 결과를 얻도록 할 수 있다.

4. Contact과 함께 사용할 경우

TO에 Contact이 들어가는 경우 다른 TO보다 조금 더 복잡해진다, Contact의 갯수와 발생 하는 힘의 방향들, 힘에 의한 물체와 로봇에 작용하는 토크를 고려해야 한다. Contact을 고려한 TO의 기본적인 방법은 2가지가 있다.

(A). A Direct Method for Trajectory Optimization of Rigid Bodies Through Contact by Michael Posa

(B). GPOPS-II: A MATLAB software for solving multiple-phase optimal control problems using hp-adaptive Gaussian quadrature collocation methods and sparse nonlinear programming by Anil Rao

나의 경우 Direct transcription method인 (A), Michael Posa 교수님의 접근법을 기초로 두고 시작했는데, (A)와 (B)에는 장단점이 있다.

A의 경우 최적화 문제를 구성하고 해결하기 어렵지만, 방법 자체가 유연하기 때문에 복잡한 시스템에서도 작동할 수 있다.

B의 경우 빠르고 정확하지만 Contact 시퀀스를 미리 알아야 한다. (이는 복잡한 시스템의 경우 불가능해서 패스했다)

요약하자면, 모델을 매우 잘 세우고 문제를 단순화하여 접근한 후 조금씩 스케일 업하여 풀면 된다. (A) 논문을 구현 후 간단한 문제를 돌려보는 걸 추천한다.


참고자료

https://www.matthewpeterkelly.com/ 와 위 논문들

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31