【思想】是没想到,Simulink的ROS工具箱居然也能支持代码生成!之前本公众号花费了大量的时间介绍Simulink生成嵌入式C语言和C++代码。其实,大部分基础知识都差不多(比如:数据字典、信号绑定等等)。
重复的内容就不想再重复了,有需要深入了解的老铁请戳上面链接。
如果还没使用过Simulink Ros工具箱的老铁可以点击上面链接,回顾下往期内容。
在【Configuration Parameters】窗口的【Code Generation】选项卡中将编译模板设置成ert.tlc。不一样的是在ToolChain要设置成Catkin,因为ROS/ROS2使用的就是Catkin编译器。
在【Hardware Implementation】选项卡中对硬件进行设置,这里选择AMD的x86-64平台,硬件选Robot Operation System。
检查下模型的其他设置,没问题后在C++ CODE中点击BUILD,不管是CRUISE/Simulink联合仿真,还是嵌入式代码生成,这个步骤都一样。
但是,点击BUID按钮后还不算真正编译完成,可以直接运行。说到底这只是把生成的代码打包了,还没执行Catkin Build。
看Matlab的当前目录,多出来了这三个玩意,分别是:生成的代码、bash脚本和代码压缩包。而其中的build_ros_model.sh就是需要我们自己在终端中运行的编译脚本。
第一次看到这个脚本肯定不知道如何使用,尝试在运行下看看什么提示!看懂这个步骤应该只需要0.6级的英语水平就可以了。主要就是运行bash脚本需要带入的参数,和需要一个catkin工作目录。这里其实有一个小坑,如果原先没有catkin工作目录需要使用catkin_init_workspace外还需要执行下catkin_make才能完成初始化。
./build_ros_model.sh myrossimulink_pub.tgz ~/catkin_ws
根据说明执行脚本,顺利完成编译!接下来就是运行了
source devel/setup.bash
在catkin_ws目录中source一下,加载包的路径信息。
rosrun myrossimulink_pub myrossimulink_pub_node
在已经启动roscore的情况下,使用rosrun执行运行刚刚编译的包中的节点
理论上没有出现ERROR红色提示就算运行成功
使用rqt_plot查看/my_topic中的数值变化,再次确认编译运行成功!
之前的文章《自动驾驶是否需要Simulink》中,好像没有给出结论,也没有阐述【思想】的观点。其实,个人还是觉得直接手撕代码比较爽,费这么大劲搞了一个RollingCount功能。如有喜欢的老铁,赶紧点赞+分享
扫码或长按识别
关注
古德曼汽车工业