记录Matlab和ROS之间的通信bug

ubuntu ping不通windows

虚拟机设置为桥接

首先ubuntu ifconig查询虚拟机IP 假设为192.169.0.1

windows cmd 输入ipconfig查询主机IP假设为192.168.0.2

ubuntu操作

然后sudo gedit ~/.bashrc输入:

export ROS_IP=192.168.0.1

然后sudo gedit /etc/hosts输入

192.168.0.1 ubuntuname

192.168.0.2 windowsname

这两个操作系统的name在cmd或者终端里hostname查询

windows操作

打开c/system32/driviers/etc/hosts输入

192.168.0.1 ubuntuname

192.168.0.2 windowsname

然后打开matlab 

setenv('ROS_MASTER_URI','http://192.168.0.1:11311')

setenv('ROS_IP','192.168.0.2')

rosinit

在ubuntu打开rosrun turtlesim turtlesim_node 

然后在matlab里rostopic list看看是否能看到相应话题,看看matlab能不能收到ROS

然后检验matlab能不能发到ROS,matlab执行下面的脚本,看小海龟会不会画圈,ros里能不能收到hello world

cmdpub = rospublisher('/turtle1/cmd_vel',rostype.geometry_msgs_Twist)
 
pause(3)% Wait to ensure publisher is setup
 
cmdmsg = rosmessage(cmdpub);
 
cmdmsg.Linear.X = 10;
 
cmdmsg.Angular.Z = 15;
 
send(cmdpub,cmdmsg)
 
chatterpub = rospublisher('/chatter',rostype.std_msgs_String)
 
pause(3)% Wait to ensure publisher is setup
 
chattermsg = rosmessage(chatterpub);
 
chattermsg.Data = 'hello world'
 
send(chatterpub,chattermsg)
 
pause(5)

注意

我用公司电脑老是matlab能收到ROS,但是ROS收不到Matlab发的,最后发现是公司电脑默认有防火墙,在我自己电脑上重复上述操作,打开防火墙就双向通信都ok

再加一条记录,今天用公司windows调试笔记本想跑carsim车辆模型与公司台式机ubuntu通信捣鼓半天也不行,用的网线直连,能ping通,改了bashrc ,改了两边host,matlab就是连不上rosmaster,最后把台式机换成工控机ubuntu就ok,是网线直连的问题?

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