欢迎光临
我们一直在努力

05 - 端口与实时画面(训练 / 评估)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */
#content_views .toc,
/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */
#content_views.markdown_views > p:empty:has(+ .toc),
#content_views.markdown_views > .toc + p:empty,
/* 富文本旧版目录标记 */
#content_views.htmledit_views #main-toc,
#content_views.htmledit_views #hr-toc,
#content_views.htmledit_views p[id*=\”-toc\”] {
display: none !important;
}
/* 目录去掉后,紧跟的首个标题不再多出一块上边距 */
#content_views.markdown_views > .toc + h1,
#content_views.markdown_views > .toc + h2,
#content_views.markdown_views > .toc + h3,
#content_views.markdown_views > .toc + h4,
#content_views.markdown_views > .toc + p:empty + h1,
#content_views.markdown_views > .toc + p:empty + h2,
#content_views.markdown_views > .toc + p:empty + h3,
#content_views.markdown_views > .toc + p:empty + h4 {
margin-top: 0 !important;
}

05 – 端口与实时画面(训练 / 评估)

适用机器:host2(Ubuntu 22.04 + Docker Swarm,公网 154.222.19.221,内网 10.0.37.3)
结论:网页上能看实时画面的入口只有一个 —— RoboMaker 容器内的 web_video_server:
训练 8080、评估 8180。8100 是训练多 worker 汇总页,8888 是日志分析 Jupyter,
5900 是 VNC(当前 DR_GUI_ENABLE=False,没有 Gazebo 画面),它们都不是仿真摄像头画面。


1. 快速索引

场景宿主机端口浏览器 / 客户端地址是否网页当前状态(2026-10-22)
训练 实时画面 8080 http://154.222.19.221:8080/ ✅ 训练栈未运行,未监听
评估 实时画面 8180 http://154.222.19.221:8180/ ✅ 评估已结束,端口已关闭;MP4 已落盘
训练多 worker 汇总 8100 http://154.222.19.221:8100/ ✅ 未启动(需 dr-start-viewer)
Gazebo GUI(VNC) 5900 vnc://154.222.19.221:5900 ❌ DR_GUI_ENABLE=False,无画面
日志分析 Jupyter 8888 http://154.222.19.221:8888/ ✅ 未启动(需 dr-start-loganalysis)
MinIO S3 API 9000 http://154.222.19.221:9000/ API 运行中
MinIO 控制台 9001 http://154.222.19.221:9001/ ✅ 运行中

154.222.19.221 是 host2 的公网地址(内网为 10.0.37.3,hostname -I 第一项)。在 host2 本机上可把 IP 换成 localhost。
这些端口没有鉴权,直接暴露公网有风险;条件允许时优先用第 6.2 节的 SSH 隧道。


2. 端口从哪来

端口不是写死在 compose 里的,而是 bin/activate.sh 按 DR_RUN_ID 算出来的:

# bin/activate.sh(swarm 模式)
export DR_ROBOMAKER_TRAIN_PORT=$(expr 8080 + $DR_RUN_ID)
export DR_ROBOMAKER_EVAL_PORT=$(expr 8180 + $DR_RUN_ID)
export DR_ROBOMAKER_GUI_PORT=$(expr 5900 + $DR_RUN_ID)

# 非 swarm(compose)模式
export DR_ROBOMAKER_TRAIN_PORT="8080-8089"
export DR_ROBOMAKER_EVAL_PORT="8080-8089"
export DR_ROBOMAKER_GUI_PORT="5901-5920"

变量默认值(DR_RUN_ID=0)用途
DR_ROBOMAKER_TRAIN_PORT 8080 训练 RoboMaker 的 8080 → 宿主机
DR_ROBOMAKER_EVAL_PORT 8180 评估 RoboMaker 的 8080 → 宿主机
DR_ROBOMAKER_GUI_PORT 5900 VNC(仅 DR_GUI_ENABLE=True 时有画面)
DR_WEBVIEWER_PORT 8100 NGINX 汇总页(system.env)

注意:

  • DR_RUN_ID 改变时所有端口一起偏移;本文均按当前 DR_RUN_ID=0 计算。
  • 训练和评估可以同时开(8080 与 8180 不冲突),但 8 GiB 内存的 host2 不建议。
  • 训练栈名是 deepracer-0,评估栈名是 deepracer-eval-0,两者都用 sagemaker-local 网络。

3. 训练时怎么看

3.1 直接看单栈(最常用)

http://154.222.19.221:8080/

