You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于SSH通过Windows PC控制Jetson AGX多摄像头同步采集的问题

解决Windows SSH连接Jetson AGX多摄像头采集的两个问题

1. 建立SSH连接后发送摄像头采集命令的方法

方法一:直接在SSH命令中嵌入采集指令

无需先打开终端再手动输入,直接通过SSH一次性执行目标命令,Python中可借助subprocess库实现:

import subprocess

# 替换为你的Jetson用户名、IP地址,以及对应摄像头的采集命令
cmd = "ssh your-jetson-user@jetson-ip 'v4l2-ctl -d /dev/video0 --set-fmt-video=pixelformat=XR24 --stream-mmap --stream-count=1 --stream-to=img0.raw'"
subprocess.run(cmd, shell=True)

该方式会在SSH连接建立后自动执行采集命令,完成后默认断开连接。

方法二:保持SSH连接并交互发送命令

若需要维持终端连接、动态发送命令,可使用pexpect库(需提前安装:pip install pexpect):

import pexpect

# 启动SSH连接
ssh_process = pexpect.spawn('ssh your-jetson-user@jetson-ip')
# 处理密码验证(若使用密钥登录可跳过此步骤)
ssh_process.expect('password:')
ssh_process.sendline('your-jetson-password')
# 等待命令行提示符出现
ssh_process.expect('your-jetson-user@jetson-agx:~$')
# 发送采集命令
ssh_process.sendline('v4l2-ctl -d /dev/video0 --set-fmt-video=pixelformat=XR24 --stream-mmap --stream-count=1 --stream-to=img0.raw')
# 等待命令执行完成,再次出现提示符
ssh_process.expect('your-jetson-user@jetson-agx:~$')
# 按需关闭连接
ssh_process.sendline('exit')

2. 先打开终端再分别发送命令实现同步采集

完全可以实现,核心是保证三个采集命令的触发时间差尽可能小,以下是两种可靠方案:

方案一:Python多线程同步触发

利用threading库同时启动三个线程,每个线程负责一个摄像头的SSH命令发送:

import subprocess
import threading

def capture_camera(cam_id):
    # 构造对应摄像头的采集命令
    cmd = f"ssh your-jetson-user@jetson-ip 'v4l2-ctl -d /dev/video{cam_id} --set-fmt-video=pixelformat=XR24 --stream-mmap --stream-count=1 --stream-to=img{cam_id}.raw'"
    subprocess.run(cmd, shell=True)

# 创建并启动三个线程,对应video0、video1、video2
threads = []
for cam in range(3):
    t = threading.Thread(target=capture_camera, args=(cam,))
    threads.append(t)
    t.start()

# 等待所有采集任务完成
for t in threads:
    t.join()

方案二:Jetson本地同步脚本触发

在Jetson上创建一个同步采集脚本sync_capture.sh:

#!/bin/bash
# 同时启动三个采集命令,后台运行后等待全部完成
v4l2-ctl -d /dev/video0 --set-fmt-video=pixelformat=XR24 --stream-mmap --stream-count=1 --stream-to=img0.raw &
v4l2-ctl -d /dev/video1 --set-fmt-video=pixelformat=XR24 --stream-mmap --stream-count=1 --stream-to=img1.raw &
v4l2-ctl -d /dev/video2 --set-fmt-video=pixelformat=XR24 --stream-mmap --stream-count=1 --stream-to=img2.raw &
wait

给脚本添加执行权限:chmod +x sync_capture.sh,之后在Windows端通过SSH执行该脚本即可:

import subprocess
cmd = "ssh your-jetson-user@jetson-ip './sync_capture.sh'"
subprocess.run(cmd, shell=True)

该方案同步精度更高,避免了SSH网络延迟带来的命令触发差异。

内容的提问来源于stack exchange,提问作者Aleks-CST

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 07:27:27