window上 docker使用ros2开发并usbip共享usb设备

发布于:2025-04-09 ⋅ 阅读:(24) ⋅ 点赞:(0)

曾经参考 https://blog.csdn.net/laoxue123456/article/details/138339029 来共享windows上的usb 发现没有办法成功总是出现 tcp 错误。telnet测试能够正常连接 很是奇怪,window上换成低版本的usbipd仍然是同样的错误,没有办法的情况下参考了docker官方文档才得以正常工作,现将过程重新写一遍
1 下载安装windows版本的usbipd https://github.com/dorssel/usbipd-win/tags
此处可以选择下载最新版本的msi文件
执行命令
查询usb命令,

usbip list

分享usb设备

usbipd bind -b 0-0-0

取消共享

usbipd unbind -a

2 docker 的使用
文件结构
在这里插入图片描述

我的docker-compose.yml和dockerfile
dockerfile

FROM osrf/ros:humble-desktop-full-jammy
#EXPOSE 99/TCP

docker-compose

version: '1'
services:
  robot-humble:
    build: .
    privileged: true
    devices:
      - /dev/ttyUSB0
    environment:
      - DISPLAY=host.docker.internal:0.0
    volumes:
      - ./.vscode-server:/root/.vscode-server
      - ./ros2_ws:/root/ros2_ws
    tty: true
    command: /bin/bash

以上可参考我的文档 https://blog.csdn.net/ashcn2001/article/details/145743865?spm=1001.2014.3001.5502
3 进入docker ,执行俩列语句获取usbip
参考https://docs.docker.com/desktop/features/usbip/

apt update
apt install linux-tools-virtual hwdata usbutils

update-alternatives --install /usr/local/bin/usbip usbip `ls /usr/lib/linux-tools/*/usbip | tail -n1` 20

usbutils是为了能够使用lsusb
命令执行获取共享,这个时候宿主机不能使用该usb了
列举可用的usb

usbip list -r host.docker.internal

结果如下
Exportable USB devices
======================
 - host.docker.internal
      0-0-0: unknown vendor : unknown product (0000:0000)
           : /sys/bus/0/0/0
           : (Defined at Interface level) (00/00/00)
           :  0 - unknown class / unknown subclass / unknown protocol (03/00/00)

连接usb设备

usbip attach -r host.docker.internal -d 0-0-0

网站公告

今日签到

点亮在社区的每一天
去签到