打开后是 ROS Image Topic List 页面,点任意话题就是 MJPEG 实时流:

http://154.222.19.221:8080/stream_viewer?topic=/racecar/deepracer/kvs_stream

也可以直接取单帧:

http://154.222.19.221:8080/snapshot?topic=/racecar/deepracer/kvs_stream

训练栈启动后 RoboMaker 需要 30–60 秒才把 web_video_server 拉起来;
刚启动时页面能开但列表空/一直转圈是正常的。

3.2 多 worker 汇总页(dr-start-viewer)

cd ~/deepracer-for-cloud
source bin/activate.sh # dr-* 必须 source 后才有
dr-start-viewer # 或启动训练时加 -v:dr-start-training -v

然后访问:

http://154.222.19.221:8100/

  • 一页最多显示 6 个 worker 的 /racecar/deepracer/kvs_stream。
  • 重启训练后必须刷新 viewer,否则还连旧容器:dr-update-viewer
  • 停止:dr-stop-viewer
  • 该脚本只查找 deepracer-${DR_RUN_ID}_robomaker(训练栈),
    不包含评估栈 deepracer-eval-${DR_RUN_ID}_robomaker,所以评估时请直接用 8180。

4. 评估时怎么看

http://154.222.19.221:8180/

页面与训练完全一样(同一个 web_video_server),只是端口换成了 8180。
启动方式:

source bin/activate.sh
dr-start-evaluation -q

验证是否监听:

ss -ltn | grep 8180
# LISTEN 0 4096 *:8180 *:*
docker service ls | grep eval
# deepracer-eval-0_robomaker … *:8180->8080/tcp

dr-start-viewer / 8100 对评估无效,原因见 3.2。
评估结束后容器会被移除,8180 随之关闭;要保留画面请用 DR_EVAL_SAVE_MP4=True 落盘(见第 8 节)。


5. 页面上有哪些话题

Topic画面用途
/racecar/camera/zed/rgb/image_rect_color 车内第一视角 模型推理实际输入
/racecar/main_camera/zed/rgb/image_rect_color 跟车视角,无叠加 纯画面
/racecar/deepracer/kvs_stream 跟车视角,带叠加 训练/评估默认观看流
/racecar/deepracer/main_camera_stream 跟车视角,带叠加 评估 MP4 的录制源(DR_EVAL_SAVE_MP4=True 时)
/sub_camera/zed/rgb/image_rect_color 俯视赛道 视世界文件是否发布,列表里不一定有

当前 http://154.222.19.221:8180/ 实际返回的列表包含前四项(/sub_camera 未出现)。
每路流都是 multipart/x-mixed-replace 的 MJPEG,Chrome / Edge / Firefox 可直接看,无需插件。


6. 从自己电脑访问

6.1 能直连(公网或内网)

直接开 http://154.222.19.221:8080/ 或 http://154.222.19.221:8180/。
端口由 Docker 绑定在 *(所有网卡),只要 host2 防火墙/云安全组放行即可。
在 host2 本机上也可以访问 http://localhost:8080/ / http://localhost:8180/。

检查 host2 本机监听:

ss -ltn | grep -E ':8080|:8180|:8100|:5900|:8888|:9000|:9001'

检查防火墙(如有 ufw):

sudo ufw status

6.2 不能直连(推荐 SSH 隧道)

在 Windows PowerShell 里:

# 评估画面
ssh –N –L 8180:localhost:8180 rambo@host2

# 训练画面(另开一个)
ssh –N –L 8080:localhost:8080 rambo@host2

# 多 worker 汇总页
ssh –N –L 8100:localhost:8100 rambo@host2

然后浏览器打开 http://localhost:8180/(或 8080 / 8100)。
隧道方式不需要改防火墙,也不要把 8080/8180 暴露到公网。

VNC 同理:ssh -N -L 5900:localhost:5900 rambo@host2,再用 VNC 客户端连 localhost:5900;
但当前 GUI 关闭,连上也是空桌面。


7. Gazebo GUI(5900)与 Jupyter(8888)

7.1 Gazebo GUI

system.env 当前:

DR_GUI_ENABLE=False

所以 5900 即使被映射也没有 Gazebo 画面。要看完整仿真界面(而不只是摄像头):

# 1) 改 system.env
sed -i 's/^DR_GUI_ENABLE=.*/DR_GUI_ENABLE=True/' ~/deepracer-for-cloud/system.env
# 2) 重启训练/评估栈(必须先移除旧栈)
docker stack rm deepracer-0
sleep 15
source bin/activate.sh
dr-start-training

