云台相机控制服务器

OBSBOT Camera MCP Server是一个用于云台相机控制的服务器,支持云台定位、快照拍摄和AI视觉分析集成,适用于各种支持v4l2控制的UVC PTZ相机。

  • by Radar105
  • JavaScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 Radar105/obsbot-camera-mcp

使用说明

OBSBOT摄像头MCP服务器

MCP(模型上下文协议)服务器,用于PTZ摄像机控制,具有万向架定位、快照和AI视觉分析集成功能。

专为OBSBOT Tiny SE设计,但可与任何支持v4l2控制的UVC PTZ相机配合使用。

特性

  • 全万向节控制:具有安全限制的平移、倾斜、缩放
  • 实时位置反馈:人类可读的指示
  • 相机快照:高分辨率捕捉
  • 视觉分析:用于视觉语言模型的LM Studio集成
  • 区域扫描:水平、垂直、网格和全景图案
  • 自主搜索:用于系统勘探的Shell脚本
  • Python库:直接控制自定义应用程序

需求

系统

  • 支持v4l2的Linux
  • Node.js 18+(用于MCP服务器)
  • Python 3.8+(用于Python库)

包裹

# Ubuntu/Debian
sudo apt install v4l-utils ffmpeg python3-opencv

# Fedora
sudo dnf install v4l-utils ffmpeg python3-opencv

可选的

  • LM 工作室 用于视觉分析
  • 视觉语言模型(如Qwen2.5-VL、LLaVA)

安装

MCP服务器

cd obsbot-camera-mcp
npm install

Python库

pip install opencv-python

配置

环境变量

export OBSBOT_DEVICE="/dev/video0"           # Camera device
export OBSBOT_OUTPUT_DIR="/tmp/obsbot"       # Capture directory
export LM_STUDIO_URL="http://localhost:1234/v1/chat/completions"
export OBSBOT_VL_MODEL="qwen2.5-vl-7b-instruct"

Claude桌面配置

添加到 ~/.config/claude/claude_desktop_config.json:

{
  "mcpServers": {
    "obsbot": {
      "command": "node",
      "args": ["/path/to/obsbot-camera-mcp/src/obsbot-mcp-server.mjs"],
      "env": {
        "OBSBOT_DEVICE": "/dev/video0"
      }
    }
  }
}

用法

MCP服务器工具

get_gimbal_position

获取当前的平移、倾斜、缩放以及可读的方向。

control_gimbal

将万向节移动到绝对位置。

  • 潘:-468000(右)至468000(左)
  • 倾斜角度:-324000(向下)至324000(向上)
  • 变焦:0(广角)至12(远摄)

中心摄像机

返回中立位置(0,0,0)。

小睡

使用可选的LM Studio分析捕获图像。

{
  "analyzeWithLM": true,
  "customPrompt": "Describe what you see"
}

查看并分析

在一次操作中移动相机并拍摄分析快照。

扫描区域

系统多位置扫描。

{
  "pattern": "horizontal",  // or vertical, grid, panoramic
  "steps": 5
}

check_system_status

验证相机和LM Studio的可用性。

Python库

from python.obsbot_control import OBSBOTController

camera = OBSBOTController()
camera.connect()

# Move to position
camera.set_position(pan=200000, tilt=100000, zoom=2)

# Use presets
camera.preset_position("left")
camera.preset_position("center")

# Capture
camera.save_frame("snapshot.jpg")

# Scan
results = camera.scan_horizontal(steps=5, capture=True)

camera.disconnect()

Shell 脚本

# Basic search
./scripts/autonomous_scan.sh "find the window"

# Grid pattern with verbose output
./scripts/autonomous_scan.sh --pattern grid --verbose "locate books"

# Quick scan
./scripts/autonomous_scan.sh --pattern quick "identify objects"

相机兼容性

测试方法:

  • OBSBOT微型SE
  • OBSBOT会议

应与任何支持以下功能的UVC PTZ摄像机配合使用:

  • pan_absolute 控制
  • tilt_absolute 控制
  • zoom_absolute 控制

检查相机的控制:

v4l2-ctl -d /dev/video0 --list-ctrls

万向节方向

v4l2控件值映射到方向:

  • 潘:正=左,负=右
  • 倾斜:正=向上,负=向下
  • 变焦:较高=远摄(放大)

故障排除

未找到摄像头

v4l2-ctl --list-devices
ls -la /dev/video*

权限不足

sudo usermod -a -G video $USER
# Logout and login again

控件不工作

# Check available controls
v4l2-ctl -d /dev/video0 --list-ctrls

# Test manual control
v4l2-ctl -d /dev/video0 --set-ctrl=pan_absolute=100000

许可证

MIT许可证-请参阅许可证文件

相关项目