You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

跨计算机向ROS节点发送数据遇连接拒绝问题求助

ROS跨计算机通信:连接拒绝问题解决指南

前置必做要求

1. 安装并运行rosbridge_server

roslibrust依赖rosbridge的WebSocket接口实现与ROS的通信,无论本地还是跨机通信都必须部署:

  • 安装(替换<ros_version>为你的ROS版本,如melodic/noetic):
    sudo apt-get install ros-<ros_version>-rosbridge-server
    
  • 启动时需绑定所有IP(避免仅监听localhost),并指定与代码一致的端口(你代码中用的是9080):
    roslaunch rosbridge_server rosbridge_websocket.launch address:=0.0.0.0 port:=9080
    
    注意:启动前要确保ROS Master(roscore)已经在服务器端运行。

2. 确保网络互通

  • 两台机器处于同一局域网,互相能ping通对方IP
  • 关闭服务器端防火墙,或开放对应端口(如9080):
    sudo ufw allow 9080/tcp
    

IP地址与环境变量配置

服务器端(运行ROS与rosbridge的机器)

  1. 设置ROS环境变量(临时生效,可写入~/.bashrc永久生效):
    export ROS_IP=<服务器局域网IP>  # 例如192.168.1.100
    export ROS_MASTER_URI=http://<服务器局域网IP>:11311
    
  2. 按上述要求启动rosbridge_server。

客户端(运行Rust代码的机器)

  1. 设置ROS环境变量:
    export ROS_MASTER_URI=http://<服务器局域网IP>:11311
    
  2. 修改Rust代码中的WebSocket连接地址,将localhost替换为服务器的局域网IP:
    // 示例:替换为服务器IP 192.168.1.100
    let client = ClientHandle::new("ws://192.168.1.100:9080").await?;
    

常见问题排查

  • 端口不一致:代码中用9080,rosbridge启动时必须指定port:=9080,默认端口是9090
  • ROS环境变量未正确设置:服务器端必须设置ROS_IP,客户端必须指向正确的ROS_MASTER_URI
  • 防火墙拦截:检查服务器端是否允许客户端IP访问指定端口

内容的提问来源于stack exchange,提问作者Ankit Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 21:21:03