然后用 VNC 客户端(RealVNC / TigerVNC / Remmina)连 154.222.19.221:5900。
这不是网页;浏览器打不开 vnc://,需要 VNC 客户端或 noVNC 之类的网关。
CPU 模式下开 GUI 会明显拖慢仿真,训练/评估期间一般保持 False。

7.2 日志分析 Jupyter

source bin/activate.sh
dr-start-loganalysis

访问 http://154.222.19.221:8888/(端口 8888)。它用于分析训练日志/指标,不提供实时仿真画面。


8. 评估视频(不依赖端口)

评估时设置:

DR_EVAL_SAVE_MP4=True

结束后会把三个视角写到 MinIO:

s3://bucket/<MODEL_PREFIX>/mp4/camera-<…>/0-video.mp4

  • 评估结束后约 3 分钟在 flush,期间不要 docker stack rm,否则视频会损坏/丢失。
  • 下载示例:aws –profile minio –endpoint-url http://localhost:9000 \\
    s3 cp s3://bucket/reinvent_base-10003/mp4/ ./mp4/ –recursive

  • 这是“事后看”的方式;想“实时看”仍然用第 3/4 节的 8080/8180。

9. 当前实际状态(2026-10-22 15:41 UTC,评估结束后)

$ ss -ltn | grep -E ':8080|:8180'
(无输出:8080 / 8180 都不监听)

$ docker service ls
deepracer-eval-0_rl_coach 0/1
deepracer-eval-0_robomaker 0/1 (评估结束,端口已释放)
s3_minio 1/1 *:9000-9001->9000-9001/tcp

  • 训练栈 deepracer-0 已停(速度阶梯停在 10009 启动阶段),所以 8080 / 5900 不监听。
  • 评估已跑完:日志出现 shutting down processing monitor complete,MP4 于 15:39 UTC 落盘
    s3://bucket/reinvent_base-10003/mp4/:

    • camera-45degree/0-video.mp4 28.6 MB
    • camera-pip/0-video.mp4 33.0 MB
    • camera-topview/0-video.mp4 258 B(异常,基本为空;与 /sub_camera 未发布一致)
  • 要看回放/再次评估时,重新 dr-start-evaluation,8180 会重新监听。
  • DR_GUI_ENABLE=False,没有 Gazebo GUI。
  • 公网连通性实测(2026-10-22 15:43 UTC):9000 返回 403、9001 返回 200;
    8180 因评估结束返回 000(连接失败)。训练/评估栈启动后需再确认 8080/8180 未被安全组拦截。

10. 排查表

现象可能原因处理
8080 连接被拒 训练栈没起 / 已 docker stack rm docker service ls 看 deepracer-0_robomaker 是否 1/1
8180 连接被拒 评估栈没起 / 已结束 docker service ls 看 deepracer-eval-0_robomaker
页面能开但话题列表空 RoboMaker 还在启动 等 30–60 秒;用 docker logs 看 robomaker 容器最后 50 行
点话题一直转圈 该话题还没有第一帧 确认仿真在跑;换 /racecar/deepracer/kvs_stream 试
页面 404 / 连接重置 端口被别的进程占用,或隧道指错 用 ss -ltnp 检查端口占用;重开隧道
8100 打不开 viewer 没启动 source bin/activate.sh; dr-start-viewer
8100 画面是旧的 训练重启后没更新 viewer dr-update-viewer
5900 能连但黑屏 DR_GUI_ENABLE=False 见 7.1,或改用 8080 摄像头流
公网打不开、host2 本机正常 安全组/防火墙 用第 6.2 节 SSH 隧道,不要直接暴露端口

11. 相关文件

文件内容
deepracer-for-cloud/bin/activate.sh 端口计算公式(第 39–48 行)
deepracer-for-cloud/docker/docker-compose-training.yml 训练栈端口映射 8080/5900
deepracer-for-cloud/docker/docker-compose-eval.yml 评估栈端口映射 8180
deepracer-for-cloud/docker/docker-compose-webviewer.yml 8100 NGINX 汇总页
deepracer-for-cloud/scripts/viewer/start.sh viewer 生成逻辑(只查训练栈)
deepracer-for-cloud/system.env DR_GUI_ENABLE、DR_WEBVIEWER_PORT
deepracer-for-cloud/docs/video.md 上游说明:话题、端口、MP4
docs/03-运行框架.md §7.3 容器拓扑与端口表
赞(0)
未经允许不得转载:171主机测评 » 05 - 端口与实时画面(训练 / 评估)
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址