π Preparations for Trajectory Optimization Tutorial
To prepare for the Tutorial on Trajectory Optimization, only the OCS2 toolbox must be set up. We provide the required packages in lib/ocs2
. The only packages we will be using are ocs2_legged_robot_ros
and ocs2_legged_robot
, which contain all the code to run the tutorial.
You can already build the current state of the ocs2_legged_robot_ros
package. In the catkin workspace, run:
catkin build ocs2_legged_robot_ros
The package is not operational in its current state, though, as it is missing some code that will be completed by you during the tutorial.
N.B. If the build fails on a Mac, add the CMake flag
set(TARGET GENERIC CACHE STRING "Set CPU architecture target" FORCE)
inside lib/ocs2/ocs2_sqp/hpipm_catkin/CMakeLists.txt
.
π§ Check Software Installation
After building the package, you can try to launch the node by running the following command in the catkin workspace:
roslaunch ocs2_legged_robot_ros legged_robot_ddp.launch
This should start up the automatic differentiation module and launch an RViz window with the robot visualization and three separate terminals. If everything runs, then the software is working and ready for the tutorial.
N.B. If you try to provide a command to the robot at this stage, it will not work and will throw out errors in the terminal window. This is because of the missing code that you will complete during the tutorial.
π Background
During the tutorial, we will work with our implementation of SLQ-MPC, a Nonlinear Model Predictive Control method, and apply it in the case of legged robot locomotion control. You can read up on the method in this paper:
M. Neunert et al., βFast nonlinear Model Predictive Control for unified trajectory optimization and tracking,β in 2016 IEEE International Conference on Robotics and Automation (ICRA), May 2016, pp. 1398β1404. doi: 10.1109/ICRA.2016.7487274.
You wonβt have to implement the method, but we will give you our implementation in the OCS2 framework. OCS2 is software developed in our lab to bring MPC to real robots. It has been deployed on various systems, including walking robots, mobile manipulators, construction machines, and flying robots.