web_video_server-ros2
是一个基于 ROS 2 的工具,用于将 ROS 2 中的相机图像(如 sensor_msgs/msg/Image
)转换为视频流,并通过网页实时播放。它支持多种视频编码格式(如 MJPEG、H.264、VP8 等),并可以通过浏览器访问。
以下是使用 web_video_server-ros2
将相机图像转换为视频流的详细步骤:
1. 安装 web_video_server-ros2
克隆仓库
首先,将 web_video_server-ros2
克隆到你的 ROS 2 工作空间的 src
目录中:
cd ~/your_ros2_ws/src
git clone https://github.com/horo2016/web_video_server-ros2.git
安装依赖
确保安装了以下依赖项:
- OpenCV:用于图像处理。
- Boost:用于网络通信。
- async_web_server_cpp:用于 HTTP 和 WebSocket 服务器。
安装依赖:
sudo apt update
sudo apt install libopencv-dev libboost-all-dev
sudo apt install ros-humble-async-web-server-cpp
构建工作空间
进入工作空间根目录并构建:
cd ~/your_ros2_ws
colcon build --packages-select web_video_server
激活工作空间
source install/setup.bash
2. 启动相机节点
确保你的相机节点已经启动,并发布图像数据到 ROS 2 话题。例如,如果你使用的是 usb_cam
或 image_pipeline
,可以启动相机节点:
ros2 run usb_cam usb_cam_node_exe
或者使用 image_pipeline
:
ros2 launch image_pipeline camera.launch.py
检查图像话题是否正常发布:
ros2 topic list
通常图像话题名称为 /image_raw
或 /camera/image_raw
。
3. 启动 web_video_server
启动 web_video_server
节点:
ros2 run web_video_server web_video_server
默认情况下,web_video_server
会订阅 /image_raw
话题,并在 http://localhost:8080
提供视频流服务。
4. 访问视频流
打开浏览器,访问以下地址:
http://localhost:8080
你会看到一个网页界面,显示可用的视频流。点击相应的链接即可查看实时视频。
5. 自定义配置
你可以通过以下方式自定义 web_video_server
的行为:
修改端口
默认端口是 8080
。你可以通过命令行参数修改端口:
ros2 run web_video_server web_video_server --ros-args -p port:=8081
修改订阅话题
默认订阅的话题是 /image_raw
。你可以通过命令行参数修改话题:
ros2 run web_video_server web_video_server --ros-args -p topic:=/camera/image_raw
使用启动文件
创建一个启动文件(如 web_video_server_launch.py
)来配置参数:
from launch import LaunchDescription
from launch_ros.actions import Node
def generate_launch_description():
return LaunchDescription([
Node(
package='web_video_server',
executable='web_video_server',
name='web_video_server',
output='screen',
parameters=[
{'port': 8081}, # 修改端口
{'topic': '/camera/image_raw'} # 修改订阅话题
]
)
])
运行启动文件:
ros2 launch web_video_server_launch.py
6. 支持的视频格式
web_video_server
支持多种视频编码格式,包括:
- MJPEG:默认格式,适合低延迟流媒体。
- H.264:高效压缩,适合高质量视频。
- VP8:开源视频编码格式。
- PNG:无损图像格式,适合静态图像。
你可以在网页界面中选择不同的格式,或者在 URL 中指定格式。例如:
http://localhost:8080/stream?topic=/camera/image_raw&type=h264
7. 调试与日志
如果遇到问题,可以查看 web_video_server
的日志输出:
ros2 run web_video_server web_video_server --ros-args --log-level debug
8. 示例应用场景
- 远程监控:通过网页实时查看机器人或设备的摄像头画面。
- 调试与可视化:在开发过程中实时查看图像数据。
- 教育与演示:方便地向他人展示 ROS 2 系统中的图像数据。
总结
web_video_server-ros2
是一个强大的工具,能够将 ROS 2 中的相机图像转换为网页视频流。通过简单的配置,你可以轻松实现远程监控和实时视频播放。