BAS on-board human activity recognition: working HAR assistant (har.triixd.tech) and research on state-first 3D downlink (bas.triixd.tech)
Python
0
2 commits
updated Oct 2, 2026
Our entry for the ISRO BAS problem statement AI Human Activity Recognition for On-board BAS Experiments. Two parts, each with its own site:
| What | Site | |
|---|---|---|
| HAR assistant | The working system for the expected solution: tracks a protocol from two fixed payload cameras, suggests the next step, raises voice alerts for skipped or out-of-order steps, writes a timestamped step log, records and streams the video, and shows it all in a monitoring console. Runs offline. | har.triixd.tech |
| Research | Experiments behind it on real NASA ISS footage: downlinking crew state instead of video, orientation-agnostic 3D body tracking, step validation, and what did not work. | bas.triixd.tech |
HAR assistant, 100 held-out rendered runs it never saw (34 with an injected mistake):
Research, held-out NASA ISS footage:
All results on the HAR side are on synthetic runs from our Blender generator (a mannequin crew member); real-person trials are the next step.
| Path | Contents |
|---|---|
har/run.py | The HAR assistant: cameras in → detector → triangulation in the rack frame → step recogniser → checker → voice, log, console, MP4 + UDP stream, downlink packets |
har/console.html | Monitoring console (live from run.py --gui, or replaying recorded sessions) |
har/steps.py, har/downlink.py | Step recogniser + protocol checker; downlink packet format (137 B per frame, 5 B per event) |
har/yolo_data.py, har/train_perception.py, har/train_steps.py | Training: renders → YOLO pose dataset → perception model; step recogniser |
har/evaluate.py, har/demo_sessions.py, har/site.py | Evaluation on held-out runs, demo sessions, har.triixd.tech build |
har/models/ | Trained weights: perception.pt (YOLO11s-pose, 10M params), steps.pt (84k params), plus measured speed and accuracy |
generate.py, protocol.json, render_seeds_*.txt | Blender generator for the synthetic protocol runs, and the seeds used for each split |
teacher.py, body.py, ground_*.py, splat.py, kfsize.py, orient.py, stepval.py, … | Research experiments E1–E11 (see bas.triixd.tech) |
viewer.py, viewer_template.html | bas.triixd.tech build |
demo_process.py, demo_live_server.py, demo_player.html | Side-by-side demo: camera + MediaPipe pose, E1, E7 and E8 panels, from a recorded video or live from a webcam |
runs/**/summary.json, har/eval*/summary.json | Result summaries behind every number on the sites |
Not in the repository (large, all regenerable): NASA footage (public domain, images.nasa.gov), Blender renders, datasets, experiment outputs and built sites.
Environments. The HAR assistant runs on Windows or Linux with Python 3.11, torch, ultralytics and opencv-python; voice uses the Windows speech synthesiser, recording and streaming use ffmpeg. The research experiments and the E1/E7/E8 demo need MoGe-2 and SAM 3D Body (we run them in WSL with CUDA; SAM 3D Body cloned at ~/sam3d/sam-3d-body). The generator needs Blender 4.2.
HAR assistant on two camera feeds (indices, video files, stream URLs or folders of frames) and a rack calibration:
python har/run.py --cam0 0 --cam1 1 --calib rack_calibration.json --out sessions/today --voice --gui 8080 --stream udp://192.168.1.20:5000
Add --device cpu to run without a GPU. The console opens at http://127.0.0.1:8080.
Rebuild the HAR models and evaluation
blender -b -P generate.py -- --seeds $(cat render_seeds_train.txt) --fps 2 --no-depth --out render_train
blender -b -P generate.py -- --seeds $(cat render_seeds_test.txt) --fps 5 --no-depth --out render_test
python har/yolo_data.py --renders render_train --out har/data
python har/train_perception.py --data har/data/data.yaml --epochs 24
python har/train_steps.py --data dataset_e11 # needs the 400 generator label runs (generate.py --dry)
python har/evaluate.py --renders render_test --out har/eval
E1/E7/E8 demo: python demo_process.py video.mp4 demo_live/name then serve the folder, or python demo_live_server.py and open http://localhost:8770/ for the live webcam version.
Sites: python viewer.py runs site --standalone and python har/site.py, deployed as static Cloudflare Workers with wrangler deploy (wrangler.jsonc, wrangler.har.jsonc).
BAS on-board human activity recognition: working HAR assistant (har.triixd.tech) and research on state-first 3D downlink (bas.triixd.tech)
Python
0
2 commits
updated Oct 2, 2026
Our entry for the ISRO BAS problem statement AI Human Activity Recognition for On-board BAS Experiments. Two parts, each with its own site:
| What | Site | |
|---|---|---|
| HAR assistant | The working system for the expected solution: tracks a protocol from two fixed payload cameras, suggests the next step, raises voice alerts for skipped or out-of-order steps, writes a timestamped step log, records and streams the video, and shows it all in a monitoring console. Runs offline. | har.triixd.tech |
| Research | Experiments behind it on real NASA ISS footage: downlinking crew state instead of video, orientation-agnostic 3D body tracking, step validation, and what did not work. | bas.triixd.tech |
HAR assistant, 100 held-out rendered runs it never saw (34 with an injected mistake):
Research, held-out NASA ISS footage:
All results on the HAR side are on synthetic runs from our Blender generator (a mannequin crew member); real-person trials are the next step.
| Path | Contents |
|---|---|
har/run.py | The HAR assistant: cameras in → detector → triangulation in the rack frame → step recogniser → checker → voice, log, console, MP4 + UDP stream, downlink packets |
har/console.html | Monitoring console (live from run.py --gui, or replaying recorded sessions) |
har/steps.py, har/downlink.py | Step recogniser + protocol checker; downlink packet format (137 B per frame, 5 B per event) |
har/yolo_data.py, har/train_perception.py, har/train_steps.py | Training: renders → YOLO pose dataset → perception model; step recogniser |
har/evaluate.py, har/demo_sessions.py, har/site.py | Evaluation on held-out runs, demo sessions, har.triixd.tech build |
har/models/ | Trained weights: perception.pt (YOLO11s-pose, 10M params), steps.pt (84k params), plus measured speed and accuracy |
generate.py, protocol.json, render_seeds_*.txt | Blender generator for the synthetic protocol runs, and the seeds used for each split |
teacher.py, body.py, ground_*.py, splat.py, kfsize.py, orient.py, stepval.py, … | Research experiments E1–E11 (see bas.triixd.tech) |
viewer.py, viewer_template.html | bas.triixd.tech build |
demo_process.py, demo_live_server.py, demo_player.html | Side-by-side demo: camera + MediaPipe pose, E1, E7 and E8 panels, from a recorded video or live from a webcam |
runs/**/summary.json, har/eval*/summary.json | Result summaries behind every number on the sites |
Not in the repository (large, all regenerable): NASA footage (public domain, images.nasa.gov), Blender renders, datasets, experiment outputs and built sites.
Environments. The HAR assistant runs on Windows or Linux with Python 3.11, torch, ultralytics and opencv-python; voice uses the Windows speech synthesiser, recording and streaming use ffmpeg. The research experiments and the E1/E7/E8 demo need MoGe-2 and SAM 3D Body (we run them in WSL with CUDA; SAM 3D Body cloned at ~/sam3d/sam-3d-body). The generator needs Blender 4.2.
HAR assistant on two camera feeds (indices, video files, stream URLs or folders of frames) and a rack calibration:
python har/run.py --cam0 0 --cam1 1 --calib rack_calibration.json --out sessions/today --voice --gui 8080 --stream udp://192.168.1.20:5000
Add --device cpu to run without a GPU. The console opens at http://127.0.0.1:8080.
Rebuild the HAR models and evaluation
blender -b -P generate.py -- --seeds $(cat render_seeds_train.txt) --fps 2 --no-depth --out render_train
blender -b -P generate.py -- --seeds $(cat render_seeds_test.txt) --fps 5 --no-depth --out render_test
python har/yolo_data.py --renders render_train --out har/data
python har/train_perception.py --data har/data/data.yaml --epochs 24
python har/train_steps.py --data dataset_e11 # needs the 400 generator label runs (generate.py --dry)
python har/evaluate.py --renders render_test --out har/eval
E1/E7/E8 demo: python demo_process.py video.mp4 demo_live/name then serve the folder, or python demo_live_server.py and open http://localhost:8770/ for the live webcam version.
Sites: python viewer.py runs site --standalone and python har/site.py, deployed as static Cloudflare Workers with wrangler deploy (wrangler.jsonc, wrangler.har.jsonc).