About

한국어로 읽기 ↓

Samgil is one person: an embedded systems engineer in South Korea, 27 years into building devices that have to keep working without a network, without a reboot, and often without anyone watching.

The name comes from two Korean words — saem (샘), a spring where water rises out of the ground, and gil (길), a path. Water that comes from where you stand rather than piped in from somewhere far away. That happens to describe most of what I build.

What I am working on now

Autonomous drones — specifically, the parts of that problem that are not the airframe.

Most of the work happens in simulation first. ArduPilot SITL runs the actual flight stack — the same code that will eventually fly — against a simulated vehicle, so control logic, mode transitions, and failure handling get exercised thoroughly before anything leaves the ground. A bug found in SITL costs an afternoon. The same bug found in the air costs an aircraft.

NVIDIA Isaac Sim covers what SITL does not: sensors, environments, and the visual world the perception stack actually has to survive. It also generates training data that would be expensive, slow, or genuinely dangerous to collect outdoors — edge cases you cannot ask a real drone to fly into on purpose.

On the aircraft, a Jetson Orin does the thinking. Perception and inference run onboard, not on a ground station, because a radio link that drops is not a link you can plan around. That single constraint decides nearly everything downstream: which models fit in memory, what latency budget each stage of the pipeline gets, and how much power the compute can draw before it starts costing flight time.

This is on-device AI in its least forgiving form. There is no autoscaling, no retry against a bigger instance, and no falling back to the cloud. The model runs on the hardware you bolted on, inside the thermal envelope you have, in the milliseconds you were given — or the vehicle does the wrong thing while you are still waiting for an answer.

What I have worked on

Media players, IP cameras, drones, logistics robots, and surgical robotics — including product development at Xtreamer and a laparoscopic surgical robot. The domains look unrelated from outside. Underneath they are the same problem: making software behave correctly on hardware you cannot patch every Tuesday, under timing constraints that do not negotiate.

Mostly C and C++, with Qt for anything that needed a screen, across a range of embedded operating systems. The move into machine learning that runs on the device rather than a server turned out to be the same engineering discipline wearing different clothes — fixed budgets, hard deadlines, and no one to call when it fails at altitude.

What this blog is

Notes from that work, and from side projects that keep the habit sharp.

Most posts start the same way: something did not work, the documentation did not explain why, and searching turned up answers that assumed a case different from mine. So I read the logs, ran a controlled test, and found the actual cause. Then I wrote it down, because next time it will be someone else at 2 a.m.

Recurring subjects:

  • Autonomous drones — ArduPilot,PX4, flight stacks, SITL
  • Simulation as a development tool — Isaac Sim, Simulation
  • Jetson Orin, Gimbal Camera, Video Inference
  • Embedded development in C and C++
  • Robot, ROS2, DDS
  • Toy Projects

Every claim here comes from something I actually ran. Where I am unsure, I say so. Where I was wrong earlier, I correct it in place rather than quietly deleting it. Nothing here discloses anything confidential from past employers or clients — the lessons are general even when the projects were not.

Contact

Posts are signed with the studio name rather than a personal one. If you need to reach a human, the address below goes directly to me.

Corrections and questions are welcome — especially corrections. Write to hello@samgil.com.

I read everything and reply to anything that points out a mistake.


소개 (한국어)

샘길이라는 이름으로 혼자 일합니다. 27년째 임베디드 장비를 만들어온 엔지니어이고, 네트워크 없이, 재부팅 없이, 대개는 아무도 지켜보지 않는 곳에서 계속 돌아가야 하는 물건들을 다뤄왔습니다.

이름은 두 글자에서 왔습니다. 샘은 땅에서 물이 솟는 자리고, 길은 그 물이 흘러가는 방향입니다. 멀리서 끌어온 물이 아니라 발 딛고 선 자리에서 나오는 물. 제가 만드는 것들이 대체로 그렇습니다. 서버에 물어보지 않고 장비 안에서 답을 냅니다.

지금 하는 일

자율비행 드론입니다. 정확히는 기체 말고 나머지 전부입니다.

작업은 대부분 시뮬레이션에서 먼저 합니다. ArduPilot SITL은 실제로 비행할 그 코드를 그대로 가상 기체에 물려 돌립니다. 제어 로직, 모드 전환, 고장 처리를 지상에서 충분히 겪어본 뒤에야 하늘로 올립니다. SITL에서 잡은 버그는 오후 반나절이면 끝나지만, 공중에서 잡은 버그는 기체 한 대가 날아갑니다.

