chore: add README, LICENSE and CONTRIBUTING for open source
星务遥控遥测(Telemetry, Tracking & Command)接口抽象与任务指令转发。
./install.sh
或构建 Debian 安装包:
./build-dpkg.sh
请参考仓库中的示例文件与 examples/ 目录。
examples/
MIT License — 详见 LICENSE 文件。
以下内容来自原项目的 Readme.txt,保留供参考:
# ttc-daemon(遥控遥测接口)使用说明 ttc-daemon服务用于连接星上各个任务的json文件和星务遥控遥测数据。 星务发送的遥控指令,与各软件任务相关的主要是192字节的任务参数指令。 该部分指令数据为透明二进制数据,星务透明转发。 地面规划时将各任务的参数数据转换为二进制数据,交地面站通过遥控指令发送到星上。 ttc-daemon接收该数据块,按照预定义的格式解析转换为各个任务的指令json文件,写入到对应路径。 ## 任务的定义 ttc-daemon实现为与任务无关,根据任务定义模板自动进行数据的解析和转发。 任务定义模板位于./config下,文件格式为json,每个文件定义一个任务。 ttc-daemon接收到星务指令后,在./config下扫描所有模板并匹配数据, 如果找到匹配的模板,则按模板定义转换数据为json文件并写入模板中指定的路径。 任务定义模板文件的格式为: { "JOB_TYPE": 48, "CMD_PATH": "/var/opt/SatService/autorun", "PRE_EXEC": "systemctl start tof-camera.service" "JOB_PARAMS": { "name": [32,32,"string"], "cmd": [64,128,"string"] } } 字段说明: * JOB_TYPE - 预先分配的任务类型号,ttc-daemon主要按类型匹配任务模板 * CMD_PATH - 任务指令json文件的路径,ttc-daemon将任务参数转换为json文件后写入该路径下 * PRE_EXEC - 任务前置命令,可以为任何linux命令,用于启动前置条件 * JOB_PARAMS - 任务详细参数定义。参数名即为写入到任务指令json文件中的参数名。 参数值是一个list,其中第一个值是数据在二进制指令数据中的偏移量,第二个值为数据字节数, 第三个值可选,可以指定"string"/"boolean"等类型,用于二进制值到json数值的转换。 JOB_PARAMS支持嵌套,嵌套的格式将会按原结构输出到任务json文件中。例如imaging_defines.json中: { "JOB_TYPE": 16, "CMD_PATH": "/var/opt/SatService/CameraService/image/json", "PRE_EXEC": "systemctl start tof-camera.service", "JOB_PARAMS": { "START_TIME": [12,8], "CAMERA_COUNT": [20,1], "ACTIVE_CAMERA_ID": [21,1], "FRAME_TIME": [22,2], "JPEG_QUALITY": [28,1], "I_FRAME_INTERVAL": [29,1], "I_FRAME_QUALITY": [30,1], "P_FRAME_QUALITY": [31,1], "B_FRAME_QUALITY": [32,1], "B_FRAME_COUNT": [33,1], "CAMERA0": { "FRAME_FREQUENCY": [34,1], "FRAME_WIDTH": [35,2], "FRAME_HEIGHT": [37,2], "EXPOSURE_TIME": [39,4], "GAIN": [43,1], "AUTO_GAIN": [44,1,"boolean"], "AUTO_EXPOSURE":[45,1,"boolean"] }, "CAMERA1": { "FRAME_FREQUENCY": [46,1], "FRAME_WIDTH": [47,2], "FRAME_HEIGHT": [49,2], "EXPOSURE_TIME": [51,4], "GAIN": [55,1], "AUTO_EXPOSURE": [56,1,"boolean"] }, "CAMERA2": { "FRAME_FREQUENCY": [58,1], "FRAME_WIDTH": [59,2], "FRAME_HEIGHT": [61,2], "EXPOSURE_TIME": [63,4], "GAIN": [67,1], "AUTO_EXPOSURE": [68,1,"boolean"] }, "FILENAMEPREFIX": [70,128,"string"] } } ## 生成任务指令数据 提供给星务的指令数据是二进制192字节数据包。 可以使用json_to_bin.py将任务json文件转换为所需的二进制数据。 例如: ./json_to_bin.py -o download.bin example/download.json 以上命令读取example/download.json文件,将二进制数据写入到download.bin 例如, download.json文件的内容为: {"Node":2,"Type":32,"Data":"/home/nvidia/Documents/SatUPDLTestFiles/DownloadFile_DataFile/Cam0_Image*"} 则输出文件的内容为: $ hd download.bin 00000000 11 02 20 01 00 00 00 00 00 00 00 00 00 00 00 00 |.. .............| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00000040 2f 68 6f 6d 65 2f 6e 76 69 64 69 61 2f 44 6f 63 |/home/nvidia/Doc| 00000050 75 6d 65 6e 74 73 2f 53 61 74 55 50 44 4c 54 65 |uments/SatUPDLTe| 00000060 73 74 46 69 6c 65 73 2f 44 6f 77 6e 6c 6f 61 64 |stFiles/Download| 00000070 46 69 6c 65 5f 44 61 74 61 46 69 6c 65 2f 43 61 |File_DataFile/Ca| 00000080 6d 30 5f 49 6d 61 67 65 2a 00 00 00 00 00 00 00 |m0_Image*.......| 00000090 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 000000c0 ## 增加新的任务类型 增加新的任务类型,只需要在config下增加一个任务定义文件即可,格式如前文所述,文件名任意。 ## 预定义任务类型 目前已有若干预定义任务,包括 * imaging任务 - JOB_TYPE 16, 用于常规拍照 * download任务 - JOB_TYPE 32, 用于常规数传 * cleanup任务 - JOB_TYPE 33, 用于清理数传缓存数据 * autorun任务 - JOB_TYPE 48, 用于运行任意命令,包括各个算法任务 ### autorun任务的使用 autorun任务参数json如下: {"name":"autorun-example","cmd":"echo Hello World!"} 其中"cmd"字段为要执行的命令。"name"字段可选,可以给这次运行定义一个可读的名称,以便后续的状态查询等。 autorun任务运行时通过systemd-run调用"cmd"字段指定的命令。 其内部调用方式为"systemd-run --unit <name> <cmd>" systemd将会代理命令的输出日志,将命令的stdout和stderr记录下来。 如果定义了name,可以通过以下指令查询命令的执行日志: journalctl -u <name> 如果未定义name,则autorun会自动分配一个临时名称,格式为"autorun-%d", 其中%d为任务的序号,每次开机后从0开始累加。 autorun和download任务配合可以执行复杂的维护工作。例如:可以通过一个autorun指令查询另一个autorun指令的输出: # autorun-example.json {"name":"autorun-example", cmd":"echo Hello World!"} # autorun-query-result.json {"cmd":"journalctl -u autorun-example --no-pager > /var/run/autorun-example.log"} # download.json {"Node":2,"Type":32,"Data":"/var/run/autorun-example.log"} 以上任务的组合将会执行"echo Hello World!",查询该命令的运行和输出日志并写入到/var/run/autorun-example.log, 然后将该文件下传。 将以上三个json文件通过json_to_bin.py生成任务包数据并依次通过遥控通道上注后,将会通过数传通道得到autorun-example.log文件 ### 图形化TTC任务指令生成器使用说明 1. 直接运行:可在 release 目录中双击 exe,启动图形化 TTC 任务指令生成器。 2. 调试或修改代码:使用 ttc_gui.py 启动程序进行开发或调试。 3. 打包发布:使用 build_exe.py 将 ttc_gui.py 程序打包为可执行文件。打包后会生成 release 目录,整个目录可直接分发给他人使用。
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
SDS³ TTC
星务遥控遥测(Telemetry, Tracking & Command)接口抽象与任务指令转发。
功能
安装
或构建 Debian 安装包:
使用
请参考仓库中的示例文件与
examples/目录。许可证
MIT License — 详见 LICENSE 文件。
原始说明
以下内容来自原项目的 Readme.txt,保留供参考: