鱼香ROS社区
    • 版块
    • 最新
    • 未解决
    • 已解决
    • 群组
    • 注册
    • 登录
    紧急通知:禁止一切关于政治&VPN翻墙等话题,发现相关帖子会立马删除封号
    提问前必看的发帖注意事项: 社区问答规则(小鱼个人)更新 | 高质量帖子发布指南

    wsl2下的通信如何实现

    已定时 已固定 已锁定 已移动
    FishBot二驱机器人
    wsl2 通信
    7
    14
    8.3k
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 小鱼小
      小鱼 技术大佬 @948947792
      最后由 编辑

      @948947792 wsl 应该共用的宿主机ip,你是怎么个网络结构呢,小车物理层如何和电脑连接的

      新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

      9 1 条回复 最后回复 回复 引用 0
      • 9
        木吉 @小鱼
        最后由 编辑

        @小鱼 谢谢大佬解答,我现在在wsl里面使用docker拉取了配置助手,并都配置好了,但是ros2 topic list里面仅仅出现了/parameter_events,/rosout这两个话题,不知道这算不算已经弄好了😖

        9 小鱼小 3 条回复 最后回复 回复 引用 0
        • 9
          木吉 @948947792
          最后由 编辑

          图片如下
          11111.png
          ros2 topic list 的结果
          22222.png

          9 1 条回复 最后回复 回复 引用 0
          • 9
            木吉 @948947792
            最后由 编辑

            @948947792 主要问题就是在wsl中使用ip -4 a | grep inet看电脑的ip地址时,输出入下
            333333.png
            不知道该选择哪个地址了,然后在宿主机中使用 ipconfig得到
            4444443.png

            1 条回复 最后回复 回复 引用 0
            • 9
              木吉 @948947792
              最后由 948947792 编辑

              @948947792 现在的网络是由电脑热点实现的,因为没有路由器,想着先拿电脑热点试试,小车采用usb线与电脑连接

              1 条回复 最后回复 回复 引用 0
              • 小鱼小
                小鱼 技术大佬 @948947792
                最后由 编辑

                @948947792 热点大概率穿不透到docker内部网络,两个ip不在一个网段

                新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

                1 条回复 最后回复 回复 引用 0
                • W
                  wuhanros
                  最后由 编辑

                  请问有解决问题吗?我也发现ros2或者ros不能收到远端topic的问题,但是如果有rosbag包在本地播放的话就没问题。

                  1 1 条回复 最后回复 回复 引用 0
                  • 1
                    1253024365 @wuhanros
                    最后由 编辑

                    @wuhanros 请问有解决吗?我最近也在使用wsl2安装ubuntu22.04+ros2和小车通讯,发现wsl2的ros2无法接收到小车节点发布的内容,但是换成ubunt22.04实体机可以。

                    小鱼小 1 条回复 最后回复 回复 引用 0
                    • 小鱼小
                      小鱼 技术大佬 @1253024365
                      最后由 编辑

                      @1253024365 把网络结构和ip搞出来看看,另外你用docker还是手动构建的

                      新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

                      1 1 条回复 最后回复 回复 引用 0
                      • 1
                        1253024365 @小鱼
                        最后由 编辑

                        @小鱼 感谢您的回复,已解决。使用wsl2时需要与主机做一个镜像模式网络才行,结合wsl2官网的指示与sudo gedit ~/.bashrc
                        添加export ROS_HOSTNAME=192.168.xx.xxx
                        export ROS_MASTER_URI=http://192.168.xx.xxx:11311的方法解决了wsl2与ubuntu实体机无法通讯的问题。

                        Y 1 条回复 最后回复 回复 引用 0
                        • Y
                          yfj @1253024365
                          最后由 编辑

                          @1253024365 您好,能详细说下解决方案吗,wsl下和ubuntu主机下都要设置吗,ROS_HOSTNAME 设置的是wsl的ip还是宿主机的ip?

                          A 1 条回复 最后回复 回复 引用 0
                          • A
                            AR @yfj
                            最后由 编辑

                            @yfj 为了让您的**小车(外部设备)**和 WSL 2 虚拟机处于同一个网段,您需要改变 WSL 2 的默认网络模式。

                            WSL 2 默认使用的是 NAT(网络地址转换)模式,它将 WSL 2 实例隐藏在一个私有虚拟网络后面。要实现外部设备(如您的小车)可以直接访问 WSL 2,您需要配置 桥接(Bridged)网络模式,也被称为 “镜像网络”(Mirrored Networking Mode)。

                            推荐的配置方式:启用镜像网络模式
                            在较新的 Windows 11 和 WSL 版本中,Microsoft 引入了名为**“镜像网络”(镜像网络模式)的功能,它通过配置 Hyper-V 虚拟交换机来模拟桥接网络,使得 WSL 2 虚拟机可以直接获得与 Windows 主机同网段**的 IP 地址。

                            步骤 1:确保您的 WSL 版本支持

                            此功能通常需要较新的 Windows 和 WSL 版本(Windows 11 22H2+)。

                            步骤 2:编辑 .wslconfig 文件

                            您需要在 Windows 主机上修改或创建 %UserProfile%.wslconfig 文件。

                            在 Windows 命令行或 PowerShell 中运行以下命令,打开该文件进行编辑:

                            猛击

                            notepad $env:USERPROFILE.wslconfig
                            在文件中添加或修改以下配置:

                            伊尼,TOML

                            [wsl2]

                            启用镜像网络模式

                            networkingMode=mirrored
                            步骤 3:重启 WSL 实例

                            保存 文件后,您需要完全关闭并重启 WSL 实例,以应用新的网络配置:.wslconfig

                            在 PowerShell 或命令提示符中运行:

                            猛击

                            wsl --shutdown
                            然后重新启动您的 WSL 实例(例如,通过打开您的 Linux 发行版)。

                            gemini给出的解决方案,实测可行,如果创建文件时没找到该文件就新建一个

                            1 条回复 最后回复 回复 引用 0
                            • 第一个帖子
                              最后一个帖子
                            皖ICP备16016415号-7
                            Powered by NodeBB | 鱼香ROS