调度器部署在orangepi上,作为结构物巡检项目,算法间的调度器,用来自动拉取上位机算法,结算成运动指令,通过mavros发给下位机,来实现自动巡检的功能
当前 main 分支使用:
/home/orangepi/pipe_algorithm/camera_algorithm.py
算法直接打开相机,将左右目分别旋转 180 度后保持原左右顺序,再使用左目
运行两阶段中心线算法。相机请求以 MJPG 模式采集 2560x960 @ 30 FPS;
算法观测不包含视频帧号或视频时间。
图像 topic:
/inspection/pipeline_debug/compressed:带 YOLO 掩膜、中心线、拟合直线 和交点的算法处理 JPEG 压缩流,JPEG 质量为 65。它与原始流并行存在, SSH 上位机配置 ROS 网络后可在rqt_image_view中查看;实际发布帧率 受算法推理速度限制。/inspection/camera/image_raw/compressed:旋转校正后的高清完整相机 JPEG 原始流,分辨率保持2560x960,JPEG 质量为 90,供本地录像节点 使用,也可按需在上位机查看。
使用 scheduler_demo.launch 或 pipeline_inspection_demo.launch 启动调度器后,
管道视频算法和录像节点会自动启动,但默认不开始写 AVI。默认录像目录为
~/pipe_recordings/water_test,必须通过 ROS 服务手动开始录像:
roslaunch scheduler scheduler_demo.launch# 开始录像
rosservice call /pipeline_video_recorder/set_recording "data: true"
# 停止并封装当前 AVI
rosservice call /pipeline_video_recorder/set_recording "data: false"
# 查询状态
rosservice call /pipeline_video_recorder/get_status录像保存在 ~/pipe_recordings/water_test。每次开始服务调用创建一段
不限时长的 MJPEG AVI,直到停止服务或录像进程退出才结束。相机仍请求
30 FPS 采集;根据当前 2560x960 原始 JPEG 话题约 13.9 FPS 的实测
发布速率,AVI 默认以 14 FPS 封装,使播放时长接近真实录制时长。
正在写入时使用 .part.avi,正常结束后原子改名为 .avi;异常断电时
当前 .part.avi 仍可能损坏。录像器通过 FFmpeg 将 ROS 消息中的 JPEG
直接封装进 AVI,不再进行 JPEG 解码和二次 MJPEG 编码;停止时会先排空
已经接收的帧队列。状态服务会返回当前及上一段的 written、dropped
帧数。
可在启动时覆盖 AVI 封装帧率,例如:
roslaunch scheduler scheduler_demo.launch pipeline_video_record_fps:=14.0pipeline_logging.launch 默认同时记录 rosbag 和 JSONL。bag 包含完整
管道观测、控制 trace、RC override、RCOut、飞控状态、IMU 和本地位姿,
但不记录图像流,避免 bag 体积失控。控制 trace 不包含视频时间戳。