Appearance
NAVIAI Orin Docker 容器概要
总览
当前运行容器共 12 个,Compose project 标签均为 navi_project。其中 11 个容器来自 /home/naviai/navi_project/docker-compose.yaml,naviai_robot_viewer 来自 /home/naviai/.zj_humanoid/v1.3.4_920ccf1c/docker-compose.yaml。
整体是 ROS1 / Noetic 风格的拆分服务架构,多数容器使用 host 网络,便于 ROS、传感器、硬件设备和本机服务直接通信。
| 项目 | 概要 |
|---|---|
| 运行容器数 | 12 |
| 主要网络模式 | 11 个 host,1 个 bridge 网络 |
| 重启策略 | 全部为 unless-stopped |
| 权限 | 除 naviai_novnc 外,其余均为 privileged |
| NVIDIA runtime | sensor、perception、rosbridge、sensor_lidar、demos |
| 对外端口 | naviai_robot_viewer 暴露 10002 -> 3000/tcp |
| SSH 服务 | 仅 naviai_demos 发现活动 sshd,端口 2222 |
| 进程拉起方式 | 多数容器由容器入口脚本启动 supervisord;naviai_navbrain_ros 和 naviai_robot_viewer 不使用 supervisor |
| 健康检查 | docker ps 显示均无 healthcheck |
| 当前运行状态 | 12 个业务容器为 running;另有 test_rosenv 为 exited,不计入运行栈统计 |
核心机器人 / ROS 服务
| 容器 | Service | 网络 | Runtime | 权限 | 工作目录 | 大概用途 |
|---|---|---|---|---|---|---|
naviai_robot | robot | host | runc | privileged | /third_party | 机器人主体 ROS 服务,偏系统/机器人功能入口 |
naviai_chassis | chassis | host | runc | privileged | /third_party | 底盘/运动相关接口或控制服务 |
naviai_navbrain_ros | navbrain_ros | host | runc | privileged | /navi_ws | 机器人“大脑”ROS 节点启动容器,执行 /navi_ws/start_ros_nodes_product.sh |
naviai_rosbridge | rosbridge | host | nvidia | privileged | /third_party | ROS 桥接/接口代理服务,可能服务外部或上层应用 |
感知与传感器
| 容器 | Service | 网络 | Runtime | 权限 | 工作目录 | 大概用途 |
|---|---|---|---|---|---|---|
naviai_sensor | sensor | host | nvidia | privileged | /ros_noetic/catkin_ws/src | 传感器主服务,可能涉及相机/硬件设备 |
naviai_sensor_lidar | sensor_lidar | host | nvidia | privileged | /third_party | 激光雷达相关 ROS 服务 |
naviai_perception | perception | host | nvidia | privileged | /third_party | 感知、建图、定位相关服务 |
naviai_map_server | map_server | host | runc | privileged | /third_party | 地图服务,给导航/定位链路提供地图数据 |
可视化、演示与远程界面
| 容器 | Service | 网络 | Runtime | 权限 | 工作目录 | 大概用途 |
|---|---|---|---|---|---|---|
naviai_nviz | nviz | host | runc | privileged | /workspace | 机器人/ROS 可视化工具 |
naviai_demos | demos | host | nvidia | privileged | /navi_ws | 演示、样例或调试流程容器 |
naviai_novnc | novnc | host | runc | 非 privileged | 空 | noVNC/远程图形界面服务 |
naviai_robot_viewer | robot_viewer | navi_project_default | runc | privileged | /app | Web 机器人查看器,bridge 网络,宿主机端口 10002 映射到容器 3000 |
镜像与启动参数摘要
| 容器 | 镜像 | Entrypoint / Cmd 摘要 |
|---|---|---|
naviai_sensor | sensor:22CUDA_v1 | /bin/bash -c /etc/naviai/entrypoint.sh |
naviai_perception | environment:ros1_260310 | /etc/naviai/entrypoint.sh |
naviai_robot | environment:ros1_260310 | /etc/naviai/entrypoint.sh |
naviai_rosbridge | environment:ros1_260310 | /etc/naviai/entrypoint.sh |
naviai_sensor_lidar | environment:ros1_260310 | /etc/naviai/entrypoint.sh |
naviai_map_server | environment:ros1_260310 | /etc/naviai/entrypoint.sh |
naviai_chassis | environment:ros1_260310 | /etc/naviai/entrypoint.sh |
naviai_nviz | nviz:ros1_260311 | /etc/naviai/entrypoint.sh |
naviai_demos | demos:v1.0.2 | /etc/demos/entrypoint.sh |
naviai_navbrain_ros | navbrain_ros:v1.2.4 | /usr/local/bin/entrypoint.sh + /navi_ws/start_ros_nodes_product.sh |
naviai_novnc | novnc:v1.0.2 | /app/entrypoint.sh |
naviai_robot_viewer | robot_viewer:v1.0.2 | npm run dev -- --host 0.0.0.0 |
挂载与设备映射摘要
这里仅记录数量,不展开具体宿主机路径。
| 容器 | 挂载数 | 设备映射数 | 备注 |
|---|---|---|---|
naviai_sensor | 12 | 1 | 传感器容器,设备访问面较大 |
naviai_perception | 12 | 1 | 感知容器,挂载配置/数据较多 |
naviai_robot | 8 | 0 | 机器人主体服务 |
naviai_rosbridge | 8 | 1 | 桥接服务,带设备映射 |
naviai_sensor_lidar | 6 | 1 | 雷达/传感器相关 |
naviai_map_server | 5 | 1 | 地图服务 |
naviai_chassis | 4 | 1 | 底盘/运动相关 |
naviai_nviz | 7 | 1 | 可视化相关 |
naviai_demos | 5 | 1 | 演示/样例相关 |
naviai_navbrain_ros | 4 | 2 | 大脑 ROS 节点容器,设备映射数最多 |
naviai_novnc | 1 | 0 | 远程桌面/图形界面 |
naviai_robot_viewer | 0 | 0 | 独立 Web 查看器 |
网络分类
host 网络容器
sensor、perception、robot、rosbridge、sensor_lidar、map_server、chassis、nviz、demos、navbrain_ros、novnc
这些容器直接共享宿主机网络栈,没有 Docker 层端口映射记录。host 网络符合 ROS/机器人硬件服务常见部署方式,但也意味着服务监听端口属于宿主机网络面。
bridge 网络容器
robot_viewer
使用 navi_project_default,容器 IP 位于 Docker bridge 网络内,并显式映射 10002 -> 3000/tcp,更像独立 Web 前端服务。
SSH 端口复核
| 容器 | 状态 | 网络 | SSH 结论 | 端口/暴露方式 |
|---|---|---|---|---|
naviai_sensor | running | host | 未发现活动 sshd/dropbear | 无容器 SSH 端口 |
naviai_perception | running | host | 未发现活动 sshd/dropbear | 无容器 SSH 端口 |
naviai_robot | running | host | 未发现活动 sshd/dropbear | 无容器 SSH 端口 |
naviai_rosbridge | running | host | 未发现活动 sshd/dropbear | 无容器 SSH 端口 |
naviai_sensor_lidar | running | host | 未发现活动 sshd/dropbear | 无容器 SSH 端口 |
naviai_map_server | running | host | 未发现活动 sshd/dropbear | 无容器 SSH 端口 |
naviai_chassis | running | host | 未发现活动 sshd/dropbear | 无容器 SSH 端口 |
naviai_nviz | running | host | 未发现活动 sshd/dropbear | 无容器 SSH 端口 |
naviai_demos | running | host | 发现活动 sshd | 2222/tcp,直接监听在宿主机网络面 |
naviai_navbrain_ros | running | host | 未发现活动 sshd/dropbear | 无容器 SSH 端口 |
naviai_novnc | running | host | 未发现活动 sshd/dropbear | 无容器 SSH 端口;其 VNC/noVNC 为独立图形服务 |
naviai_robot_viewer | running | navi_project_default | 未发现活动 sshd/dropbear | 无 SSH 映射;仅 Web 10002 -> 3000/tcp |
test_rosenv | exited | 未复核运行态 | 容器未运行,未定位活动 SSH 监听 | 不计入当前运行栈 |
naviai_demos 的连接形式是 ssh -p 2222 <user>@<Orin_IP>。宿主机自己的 22/tcp 是另一套 SSH 服务,不属于 naviai_demos。
容器进程拉起复核
表中“supervisor”表示由容器内部 supervisord 管理,不是跨容器总控。
| 容器 | 拉起方式 | 配置/脚本试图拉起 | 当前实际运行进程摘要 | 备注 |
|---|---|---|---|---|
naviai_sensor | Entrypoint -> supervisord | realsense、wrist_camera、oak_camera、sensor_restart_service | supervisord;oak_camera_launcher.py;realsense_config_launcher.py;sensor_restart_service.py;rs_camera.launch;oak_driver_node.launch;nodelet;camera_info_server.py | supervisor 状态显示 wrist_camera 为 FATAL,未实际常驻 |
naviai_perception | Entrypoint -> supervisord | lio_srv、mapping_srv、post_processing_srv、static_tf.launch、octree/ros_app_run | supervisord;static_tf.launch;lio_srv;mapping_srv;post_processing_srv;ros_app_run;static_transform_publisher | 配置项均能在当前进程树中找到对应运行进程 |
naviai_robot | Entrypoint -> supervisord | orin_errors_publisher、orin_resource_publisher、orin_wifi_list_server、orin_connect_wifi_server、monitor、work_status_from_start、basic_info_node | supervisord;basic_info_node;monitor;orin_connect_wifi_server;orin_errors_publisher;orin_resource_publisher;orin_wifi_list_server;work_status_from_start | 机器人基础状态/资源/Wi-Fi/监控节点 |
naviai_rosbridge | Entrypoint -> supervisord | catkin_make 一次性构建安装;rosbridge_websocket.launch | supervisord;rosbridge_websocket.launch;rosbridge_websocket;rosapi_node | catkin_make 当前不在进程树中,倾向于启动期一次性任务已结束 |
naviai_sensor_lidar | Entrypoint -> supervisord | livox_ros_driver2 msg_MID360.launch | supervisord;msg_MID360.launch;livox_ros_driver2_node | 雷达驱动链路正在运行 |
naviai_map_server | Entrypoint -> supervisord | nav_map_server_node | supervisord;nav_map_server_node | 地图服务节点正在运行 |
naviai_chassis | Entrypoint -> supervisord | bash /opt/ros/noetic/share/wa1/scripts/start.sh | supervisord;start.sh;wa2_node | start.sh 进一步拉起底盘节点 |
naviai_nviz | Entrypoint -> supervisord | bash /opt/ros/noetic/share/nviz/scripts/run.sh,脚本内部尝试启动 roscore 和 rviz | supervisord;roscore;rosmaster;rosout | 当前未看到 rviz;此前日志显示 run.sh 中工作空间 setup 缺失/rviz 路径问题 |
naviai_demos | Entrypoint -> supervisord | sshd -D -e | supervisord;sshd;另有当前交互/VS Code Remote/Codex 相关进程 | 只有 sshd 是 supervisor 配置拉起;其余交互进程来自后续连接 |
naviai_navbrain_ros | Docker Entrypoint -> /navi_ws/start_ros_nodes_product.sh,不使用 supervisor | navbrain_ros.launch;avvtn_node.launch;python nav_service.py | start_ros_nodes_product.sh;navbrain_ros.launch;avvtn_node.launch;avvtn_node;startup_check.py;navbrain_ai_service.py | nav_service.py 不存在,日志显示 No such file or directory,所以未实际运行 |
naviai_novnc | /app/entrypoint.sh -> supervisord | fluxbox、websockify、x11vnc、xterm、Xvfb | supervisord;websockify;Xvfb :99;x11vnc;fluxbox;xterm;bash | noVNC/VNC 虚拟桌面栈正在运行 |
naviai_robot_viewer | Docker docker-entrypoint.sh -> npm run dev,不使用 supervisor | npm run dev -- --host 0.0.0.0,由 package script 启动 vite | npm run dev;sh -c vite;node vite.js;esbuild | Web 查看器/Vite 开发服务器 |
test_rosenv | /ros_entrypoint.sh bash | bash | 无 | 容器为 exited,无当前运行进程 |
ROS 节点归属表
当前 ROS master 上还存在 jzrobot-a、192.168.217.66 等外部设备节点,未归入本表的 Docker 容器。
| 容器 | 已确认由该容器拉起的 ROS 节点 | 配置/进程中存在但当前未确认的节点 | 备注 |
|---|---|---|---|
naviai_sensor | /sensor_restart_service;/camera_info_server_node;/zj_humanoid/sensor/realsense_head/realsense_head;/zj_humanoid/sensor/realsense_head/realsense2_camera | wrist_camera 对应 supervisor 项为 FATAL;oak_camera_launcher.py 和 realsense_config_launcher.py 是启动器/launch 进程,不作为最终业务节点列入 | 传感器相机链路,Realsense 节点已确认 |
naviai_perception | /lio_service;/mapping_service;/post_processing_service;/bodynorm_to_imu1;/test_grid | 无 | /test_grid 对应容器内 ros_app_run |
naviai_robot | /basic_info_node;/monitor_node;/orin_connect_wifi_server;/orin_errors_publisher;/orin_resource_publisher;/orin_wifi_list_server;/work_status_from_start | 无 | 机器人本机状态、资源、Wi-Fi 和监控类节点 |
naviai_rosbridge | /rosbridge_websocket;/rosapi | catkin_make 是启动期构建任务,不是常驻 ROS 节点 | ROS WebSocket/API 桥接 |
naviai_sensor_lidar | /livox_lidar_publisher2 | 无 | Livox/MID360 雷达节点 |
naviai_map_server | /nav_map_server_1783228903900406112 | 节点名带启动时生成的动态后缀 | 地图服务节点 |
naviai_chassis | /agv_websocket_node | 容器内实际存在 /opt/ros/noetic/lib/wa2/wa2_node 进程 | /agv_websocket_node 的 ROS PID 与容器内 wa2_node PID 对应;/wa2_node、/chassis 等候选名未在 rosnode list 中确认 |
naviai_nviz | 当前未确认业务 ROS 节点 | 容器内存在 roscore、rosmaster、rosout 进程;配置尝试启动 rviz,但当前未见 rviz 进程 | 当前查询的 ROS master 指向 192.168.217.1:11311,不是按 naviai_nviz 本地 roscore 归属统计 |
naviai_demos | 无 | 无 | 当前只作为 SSH/演示入口;未发现常驻 ROS 节点 |
naviai_navbrain_ros | /startup_check;/navbrain;/avvtn_node | python nav_service.py 在脚本中被尝试启动,但文件不存在,未形成节点 | 任务流程、启动检查、语音/对话相关节点;与 ROS2 Navigation2(Nav2)无关 |
naviai_novnc | 无 | 无 | noVNC/VNC 图形服务,不是 ROS 节点容器 |
naviai_robot_viewer | 无 | 无 | Web/Vite 前端服务,不是 ROS 节点容器 |
test_rosenv | 无 | 无 | 容器已退出 |
外部/未归属 ROS 节点来源表
这里列出未归入本机 Docker 容器的 ROS 节点。来源判断以节点自报 XMLRPC URI 为准;jzrobot-a 在 naviai_chassis 容器内解析为 192.168.217.1,pico.zjrx.com 在当前环境解析为 192.168.217.66,orin.zjrx.com 为 Orin 本机 192.168.217.100。
| 来源设备/地址 | 节点 | 说明 |
|---|---|---|
jzrobot-a / 192.168.217.1 | /adele_server;/agent3;/caliber_server;/cartographer_node;/cartographer_tf_publisher;/costmap_pub_node;/driver_manager_node;/emerg_clear_all;/exit_test_serivice;/footprint;/ibvs_constrained;/iobox;/iosys_audio;/jjobs_caliber_checker;/jjobs_daemon_34720073;/jlinks_daemon;/jmother;/joystick;/joystick_controller;/jrosth_1170748167;/jz_env;/jz_system;/jzhw_node;/jzhw_node_tf;/jzui;/lasermark_node;/lego_map_optimization;/nav_manager_node;/nav_net;/osmanager;/precision_check;/rosbag;/rosout;/scan_filter;/scan_localiser;/servo_net;/soft_lowbattery_off;/speed_manager;/tag_localiser;/trajectory_generator;/volume_control_8573_1783228862268 | 外部 jzrobot 设备/控制侧节点;包含导航、硬件、任务、UI、底层状态等节点 |
pico.zjrx.com / 192.168.217.66 | /connect_wifi_server;/errors_publisher;/fake/upperlimb;/resource_publisher;/startup_manager_1702_1783228900183;/video_display;/wifi_list_server;/zj_humanoid/battery_voice_alarm;/zj_humanoid/hand;/zj_humanoid/mode_manager;/zj_humanoid/robot;/zj_humanoid/uplimb_tf_publisher_node;/zj_humanoid/web_vel_relay;/zj_humanoid/zj_humanoid_naviai_robot | 外部 pico 设备节点;其中 /video_display 是头顶屏幕/显示相关服务节点 |
127.0.0.1:6607 | /localagent | 节点自报 localhost,当前从 Orin 查询时通信失败;未能可靠定位到具体容器或外部设备,可能是旧注册或只在发布设备本机可访问 |
217 网段设备归属复核
| 地址/对象 | 当前归属判断 | 主要证据 |
|---|---|---|
192.168.217.17 | Livox MID360 雷达 | naviai_sensor_lidar 内 MID360_config.json 明确配置 lidar IP 为 .17;/livox_lidar_publisher2 发布 /livox/lidar 和 /livox/imu |
192.168.217.66 / pico.zjrx.com | 上肢/手/头顶屏/部分机器人状态外部设备 | /zj_humanoid/upperlimb/...、/zj_humanoid/hand/...、/zj_humanoid/robot/...、/zj_humanoid/robot/face_show/media_play 的 provider 均指向 .66;/video_display 也在 .66 |
192.168.217.1 / jzrobot-a | 底盘、导航、定位、示教/视觉伺服相关外部控制侧 | naviai_chassis 内 /etc/hosts 映射 jzrobot-a/z 到 .1;大量导航/底盘节点 URI 为 jzrobot-a;/robot_arm_teaching_server provider 为 /ibvs_constrained,URI 在 jzrobot-a |
192.168.217.100 / orin.zjrx.com | 当前 Orin 宿主机 | 宿主机 eno1 地址;多数本机 Docker 容器使用 ROS_IP=192.168.217.100 |
192.168.217.50、192.168.217.107、192.168.217.254 | 仅确认曾出现在二层邻居表,未能可靠归属 | 各运行容器常见配置/日志目录中未命中这些 IP;当前未看到明确 ROS 节点或服务 provider 指向这些地址;不能据此判断为雷达、机械臂或控制器 |
补充:naviai_sensor 中确认到 RealSense、OAK、腕部相机等配置,主要通过 USB、/dev/video*、序列号或设备路径接入;这部分不是 217 网段 IP 设备。
简要结论
这是一个以 ROS1 为核心、Docker Compose 管理的机器人运行栈:底层硬件、传感器、感知、导航大多使用 host 网络和高权限运行;Web 查看器单独走 bridge 网络并开放 10002 端口。复核后需要特别注意,robot_viewer 虽属于同一 Compose project 名称,但配置来源路径与其他 11 个运行容器不同。SSH 方面,当前仅 naviai_demos 暴露活动 SSH 服务,端口为 2222。进程管理方面,多数运行容器是在容器内部用 supervisord 看护业务进程,naviai_navbrain_ros 和 naviai_robot_viewer 则分别由启动脚本和 Node/Vite 入口直接拉起。ROS 节点方面,当前可明确归属到本机 Docker 容器的主要节点集中在 sensor、perception、robot、rosbridge、sensor_lidar、map_server、chassis 和 navbrain_ros;其余节点主要来自外部 jzrobot-a 与 pico.zjrx.com 设备。217 网段复核中,.17 可确认为 MID360 雷达,.66 可归为上肢/手/头顶屏等外部设备,.1 可归为底盘/导航/示教控制侧;.50、.107、.254 暂无可靠 Docker/ROS 归属证据。