基于运动学的非线性MPC,实现包括基于阿克曼小车、差速小车和全向移动机器人的轨迹跟踪控制器,仅需提供机器人定位和参考轨迹即可输出控制指令。
优化求解器采用casadi,可自由添加其他非线性约束。基于c++多态实现不同机器人的mpc,可根据需要自行扩展。
源码安装casadi求解器
mkdir ~installation && cd ~installation
git clone https://github.com/casadi
mkdir build && cd build
cmake .. -DWITH_IPOPT=ON -DWITH_EXAMPLES=OFF
make -j8
sudo make install
cd catkin_ws/src
git clone https://github.com/WX-James/simple_mpc
cd .. && cakin_make
参数 | 说明 |
---|---|
arg name="odom_topic" | 机器人定位Topic, 消息类型: nav_msgs/Odometry |
arg name="traj_topic" | 参考轨迹Topic,消息类型: std_msgs/Float32MultiArray |
arg name="cmd_topic" | 控制指令Topic,消息类型: geometry_msgs/Twist |
阿克曼小车mpc
source devel/setup.bash
roslaunch mpc mpc_ackman.launch
差速小车mpc
source devel/setup.bash
roslaunch mpc mpc_differential.launch
全向小车或四足机器人mpc
source devel/setup.bash
roslaunch mpc mpc_quadruped.launch
基于二自由度自行车模型,控制输入为(
基于两轮差速小车模型,控制输入为(
控制输入为(