跳转至

USB外设驱动

在电脑上,我们最常用的接口之一,应该就是USB了,相比之前讲到的外设通信方法,USB更加复杂,速度也更快。

USB通信原理

USB不仅是我们生活中最常用的一种接口,也是一种串行总线的通讯方式。他类似于UART,有两根线用来传输数据。

image-20220614153533068

而且USB还有专门的接口规范,比如我们常听说的USB Type A、Type C。例如这里列出来的USB口,打印机常用的B口,手机上用的C口,都是标准的USB接口。

image-20220614153525844

USB的接口规范,使用广泛,很多成熟的外设都是采用的USB接口。

摄像头驱动

比如USB摄像头。

硬件接线

image-20220614153601309

这里我们使用一个USB摄像头,通过一个相机驱动把它跑起来,并且可以看到图像数据。

方法有很多中,TogetherROS兼容ROS2的所有功能,那我们就先试试ROS2中的标准方法,在旭日X3PI上直接安装一个usb_cam功能包。

ROS2相机驱动

安装与配置

首先安装ROS2的相机驱动包:

# 安装功能包
$ sudo apt install ros-foxy-usb-cam

安装好之后,为了让系统能够找到该功能包,需要进入tros的目录,建立对应的软连接。

# 建立软连接
$ cd /opt/tros
$ sudo python3 create_soft_link.py --foxy /opt/ros/foxy/ --tros /opt/tros/

因为旭日X3Pi可以连接csi摄像头,设备名占用了video0-7,所以外接的USB摄像头会被自动分配到video8,我们需要在ROS2的功能包中修改一下设备号。

# 修改配置文件
$ cd /opt/tros/share/usb_cam/config
$ sudo vim params.yaml

image-20220614153732776

然后给这个设备添加权限,最后再设置TogetherROS的环境变量就可以使用啦。

# 添加可执行权限
$ sudo chmod 777 /dev/video8

# 添加环境变量
$ source /opt/tros/local_setup.bash

运行相机驱动

我们来试一试。

$ ros2 launch usb_cam demo_launch.py     #启动相机,X3Pi
$ ros2 run rqt_image_view rqt_image_view #查看图像,PC 

这里直接在X3Pi中启动usb_cam的launch文件,然后再启动一个能和他通信的Ubuntu桌面系统,打开rqt_image_view,选择对应的话题,就可以看到图像了。也就是说明我们成功的用TROS驱动了这个USB摄像头。

image-20220614153922173

TogetherROS相机驱动

除此之外,TogetherROS中也提供了USB摄像头的驱动节点,连接摄像头之后,直接设置设备的权限和TogetherROS的环境变量就可以使用了。

$ source /opt/tros/local_setup.bash
$ sudo chmod 777 /dev/video8
$ ros2 launch hobot_usb_cam hobot_usb_cam.launch.py

之后可以再打开一个新的终端,输入对应的指令,然后启动websocket这个节点,就可以把image这个话题的数据发送到网页了。

$ source /opt/tros/local_setup.bash
$ cd /opt/tros/lib/websocket/webservice
$ sudo chmod +x ./sbin/nginx
$ sudo ./sbin/nginx -p .
$ ros2 run websocket websocket --ros-args -p image_topic:=/image -p image_type:=mjpeg -p only_show_image:=true

image-20220614154437893

这时我们直接打开在通一个局域网下的浏览器,输入X3Pi的地址,就可以进去到一个网页,点击左上方web端展示即可看到USB摄像头的实时画面。

image-20220614154440917

激光雷达驱动

移动机器人中常用的激光雷达大多也是USB借口的,比如这款rplidar。

安装与配置

image-20220614154510726

如果我们想把它跑起来,同样需要一个驱动包,大家可以在工作空间中下载雷达的驱动包,然后进行编译。编译完成后,添加环境变量就可以使用这个功能包了。

# 下载源码
$ mkdir -p catkin_ws/src
$ cd ~/catkin_ws/src
$ git clone -b ros2 https://github.com/slamtec/rplidar_ros.git

# 编译
$ cd  ~/catkin_ws
$ colcon build --symlink-install

# 添加环境变量
$ source ~/catkin_ws/install/setup.bash

# 添加权限
$ sudo chmod 777 /dev/ttyUSB0

还要记得给激光雷达的USB口设置对应的权限。

运行激光雷达驱动

驱动安装好之后,就可以启动雷达了。

在旭日X3派的终端中,运行启动激光雷达的launch文件。

$ ros2 launch rplidar_ros2 rplidar_launch.py  #启动雷达,X3PI
$ ros2 run rviz2 rviz2                        #查看点云,PC

启动成功后,我们在电脑端的Ubuntu系统中,在ros2环境下打开rviz2,然后将世界坐标系改为laser,然后添加LaserScan的可视化选项,并且把Reliability Policy的选项改为System Default,此时就可以看到激光雷达的点云数据了。

image-20220614154708873

图片1