NVIDIA Isaac Sim은 SITL이 못 하는 쪽을 맡습니다. 센서와 환경, 그리고 인지 스택이 실제로 견뎌야 하는 시각 세계입니다. 밖에 나가서 모으려면 비싸거나 오래 걸리거나 위험한 학습 데이터도 여기서 만듭니다. 실제 드론한테 일부러 저기로 날아들어가 보라고 시킬 수는 없으니까요.

기체 위에서는 Jetson Orin이 판단합니다. 인지와 추론을 지상국이 아니라 기체에서 돌립니다. 끊길 수 있는 링크는 설계에 넣을 수 있는 링크가 아니기 때문입니다. 이 제약 하나가 나머지를 거의 다 결정합니다. 어떤 모델이 메모리에 들어가는지, 파이프라인 각 단계에 몇 밀리초를 줄 수 있는지, 연산이 비행시간을 깎아먹기 전에 전력을 얼마나 쓸 수 있는지.

온디바이스 AI 중에서도 가장 인정사정없는 쪽입니다. 오토스케일이 없고, 더 큰 인스턴스로 다시 돌려볼 수도 없고, 클라우드로 물러설 곳도 없습니다. 모델은 볼트로 조여둔 그 하드웨어 위에서, 주어진 발열 범위 안에서, 허락된 밀리초 안에 답을 내야 합니다. 아니면 답을 기다리는 사이에 기체가 엉뚱한 짓을 합니다.

지나온 일

미디어 플레이어, IP 카메라, 드론, 물류 로봇, 수술 로봇. Xtreamer 제품 개발과 복강경 수술로봇 개발이 여기 들어갑니다. 밖에서 보면 서로 상관없어 보이지만 열어보면 같은 문제입니다. 한번 나가고 나면 마음대로 고칠 수 없는 하드웨어 위에서, 봐주지 않는 타이밍 제약 아래에서 소프트웨어가 제대로 돌게 만드는 일.

주로 C와 C++를 썼고, 화면이 필요한 곳에는 Qt를 얹었고, 여러 임베디드 OS를 오갔습니다. 서버가 아니라 장비에서 도는 머신러닝으로 넘어온 것도 결국 같은 공학이었습니다. 자원은 정해져 있고, 마감은 밀리지 않고, 상공에서 실패하면 전화 걸 곳이 없습니다.

이 블로그는

그 일에서 나온 기록입니다. 감을 잃지 않으려고 하는 곁가지 작업도 같이 올립니다.

글은 대개 이렇게 시작합니다. 뭔가 안 됐고, 문서에는 왜 안 되는지가 없었고, 검색해서 나온 답들은 제 상황과 다른 경우를 전제하고 있었습니다. 그래서 로그를 읽고, 변수를 하나만 바꿔가며 돌려보고, 실제 원인을 찾았습니다. 그리고 적어뒀습니다. 다음에 같은 자리에서 새벽 두 시를 맞을 사람은 다른 누군가일 테니까요.

주로 다루는 것:

  • 자율비행 드론: ArduPilot, PX4, 비행 스택, SITL
  • 개발 도구로서의 시뮬레이션: Isaac Sim, 시뮬레이션
  • Jetson Orin, 짐벌카메라제어, 영상추론
  • C/C++ 임베디드 개발
  • 로봇, ROS2, DDS
  • 토이프로젝트

여기 적은 건 전부 제가 직접 돌려본 것들입니다. 확실하지 않은 건 확실하지 않다고 씁니다. 앞서 쓴 게 틀렸으면 조용히 지우지 않고 그 자리에서 고칩니다. 이전 회사나 고객의 기밀은 담지 않습니다. 프로젝트는 특수했어도 배운 건 일반적인 것들입니다.

연락

글은 개인 이름 대신 샘길이라는 이름으로 씁니다. 사람한테 닿아야 할 일이 있으면 아래 주소가 저에게 바로 옵니다.

정정과 질문 모두 환영합니다. 특히 정정이 그렇습니다. hello@samgil.com 으로 보내주세요.

전부 읽고, 틀린 곳을 짚어주신 메일에는 반드시 답합니다.

Comments

Popular posts from this blog

What ArduPilot SITL catches, and where it stops telling the truth

App Sandbox를 켜면 손쉬운 사용 권한을 받을 수 없다

App Sandbox silently blocks Accessibility permission