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
+關注
關注
185文章
2976瀏覽量
230483 -
機器人
+關注
關注
211文章
28418瀏覽量
207102 -
操作系統
+關注
關注
37文章
6825瀏覽量
123333 -
ROS
+關注
關注
1文章
278瀏覽量
17010
發布評論請先 登錄
相關推薦
評論