基于MPC的轨迹跟踪以及ROS与Simulink、prescan的联合仿真实践
附赠自动驾驶最全的学习资料和量产经验:链接
01 准备工作
· 硬件基础:PC1和PC2连接在同一局域网下;
· PC1为Ubuntu系统,运行MPC控制算法;
· PC2为Windows系统,运行Simulink程序。
02 ROS通讯节点的建立
2.1 局域网的建立
将PC1和PC2用网线/路由器链接,查看PC1和PC2的IP地址,并修改在同一网段下。Windows端在此使用IP: 192.168.62.10,Ubuntu端在此使用IP: 192.168.62.199,具体修改两者以太网IP操作在此不详细讲解。
2.2 修改ROS的IP与PC1的IP一致,将其写入到.bashrc文件
桌面打开终端,进入.bashrc文件(注:这里安装了sublime编辑器,也可使用gedit,vim等)。
打开后加入以下命令(ROS的IP改为PC1的IP),然后保存退出。
2.3 启动roscore,并在PC2的Matlab命令行输入以下指令,若返回下图信息,则ROS与Matlab连接成功。
03 ROS与Simulink之间节点的订阅和发布
在此,拟采用std_msgs/Float64MultiArray和geometry_msgs/Twist来传递路径信息和车辆位置信息给ROS,使用geometry_msgs/Twist来传递ROS中MPC程序的计算结果返回于Simulink。
3.1 Simulink message的发布
打开simulink,找到ROS模块库,选择Blank Message和Publish模块,找到Simulink/Signal Routing部分,选择Bus Assignment模块。
Blank Message模块用指定的消息或服务类型创建一个空白消息Bus Assignment模块可以修改总线信号中的特定字段。
在Blank Message模块选择要传输的message类型,并连接至Bus Assignment的Bus端,Bus Assignment选择数据和数据长度(注:数据长度为必选项,否则会出现数据异常,ROS端能接收到话题但无数据)。