ROS2 安卓手机传感器桥接器(Mobile Sensor Bridge for ROS2)

系列文章目录

       

目录

系列文章目录

前言

一、概述

二、功能

三、前提条件

四、安装

五、使用方法

六、ROS2 主题

七、功能状态

八、故障排除

8.1 移动浏览器显示 ERR_EMPTY_RESPONSE


前言

        该软件包提供了一个 ROS2 节点,可直接从安卓智能手机流式传输传感器数据,包括 JPEG 相机流(最高 30 FPS)、空间姿态跟踪和双向音频通信。


一、概述

        机器人原型通常需要多个传感器,每个传感器都需要标定和集成。本软件包通过将传感器数据发布为 ROS2 话题,将安卓手机转换为综合传感器套件。该节点使用 rclnodejs 实现,可在 JavaScript 环境中实现 ROS2 的无缝集成。

ROS2 安卓手机传感器桥接器(Mobile Sensor Bridge for ROS2)_第1张图片

二、功能

  • 相机流: 以 sensor_msgs/CompressedImage 的形式发布移动摄像头坐标系帧
  • 本地 ROS2 接口: 与 ROS2 直接集成
  • 空间姿态跟踪 以 geometry_msgs/Pose 的形式发布 WebXR 空间位置和方向流
  • 语音接口 双向音频,支持语音转文本和文本转语音(唤醒词:"机器人)
  • 可选传感器: 根据需要启用或禁用单个传感器

三、前提条件

  • ROS2 (使用 Humble 测试)
  • Node.js (建议使用 v20 以上版本;已使用 v22.14.0 进行测试)
  • npm(v8 以上;使用 v10.9.2 进行了测试)
  • 支持 WebXR 的现代智能手机(用于 AR 功能)
  • OpenSSL(用于生成证书)

四、安装

  1. 将软件源克隆到你的 ROS2 工作区 src 目录中:
    cd /src/
    git clone https://github.com/VedantC2307/ros2-android-sensor-bridge.git mobile_sensor
  2. 安装 Node.js 依赖项
    cd mobile_sensor
    npm install
     

    注意事项

    在使用 colcon 构建软件包之前,请运行 npm install。

  3. 生成 SSL 证书(安全访问所需):
    cd /src/mobile_sensor/src
    chmod +x generate_ssl_cert.sh
    ./generate_ssl_cert.sh
  4. 构建 ROS2 软件包:
    cd 
    colcon build --packages-select mobile_sensor
  5. 工作空间的来源:
    source install/setup.bash

五、使用方法

  1. 启动移动传感器节点:
  2. 访问移动设备上的网络界面:

    在移动设备上打开浏览器,导航至 https://:4000
    接受自签名证书警告
    授予摄像头、麦克风和 AR 功能的权限
    选择所需的传感器并点击 "开始

六、ROS2 主题

        该软件包发布以下话题:

  • /camera/image_raw/compressed (sensor_msgs/CompressedImage): 相机图像
  • /camera/camera_info (sensor_msgs/CameraInfo): 摄像机标定数据 [测试]
  • /mobile_sensor/pose (geometry_msgs/Pose): AR 姿态数据
  • /mobile_sensor/speech (std_msgs/String): 转录语音

        要向设备发送文本到语音信息,请发布到

  • /mobile_sensor/tts (std_msgs/String): 要说出的文本

七、功能状态

        当前功能实施状态:

  •  相机流 - 稳定;JPEG 相机流
  •  摄像头选择灵活性 - 开发中;增加对使用后置或前置摄像头的支持
  •  ROS2 话题集成 - 稳定;完全支持所有核心话题
  •  设备姿态跟踪 - 试验性;在视觉稀疏的环境中可能会降低准确性
  •  语音转文本界面 - 试验性;在安静环境下效果最佳。计划进行唤醒词定制
  •  文本到语音界面--试验性;计划支持 .wav 文件,以实现更自然的语音输出
  •  多设备支持 - 测试版;使用一部智能手机的摄像头和另一部智能手机的音频/麦克风
  •  依赖性管理 - 计划中;添加 rosdep 或类似功能以提高稳健性

注:功能状态截至 2025 年 4 月。有关最新更新,请参阅 GitHub issues。

八、故障排除

8.1 移动浏览器显示 ERR_EMPTY_RESPONSE

        如果用户界面在笔记本电脑上加载正常,但移动浏览器却显示 ERR_EMPTY_RESPONSE,这通常是网络可见性或防火墙问题。请尝试以下步骤:

  • 确认两台设备处于同一网络:
    • 确保手机和电脑连接到同一个 Wi-Fi 网络。
  • 暂时禁用防火墙:
    • 在 Ubuntu 上运行:sudo ufw disable
    • 再次尝试用手机访问服务器。如果成功,说明防火墙阻止了连接。使用 sudo ufw enable 重新启用防火墙,并添加一条允许端口 4000 流量的规则。

        让我们知道这些步骤是否有用,或者在尝试这些步骤后是否仍有问题!

你可能感兴趣的:(机器人,人工智能,深度学习,开发语言,自动驾驶,stm32,opencv)