Appearance
Docker 服务构成与运行架构
当前系统主体由 Orin 上的 Docker 容器管理。理解这台机器时,应先看容器、镜像、网络、启动入口和实际进程,再把它们映射到 ROS node / topic / service。
总览
| 项 | 当前运行态 |
|---|---|
| 当前运行容器 | 12 个业务容器 |
| Compose project | navi_project |
| 主体网络方式 | 多数容器使用 host 网络 |
| 进程管理 | 多数容器入口脚本启动 supervisord |
| 非 supervisor 容器 | naviai_navbrain_ros、naviai_robot_viewer |
| Web 端口 | naviai_robot_viewer 暴露 10002 -> 3000/tcp |
| 容器 SSH | 当前仅 naviai_demos 发现活动 sshd,端口 2222 |
完整表见:Docker 容器完整概要。
容器分类
| 分类 | 容器 | 主要用途 |
|---|---|---|
| 核心机器人 / ROS 服务 | naviai_robot、naviai_chassis、naviai_navbrain_ros、naviai_rosbridge | Orin 上的机器人状态、底盘桥接、任务流程服务、WebSocket 接入 |
| 感知与传感器 | naviai_sensor、naviai_sensor_lidar、naviai_perception、naviai_map_server | 相机、雷达、感知、建图/定位辅助、地图服务 |
| 可视化与远程界面 | naviai_nviz、naviai_novnc、naviai_robot_viewer | 可视化、noVNC 虚拟桌面、Web 查看器 |
| 开发 / 演示入口 | naviai_demos | demos 镜像、ROS 环境、SSH/开发入口能力 |
重点容器/模块说明
这一段按“谁在提供能力”理解系统。表里优先写能力、已确认框架和重点服务节点,完整节点清单见:Docker 容器完整概要。
| 类型 | 模块/来源 | 提供的能力 | 具体实现线索 |
|---|---|---|---|
| Orin Docker 容器 | naviai_robot | Orin 本机状态、资源、错误、Wi-Fi、监控等基础服务 | /basic_info_node(基础信息)/monitor_node(监控)/orin_resource_publisher(资源状态)/orin_errors_publisher(错误状态)/orin_wifi_list_server / /orin_connect_wifi_server(Wi-Fi 查询/连接) |
| Orin Docker 容器 | naviai_chassis | Orin 到底盘侧的桥接;提供底盘状态、里程计、IMU、电机/舵轮信息等接口 | /agv_websocket_node(ROS 侧底盘桥接)容器进程可见 wa2_node(底盘接口实现) |
| Orin Docker 容器 | naviai_navbrain_ros | 任务流程、启动检查、语音/对话相关服务 | /startup_check(启动检查)/navbrain(任务流程)/avvtn_node(语音/对话入口)与 ROS2 Navigation2(Nav2)无关 |
| Orin Docker 容器 | naviai_rosbridge | 面向非 ROS 环境的 WebSocket 接入入口 | rosbridge_suite/rosbridge_websocket(WebSocket 接入)/rosapi(ROS graph/API 查询)入口: ws://192.168.217.100:9090 |
| Orin Docker 容器 | naviai_sensor | 头部相机、相机信息和传感器重启服务 | realsense2_camera / RealSense ROS 驱动/zj_humanoid/sensor/realsense_head/realsense2_camera(RealSense 相机节点)/camera_info_server_node(相机信息)/sensor_restart_service(传感器重启) |
| Orin Docker 容器 | naviai_sensor_lidar | Livox MID360 雷达数据接入 | livox_ros_driver2/livox_lidar_publisher2(MID360 点云和 IMU 数据)发布 /livox/lidar、/livox/imu |
| Orin Docker 容器 | naviai_perception | LIO、建图、后处理、静态 TF 和点云测试服务 | /lio_service(LIO 服务)/mapping_service(建图服务)/post_processing_service(后处理)/bodynorm_to_imu1(TF)/test_grid(测试点云/栅格) |
| Orin Docker 容器 | naviai_map_server | 地图服务,为导航/定位链路提供地图数据 | /nav_map_server_1783228903900406112(地图服务节点,后缀可能随启动变化)发布地图和地图元数据 |
| 外部 ROS 设备 | jzrobot-a / 192.168.217.1 | ROS master、底盘、定位、路径规划、代价地图、轨迹生成等底盘导航侧服务 | Cartographer/cartographer_node、/cartographer_tf_publisher/scan_localiser(激光定位)/costmap_pub_node(代价地图)/nav_manager_node(导航管理)/trajectory_generator(轨迹生成)/driver_manager_node / /jzhw_node(底盘/硬件管理) |
| 外部 ROS 设备 | pico.zjrx.com / 192.168.217.66 | 上肢、灵巧手、头顶屏、机器人/Pico 状态等服务 | /video_display(头顶屏显示)/zj_humanoid/hand(灵巧手)/zj_humanoid/zj_humanoid_naviai_robot(上肢相关接口)/zj_humanoid/robot(机器人状态)/resource_publisher / /errors_publisher(Pico 资源和错误状态) |
网络模型
多数容器使用 host 网络。这对 ROS1 很重要,因为 ROS 节点不只是访问 master,还需要节点之间互相回连 XMLRPC/TCPROS 端口。
| 网络类型 | 容器 | 理解方式 |
|---|---|---|
host | sensor、perception、robot、rosbridge、sensor_lidar、map_server、chassis、nviz、demos、navbrain_ros、novnc | 直接共享宿主机网络栈,服务监听面属于 Orin 宿主机网络 |
| bridge | naviai_robot_viewer | 独立 Web 前端服务,宿主机 10002 映射到容器 3000 |
启动与进程管理
| 容器 | 拉起方式 | 当前重点 |
|---|---|---|
naviai_sensor | entrypoint -> supervisord | Realsense、OAK、传感器重启服务;wrist_camera 曾为 FATAL |
naviai_perception | entrypoint -> supervisord | lio_srv、mapping_srv、post_processing_srv、静态 TF、点云/测试网格 |
naviai_robot | entrypoint -> supervisord | Orin 资源、错误、Wi-Fi、监控、基础信息 |
naviai_rosbridge | entrypoint -> supervisord | rosbridge_websocket.launch、rosapi_node |
naviai_sensor_lidar | entrypoint -> supervisord | Livox MID360 驱动链路 |
naviai_map_server | entrypoint -> supervisord | 地图服务节点 |
naviai_chassis | entrypoint -> supervisord | start.sh 拉起底盘桥接节点 |
naviai_nviz | entrypoint -> supervisord | 当前未看到业务 rviz 进程,仅确认 roscore/rosmaster/rosout |
naviai_demos | entrypoint -> supervisord | sshd 常驻,作为演示/开发入口 |
naviai_navbrain_ros | entrypoint -> /navi_ws/start_ros_nodes_product.sh | navbrain、avvtn_node、startup_check;脚本尝试的 nav_service.py 未实际运行 |
naviai_novnc | /app/entrypoint.sh -> supervisord | Xvfb :99、x11vnc、websockify、fluxbox |
naviai_robot_viewer | npm run dev | Vite Web 查看器 |
开发含义
开发接入仍以 ROS topic / service 或 rosbridge 为入口。容器信息用于理解服务边界、定位依赖来源,并在需要新增常驻能力时决定进程应该如何管理。
- 开发接口先看 主要 ROS 话题/服务。
- 需要理解接口背后的服务来源时,再回到本页看容器或外部设备归属。
- 非 ROS 环境接入走 rosbridge;原生 ROS 程序放进独立 Docker ROS 开发容器。
- 需要常驻能力时,再明确它应成为新容器、新进程,还是加入已有容器的 supervisor 管理。