数値最適化用の自動微分&各種ソルバーへのインターフェースツールです. MPCなどでの活用が便利です.
- 定式化が非常に直感的で使いやすい.
- かなり変わった定式化にも対応可能(一般的な数値最適化ソルバーであるため)
- バックエンドソルバーが豊富
- AutoGenU,ACADO Toolkitといったシンボリック計算MPCツールと比べてトータルの実装時間が圧倒的に高速
| gsettings set org.gnome.desktop.input-sources xkb-options "['ctrl:nocaps']" | |
| sudo apt update -y | |
| sudo apt upgrade -y | |
| sudo apt autoremove -y | |
| sudo apt install build-essential cmake git libeigen3-dev vim tmux doxygen graphviz ffmpeg libglpk-dev -y | |
| sudo apt install python3-sphinx -y | |
| # install docker | |
| sudo apt install lsb-release -y | |
| sudo apt install apt-transport-https ca-certificates curl software-properties-common -y | |
| curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - |
| cd | |
| # Add ROS2 repository | |
| sudo apt update -y | |
| sudo apt install curl gnupg2 lsb-release -y | |
| curl http://repo.ros2.org/repos.key | sudo apt-key add - | |
| sudo sh -c 'echo "deb http://packages.ros.org/ros2/ubuntu `lsb_release -cs` main" > /etc/apt/sources.list.d/ros2-latest.list' | |
| # Specify the distribution of ROS2 | |
| export CHOOSE_ROS_DISTRO=dashing | |
| # Install ROS2 | |
| sudo apt update -y |
| sudo apt update | |
| sudo apt install git build-essential | |
| cd | |
| git clone https://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/backport-iwlwifi.git | |
| cd backport-iwlwifi/ | |
| make defconfig-iwlwifi-public | |
| sed -i 's/CPTCFG_IWLMVM_VENDOR_CMDS=y/# CPTCFG_IWLMVM_VENDOR_CMDS is not set/' .config | |
| make -j$(nproc) | |
| sudo make install | |
| sudo modprobe iwlwifi |
| sudo apt install -qqy lsb-release gnupg2 curl | |
| echo "deb [arch=amd64] http://robotpkg.openrobots.org/packages/debian/pub $(lsb_release -cs) robotpkg" | sudo tee /etc/apt/sources.list.d/robotpkg.list | |
| curl http://robotpkg.openrobots.org/packages/debian/robotpkg.key | sudo apt-key add - | |
| sudo apt update -y | |
| sudo apt install -qqy robotpkg-py27-pinocchio | |
| export PATH=/opt/openrobots/bin:$PATH | |
| export PKG_CONFIG_PATH=/opt/openrobots/lib/pkgconfig:$PKG_CONFIG_PATH | |
| export LD_LIBRARY_PATH=/opt/openrobots/lib:$LD_LIBRARY_PATH | |
| export PYTHONPATH=/opt/openrobots/lib/python2.7/site-packages:$PYTHONPATH | |
| export CMAKE_PREFIX_PATH=/opt/openrobots:$CMAKE_PREFIX_PATH |
| sudo apt install -qqy lsb-release gnupg2 curl | |
| echo "deb [arch=amd64] http://robotpkg.openrobots.org/packages/debian/pub $(lsb_release -cs) robotpkg" | sudo tee /etc/apt/sources.list.d/robotpkg.list | |
| curl http://robotpkg.openrobots.org/packages/debian/robotpkg.key | sudo apt-key add - | |
| sudo apt update -y | |
| sudo apt install -qqy robotpkg-py38-pinocchio | |
| echo export PATH=/opt/openrobots/bin:$PATH >> ~/.bashrc | |
| echo export PKG_CONFIG_PATH=/opt/openrobots/lib/pkgconfig:$PKG_CONFIG_PATH >> ~/.bashrc | |
| echo export LD_LIBRARY_PATH=/opt/openrobots/lib:$LD_LIBRARY_PATH >> ~/.bashrc | |
| echo export PYTHONPATH=/opt/openrobots/lib/python3.8/site-packages:$PYTHONPATH >> ~/.bashrc | |
| echo export CMAKE_PREFIX_PATH=/opt/openrobots:$CMAKE_PREFIX_PATH >> ~/.bashrc |
| sudo apt update | |
| sudo apt install robotpkg-py38-qt5-gepetto-viewer-corba -y | |
| git clone https://github.com/stack-of-tasks/pinocchio-gepetto-viewer.git --recursive | |
| cd pinocchio-gepetto-viewer | |
| mkdir build | |
| cd build | |
| cmake .. -DCMAKE_BUILD_TYPE=Release | |
| sudo make install |
| gsettings set org.gnome.desktop.input-sources xkb-options "['ctrl:nocaps']" | |
| echo export PATH=/opt/openrobots/bin:$PATH >> ~/.bashrc | |
| echo export PKG_CONFIG_PATH=/opt/openrobots/lib/pkgconfig:$PKG_CONFIG_PATH >> ~/.bashrc | |
| echo export LD_LIBRARY_PATH=/opt/openrobots/lib:$LD_LIBRARY_PATH >> ~/.bashrc | |
| echo export PYTHONPATH=/opt/openrobots/lib/python3.8/site-packages:$PYTHONPATH >> ~/.bashrc | |
| echo export CMAKE_PREFIX_PATH=/opt/openrobots:$CMAKE_PREFIX_PATH >> ~/.bashrc | |
| source ~/.bashrc |
| from casadi import * | |
| import math | |
| # 問題設定 | |
| T = 5.0 # ホライゾン長さ | |
| N = 100 # ホライゾン離散化グリッド数 | |
| dt = T / N # 離散化ステップ | |
| nx = 4 # 状態空間の次元 | |
| nu = 1 # 制御入力の次元 |
| from casadi import * | |
| import math | |
| import numpy as np | |
| # cartpole のダイナミクスを記述 | |
| # cartpoleの運動方程式は(https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-832-underactuated-robotics-spring-2009/readings/MIT6_832s09_read_ch03.pdf)を参照した | |
| class CartPole: | |
| def __init__(self): | |
| self.mc = 2.0 # cart の質量[kg] |