Simulink对机器人操作系统(ROS)的支持使我们能够创建与ROS网络一起工作的Simulink模型。ROS是一个通信层,允许机器人系统的不同组件以消息的形式交换信息。
组件通过将消息发布到特定的主题(如/odometry)来发送消息。其他组件通过订阅该主题来接收消息。本文内容基于慕羽★大佬文章进行了增删。
同时由于Simulink的使用在ROS1和ROS2中没有太多的改动,所以我们就仅对ROS1完成了介绍。
对ROS的Simulink支持包括一个Simulink块库,用于为指定的主题发送和接收消息。当您模拟模型时,Simulink连接到ROS网络,该网络可以与Simulink在同一台机器上运行,也可以在远程系统上运行。一旦建立了这个连接,Simulink就会与ROS网络交换消息,直到模拟结束。
如果安装了Simulink Coder,还可以从Simulink模型为独立ROS组件或节点生成c++代码。
同时ROS1的Simulink和ROS2的Simulink支持不太一样。ROS工具箱不支持Simulink中的以下ROS功能:ROSService服务端、ROS的行为以及TF树。
如果应用程序需要这些特性,就需要使用MATLAB的ROS功能。您可以使用MATLAB编写ROS节点,该节点可以将Service服务端、行为以及TF树作为ROS消息发布到主题。
然后,Simulink可以订阅该主题来处理这些消息。在MATLAB中使用以下函数来处理这些特征:
ROS服务服务器:rosservice、rosvcserver
ROS动作:rosaction, rosactionclient
转换树:rostf, transform, getTransform
- 初始化ROS并创立链接
1.在终端输入以下命令查看本机地址
ifconfig
2.将本机IP写入到.bashrc文件。打开home文件夹,按Ctrl+h显示隐藏的文件,选择.bashrc并打开打开后在最后加入以下命令(后面的IP改为你的电脑的IP),然后保存退出。
export ROS_IP=192.168.3.128
3.启动roscore,并获取ROS输出的IP。在终端输入roscore启动,可以发现此时roscore会输出一个IP如下图所示:
4.打开MATLAB,建立与ROS的连接。在MATLAB的命令行窗口输入以下语句,后半部分就是我们上一步得到的ROS输出的IP。
setenv(‘ROS_MASTER_URI’,‘http://jzx-virtual-machine:11311’) rosinit
-
matlab
+关注
关注
182文章
2963浏览量
230154 -
机器人
+关注
关注
210文章
28200浏览量
206516 -
操作系统
+关注
关注
37文章
6738浏览量
123190 -
ROS
+关注
关注
1文章
276浏览量
16966
发布评论请先 登录
相关推荐
评论