Simulink對(duì)機(jī)器人操作系統(tǒng)(ROS)的支持使我們能夠創(chuàng)建與ROS網(wǎng)絡(luò)一起工作的Simulink模型。ROS是一個(gè)通信層,允許機(jī)器人系統(tǒng)的不同組件以消息的形式交換信息。
組件通過將消息發(fā)布到特定的主題(如/odometry)來發(fā)送消息。其他組件通過訂閱該主題來接收消息。本文內(nèi)容基于慕羽★大佬文章進(jìn)行了增刪。
同時(shí)由于Simulink的使用在ROS1和ROS2中沒有太多的改動(dòng),所以我們就僅對(duì)ROS1完成了介紹。
對(duì)ROS的Simulink支持包括一個(gè)Simulink塊庫,用于為指定的主題發(fā)送和接收消息。當(dāng)您模擬模型時(shí),Simulink連接到ROS網(wǎng)絡(luò),該網(wǎng)絡(luò)可以與Simulink在同一臺(tái)機(jī)器上運(yùn)行,也可以在遠(yuǎn)程系統(tǒng)上運(yùn)行。一旦建立了這個(gè)連接,Simulink就會(huì)與ROS網(wǎng)絡(luò)交換消息,直到模擬結(jié)束。
如果安裝了Simulink Coder,還可以從Simulink模型為獨(dú)立ROS組件或節(jié)點(diǎn)生成c++代碼。
同時(shí)ROS1的Simulink和ROS2的Simulink支持不太一樣。ROS工具箱不支持Simulink中的以下ROS功能:ROSService服務(wù)端、ROS的行為以及TF樹。
如果應(yīng)用程序需要這些特性,就需要使用MATLAB的ROS功能。您可以使用MATLAB編寫ROS節(jié)點(diǎn),該節(jié)點(diǎn)可以將Service服務(wù)端、行為以及TF樹作為ROS消息發(fā)布到主題。
然后,Simulink可以訂閱該主題來處理這些消息。在MATLAB中使用以下函數(shù)來處理這些特征:
ROS服務(wù)服務(wù)器:rosservice、rosvcserver
ROS動(dòng)作:rosaction, rosactionclient
轉(zhuǎn)換樹:rostf, transform, getTransform
- 初始化ROS并創(chuàng)立鏈接
1.在終端輸入以下命令查看本機(jī)地址
ifconfig
2.將本機(jī)IP寫入到.bashrc文件。打開home文件夾,按Ctrl+h顯示隱藏的文件,選擇.bashrc并打開打開后在最后加入以下命令(后面的IP改為你的電腦的IP),然后保存退出。
export ROS_IP=192.168.3.128
3.啟動(dòng)roscore,并獲取ROS輸出的IP。在終端輸入roscore啟動(dòng),可以發(fā)現(xiàn)此時(shí)roscore會(huì)輸出一個(gè)IP如下圖所示:
4.打開MATLAB,建立與ROS的連接。在MATLAB的命令行窗口輸入以下語句,后半部分就是我們上一步得到的ROS輸出的IP。
setenv(‘ROS_MASTER_URI’,‘http://jzx-virtual-machine:11311’) rosinit
-
matlab
+關(guān)注
關(guān)注
182文章
2963瀏覽量
230170 -
機(jī)器人
+關(guān)注
關(guān)注
210文章
28205瀏覽量
206535 -
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
6738瀏覽量
123190 -
ROS
+關(guān)注
關(guān)注
1文章
276瀏覽量
16967
發(fā)布評(píng)論請先 登錄
相關(guān)推薦
評(píng)論