从matlab turtlebot3不能接收消息,但从turtlebot matlab可以得到数据

10视图(30天)
我使用matlab控制turtlebot,有问题沟通。
Rossubscriber可以成功,matlab可以得到机器人的数据正确,从话题/扫描,/ cmd_vel
但rospublisher不能工作。
我试着rospublisher()和()发送到发送/ cmd_vel味精,
和/ cmd_vel总是线性:x: 0.0 y: 0.0 z: 0.0
不过,我可以让机器人移动终端通过ssh到turtlebot董事会
这两个
rostopic酒吧- r 10 / cmd_vel geometry_msgs /扭'{线性:{x: 0.1, y: 0 z: 0},角:{x: 0 y: 0 z: 0}}”
roslaunchturtlebot3_teleop turtlebot3_teleop_key.launch
可以工作,
因此,硬件没有问题。
这是我的设置。
在ubuntu turtlebot . bashrc
出口ROS_IP = 192.168.1.101
出口ROS_MASTER_URI = http://192.168.1.101:11311
出口ROS_HOSTNAME = 192.168.1.101
在matlab
rosshutdown;
setenv (“ROS_IP”,“192.168.1.108”)
setenv (“ROS_MASTER_URI”,“http://192.168.1.101:11311”)
ipaddress =“http://192.168.1.101:11311”;
rosinit (ipaddress)
代码移动机器人
cmd_publish = rospublisher (“/ cmd_vel”,“DataFormat”,“结构”);
velMsg = rosmessage (cmd_publish);
velMsg.Linear。X = 0.1;
发送(cmd_publish velMsg)
另一个尝试
速度= 0.1;
机器人= rospublisher (“/ cmd_vel”,geometry_msgs /“扭转操作”)
velmsg = rosmessage(机器人)
velmsg.Linear。X =速度;
发送(机器人,velmsg)
回声和rospublisher都无法找到任何变化/ cmd_vel
我不明白为什么但rossubscriber rospublisher不能工作。
也感谢所有的帮助。
提前谢谢你。

接受的答案

凸轮扎尔茨贝格
凸轮扎尔茨贝格 2022年3月25日
你好,本,
我见过几次这样的问题,但通常在相反的方向(MATLAB不能接收数据)。 解决办法有 是确保正确地设置ROS_IP VM,以便正确的端点的通信节点启动时的广告。
因为你是设置在两个端点ROS_IP,反正你不应该在MATLAB的一边,然后,似乎并没有问题。最可能的解释是,防火墙阻塞通信在某些港口,MATLAB是尝试使用。根据您的防火墙程序,可以设置MATLAB(也许VMware)是一个可信任的程序,并且允许通信。
如果这不是问题,检查您使用的IP地址是正确的。通常有多个网络接口,每个都有自己的IP地址。你通常希望标准以太网或无线网络,而不是VM-communication-specific接口。你可以看到你的网络接口在Windows ipconfig 或Unix系统 ifconfig
凸轮
2的评论
凸轮扎尔茨贝格
凸轮扎尔茨贝格 2022年3月28日
在两个方向上都能够ping并不通常意味着大量的活性氧沟通。如果你不能平,你可能不能沟通/ ROS。但是有很多情况下平但ROS沟通不工作。
它总是可能的,Ubuntu某种安全或port-blocking措施,防止这种沟通,但是我没有听说过这是一个问题。
进一步的调查可能会的测试变量,试图缩小的原因。我的头,你可以试试:
  • 确保发布—订阅使用两个不同的节点(ros。在MATLAB节点对象)。
  • 确保两个单独的MATLAB之间发布—订阅工作实例。
  • 如果你有另一台计算机上安装了MATLAB,连接到同一个网络,您正在使用TurtleBot,并确保发布—订阅这些计算机之间的两个方向工作。
  • ROS主TurtleBot或MATLAB ?你可以尝试启动另一个主人,连接两个吗?
  • 你用有线连接,直接一个局域网,一般(有线)网络连接,专用无线网络(没有互联网接入),或一般的无线网络(互联网)沟通?有时一般网络带来额外的配置或安全,阻碍ROS沟通(如禁用多播)。我通常尝试用一个专用的无线网络,基本上只有笔记本电脑和turtlebot唯一在网络上的东西。
  • 电脑连接到其他网络(以太网或无线)?考虑删除,然后重新启动MATLAB / ROS /等。它可能试图在不同的网络接口通信。
  • 你有ROS安装到计算机(MATLAB之外)?你能发送通信从TurtleBot吗?
凸轮

登录置评。

更多的答案(0)

类别

找到更多的在网络连接和探索帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!