- Important note (July 2021): this library is currently only scarcely maintained,
- it may take a while until we respond to bugs or feature requests.
이것은 로봇 공학의 제어, 추정, 최적화 및 동작 계획을 위한 효율적인 C++ 라이브러리인 Control Toolbox입니다.
위키 링크, 빠른 시작!
여기에서 자세한 문서를 찾아보세요.
이는 효율적인 모델링, 제어, 추정, 궤적 최적화 및 모델 예측 제어를 위한 오픈 소스 C++ 라이브러리인 ADRL Control Toolbox('CT')입니다. CT는 광범위한 동적 시스템에 적용할 수 있지만 로봇공학을 위해 특별히 설계된 추가 모델링 도구도 갖추고 있습니다. 이 페이지에서는 일반적인 개념과 주요 구성 요소에 대해 간략하게 설명하고 선택된 응용 사례를 강조합니다.
라이브러리에는 컨트롤러를 설계 및 평가하고, 동적 시스템을 모델링하고, 최적의 제어 문제를 해결하는 여러 도구가 포함되어 있습니다. CT는 다음 기능을 염두에 두고 설계되었습니다.
시스템 및 역학 :
궤적 최적화, 최적 제어 및 (비선형) 모델 예측 제어 :
성능 :
로봇 모델링, 강체 운동학 및 동역학 :
자동 차별화 :
Control Toolbox는 비행, 걷기 및 지상 로봇의 하드웨어 및 시뮬레이션 제어 작업에 사용되었습니다.
네 발 달린 동물의 보행 최적화를 포함하여 약간 더 복잡한 최적화 예제를 ct_ros에서 사용할 수 있습니다.
제어 및 로봇 공학 커뮤니티의 연구자 및 실무자의 공통 작업은 시스템을 모델링하고, 운동 방정식을 구현하고, 모델 기반 컨트롤러, 추정기, 계획 알고리즘 등을 설계하는 것입니다. 조만간 효율적인 구현에 대한 질문에 직면하게 됩니다. , 파생 정보 계산, 비용 함수 및 제약 조건 공식화 또는 모델 예측 제어 방식으로 컨트롤러 실행.
Control Toolbox는 이러한 작업을 위해 특별히 설계되었습니다. 이는 전적으로 C++로 작성되었으며 로봇이나 기타 작동 하드웨어에서 온라인(루프 내)으로 실행될 수 있는 매우 효율적인 코드에 중점을 두고 있습니다. CT의 주요 기여는 단순한 LQR 참조 구현에서 제한된 모델 예측 제어에 이르는 최적의 제어 알고리즘을 구현하는 것입니다. CT는 자동 미분(Auto-Diff)을 지원하며 임의의 스칼라 및 벡터 값 함수에 대한 파생 코드를 생성할 수 있습니다. 우리는 유용성을 염두에 두고 도구 상자를 설계하여 사용자가 최소한의 노력으로 비선형 모델 예측 제어(NMPC) 또는 수치적 최적 제어와 같은 고급 개념을 쉽게 적용할 수 있도록 했습니다. 우리는 최첨단 Auto-Diff 호환 로봇 모델링 소프트웨어에 대한 인터페이스를 제공하지만 다른 모든 모듈은 특정 모델링 프레임워크와 독립적이므로 코드가 기존 C/C++ 코드 또는 라이브러리와 인터페이스될 수 있습니다.
CT는 수많은 하드웨어 실험, 시연 및 학술 출판물을 포함하여 다양한 프로젝트에서 성공적으로 사용되었습니다. 하드웨어 응용 프로그램의 예로는 충돌 회피를 통한 온라인 궤도 최적화 cite giftthaler2017autodiff, Quadrupeds cite Neunert:2017:ral 및 모바일 조작기 cite giftthaler2017효율적 및 지상 로봇의 NMPC cite neneunert2017mpc 및 UAV cite neneunert16hexrotor에 대한 궤도 최적화가 있습니다. 이 프로젝트는 ETH Zurich의 Agile & Dexterous Robotics Lab에서 수행된 연구에서 시작되었지만 더 많은 응용 프로그램 및 알고리즘 분야를 포괄하도록 지속적으로 확장되었습니다.
소프트웨어는 로봇 시스템의 핵심 구성 요소 중 하나이며 로봇 공학을 위한 소프트웨어 도구와 라이브러리를 만드는 데 많은 노력을 기울이고 있습니다. 그러나 제어, 특히 수치적 최적 제어와 관련하여 빠른 개발을 위해 사용하기 쉽고 온라인 사용에 충분히 효율적인 오픈 소스 도구는 많지 않습니다. 수치적 최적 제어 및 궤적 최적화를 위한 성숙한 도구 상자가 있지만 이는 다른 응용 프로그램에 충분한 유연성을 제공하지 못하는 고도로 전문화된 독립형 도구입니다. CT가 개입하는 곳은 바로 여기입니다. CT는 제어 방법의 빠른 개발 및 평가에 필요한 도구를 제공하는 동시에 온라인 작업을 허용하는 효율성을 위해 최적화되도록 처음부터 설계되었습니다. 제어에 중점을 두지만 제공된 도구는 시뮬레이션, 추정 또는 최적화 애플리케이션에도 사용할 수 있습니다.
다른 로봇 소프트웨어와 달리 CT는 견고한 통합 애플리케이션이 아니지만 문자 그대로 도구 상자로 볼 수 있습니다. 이는 당면한 작업을 해결하기 위해 사용하고 결합할 수 있는 다양한 도구를 제공합니다. 설계 및 적용 사례가 제공되는 동안 사용 편의성이 주요 기준이 되었지만 CT를 사용하려면 여전히 프로그래밍 및 제어 지식이 필요합니다. 그러나 이를 통해 사용자는 선형 대수 또는 수치 방법에 대한 심층적인 경험이 필요한 표준 방법을 구현할 필요가 없습니다. 또한 공통 정의 및 유형을 사용하여 시스템, 컨트롤러 또는 통합 장치와 같은 다양한 구성 요소 간의 원활한 통합이 제공되므로 빠른 프로토타이핑이 가능합니다.
CT의 주요 초점은 효율성입니다. 이것이 바로 CT가 C++로 완전히 구현되는 이유입니다. CT는 통합 애플리케이션이 아닌 도구 상자로 설계되었으므로 사용자에게 최대한의 유연성을 제공하려고 노력했습니다. 따라서 ROS 등 특정 미들웨어에 얽매이지 않고 의존성을 최소한으로 유지합니다. CT의 두 가지 필수 종속성은 Eigen과 Kindr(Eigen을 기반으로 함)입니다. 이러한 Eigen 종속성은 의도적인 것입니다. Eigen은 표준 행렬 연산과 고급 선형 대수 방법의 매우 효율적인 구현을 제공하기 때문에 C++의 선형 대수학에 대한 사실상의 표준이기 때문입니다. Kindr는 그 위에 구축되어 쿼터니언, 오일러 각도 또는 회전 행렬과 같은 다양한 회전 표현에 대한 데이터 유형을 제공하는 헤더 전용 운동학 라이브러리입니다.
제어 도구 상자는 세 가지 주요 모듈로 구성됩니다. 코어( ct_core
) 모듈, 최적 제어( ct_optcon
) 모듈 및 강체 역학( ct_rbd
) 모듈. 모듈 사이에는 명확한 계층 구조가 있습니다. 즉, 모듈은 이 순서대로 서로 의존합니다. 예를 들어 optcon 또는 rbd 모듈 없이 핵심 모듈을 사용할 수 있습니다.
ct_core
) 모듈은 일반적인 유형 정의와 수학 도구를 제공합니다. 예를 들어, 여기에는 대부분의 데이터 유형 정의, 시스템 및 컨트롤러에 대한 정의는 물론 미분 방정식에 대한 수치 적분기와 같은 기본 기능이 포함되어 있습니다.ct_optcon
) 모듈은 핵심 모듈 위에 구축되며 최적 제어 문제를 정의하고 해결하기 위한 인프라를 추가합니다. 여기에는 비용 함수, 제약 조건, 솔버 백엔드 및 일반 MPC 래퍼를 정의하는 기능이 포함되어 있습니다.ct_rbd
) 모듈은 강체 역학 시스템을 모델링하기 위한 도구와 ct_core
및 ct_optcon
데이터 유형이 있는 인터페이스를 제공합니다. 테스트와 예제를 위해 4족 보행, 로봇 팔, 일반 쿼드로터 및 슬렁 로드가 있는 쿼드로터를 포함한 다양한 로봇 모델이 포함된 모델 모듈( ct_models
)도 제공합니다.
네 가지 주요 모듈은 다음과 같습니다.
제어 도구 상자를 시작하려면 doxygen을 사용하여 저장소 문서를 구축하고 "시작하기" 튜토리얼을 따르십시오.
이 소프트웨어는 2014년부터 2018년까지 스위스 취리히 공과대학(ETH Zurich)의 Agile & Dexterous Robotics Lab에서 개발되었습니다. 그 기간 동안 스위스 국립과학재단(SNF)의 재정 지원을 통해 Jonas에게 SNF 교수직 상을 수여함으로써 개발이 가능해졌습니다. Buchli와 NCCR(National Competence Centers in Research) 로봇 공학 및 디지털 제작.
Control Toolbox는 BSD-2 조항 라이센스에 따라 출시됩니다. LICENCE.txt 및 NOTICE.txt를 참조하세요.
@article{adrlCT,
title={The control toolbox — An open-source C++ library for robotics, optimal and model predictive control},
author={Markus Giftthaler and Michael Neunert and Markus St{"a}uble and Jonas Buchli},
journal={2018 IEEE International Conference on Simulation, Modeling, and Programming for Autonomous Robots (SIMPAR)},
year={2018},
pages={123-129}
}
v2.3까지의 이전 버전은 bitbucket에서 호스팅되며 https://bitbucket.org/adrlab/ct/wiki/Home에서 찾을 수 있습니다.
이 도구 상자는 다음 학술 출판물에 사용되었거나 실현하는 데 도움이 되었습니다.
마르쿠스 기프탈러, 미하엘 노이네르트, 마르쿠스 스타우블레, 요나스 부흘리. "The Control Toolbox - 로봇 공학, 최적 및 모델 예측 제어를 위한 오픈 소스 C++ 라이브러리". IEEE Simpar 2018(최고 학생 논문상). arXiv 사전 인쇄
마르쿠스 기프탈러(Markus Giftthaler), 미하엘 노이네르트(Michael Neunert), 마르쿠스 스타우블레(Markus Stäuble), 요나스 부흘리(Jonas Buchli), 모리츠 디엘(Moritz Diehl). “비선형 최적 제어를 위한 반복적인 가우스-뉴턴 촬영 방법 제품군”. IROS 2018. arXiv 사전 인쇄
얀 카리우스, 르네 란프틀, 블라들렌 콜툰, 마르코 후터. "암시적 하드 접촉을 통한 궤적 최적화." IEEE 로봇 공학 및 자동화 편지 3, no. 4 (2018): 3316-3323.
Michael Neunert, Markus Stäuble, Markus Giftthaler, Dario Bellicoso, Jan Carius, Christian Gehring, Marco Hutter 및 Jonas Buchli. “4발 동물의 접촉을 통한 전신 모델 예측 제어”. IEEE 로봇공학 및 자동화 서한, 2017. arXiv 사전 인쇄
마르쿠스 기프탈러와 요나스 부흘리. “동등 제약이 있는 반복 선형 2차 최적 제어에 대한 투영 접근법”. 2017 IEEE-RAS 휴머노이드 로봇 국제 컨퍼런스, 11월 15~17일, 영국 버밍엄. IEEE 엑스플로어
Markus Giftthaler, Michael Neunert, Markus Stäuble, Marco Frigerio, Claudio Semini 및 Jonas Buchli. "최적 제어 및 추정을 위한 강체 동역학의 자동 미분", Advanced Robotics, SIMPAR 특별호. 2017년 11월. arXiv 사전 인쇄
Michael Neunert, Markus Giftthaler, Marco Frigerio, Claudio Semini 및 Jonas Buchli. "제어, 최적화 및 추정을 위한 강체 역학의 빠른 미분", 샌프란시스코 자율 로봇을 위한 시뮬레이션, 모델링 및 프로그래밍에 관한 2016 IEEE 국제 회의. (최우수 논문상). IEEE 엑스플로어
Michael Neunert, Farbod Farshidian, Alexander W. Winkler, Jonas Buchli "4족 보행을 위한 접촉 및 자동 보행 검색을 통한 궤적 최적화", IEEE 로봇 공학 및 자동화 편지, IEEE Xplore
마이클 노이네르트, 세드릭 드 크루자, 파드리 퍼러, 미나 카멜, 파보드 파시디안, 롤랜드 지그바르트, 요나스 부흘리. "통합 궤적 최적화 및 추적을 위한 빠른 비선형 모델 예측 제어", 2016 IEEE International Conference on Robotics and Automation(ICRA), IEEE Xplore
마르쿠스 기프탈러, 파보드 파시디안, 티모시 샌디, 루카스 스타델만, 요나스 부흘리. "최적 제어를 사용하여 비홀로노믹 제약 조건이 있는 모바일 조작기에 대한 효율적인 운동학적 계획", IEEE 로봇 공학 및 자동화 국제 컨퍼런스, 2017, 싱가포르. arXiv 사전 인쇄
Markus Giftthaler, Timothy Sandy, Kathrin Dörfler, Ian Brooks, Mark Buckingham, Gonzalo Rey, Matthias Kohler, Fabio Gramazio 및 Jonas Buchli. "1:1 규모의 모바일 로봇 제작: 현장 제작기". 건설 로봇 공학, Springer Journal no. 41693 arXiv 사전 인쇄
티모시 샌디(Timothy Sandy), 마르쿠스 기프트탈러(Markus Giftthaler), 카트린 되르플러(Kathrin Dörfler), 마티아스 콜러(Matthias Kohler), 요나스 부흘리(Jonas Buchli). "현장 제작기의 자동 재배치 및 현지화", IEEE 로봇 공학 및 자동화에 관한 국제 컨퍼런스 2016, 스톡홀름, 스웨덴. IEEE 엑스플로어
Michael Neunert, Farbod Farshidian, Jonas Buchli(2014). 적응형 실시간 비선형 모델 예측 모션 제어. IROS 2014에서 로봇 모션 계획 및 제어의 머신 러닝 워크숍 사전 인쇄