반응형

전체 글 1217

안드로이드 Init Language init.rc 문법 분석: service, on property, trigger 기반 네이티브 데몬 등록 가이드

1. 안드로이드 AOSP init.rc 구문 분석 및 커스텀 네이티브 데몬 등록 배경안드로이드(Android) 및 차량용 안드로이드(Android Automotive OS) 시스템 부팅 과정에서 최상위 프로세스인 init은 init.rc 스크립트를 파싱하여 시스템 서비스를 초기화하고 네이티브 바이너리(Native Binary)를 실행합니다. 시스템 엔지니어는 커스텀 네이티브 데몬(Custom Native Daemon)을 디바이스 부팅 시점이나 특정 시스템 속성(System Property) 변경 시점에 맞춰 자동 실행되도록 설정해야 합니다.본 가이드에서는 Android Init Language 문법 규격인 service, on property, trigger 구문의 동작 원리를 상세히 분석합니다. 또한 ..

EtherCAT 산업용 이더넷 프로토콜 분석: Distributed Clock 기반 multi-axis real-time 동기 제어 원리

1. 하이엔드 로보틱스 모터 제어를 위한 EtherCAT 산업용 이더넷 도입 배경다축(Multi-axis) 로봇 팔, 휴머노이드, 고속 CNC 머신과 같은 하이엔드 로보틱스 시스템에서는 여러 서보 드라이브(Servo Drive) 간의 위치, 속도, 토크 명령이 나노초(ns) 단위로 정확하게 동기화되어야 합니다. 기존의 CANopen(CAN bus)이나 표준 Ethernet(TCP/IP) 네트워크는 낮은 대역폭, 비확정적 메커니즘, 스위치 버퍼링에 의한 지연 문제로 인해 고속 다축 실시간 제어에서 제한이 발생합니다.EtherCAT(Ethernet for Control Automation Technology) 프로토콜은 "Processing on the fly" 원리와 분산 클록(Distributed Clo..

안드로이드 리눅스 커널 캐릭터 디바이스 드라이버 작성 및 HAL C++ /dev 노드 I/O 연동 가이드

1. 안드로이드 리눅스 커널 캐릭터 디바이스 드라이버 및 HAL /dev 노드 연동 배경안드로이드(Android) 및 차량용 안드로이드(Android Automotive OS) 임베디드 시스템에서 하드웨어 장치를 제어하려면 커널 영역(Kernel Space)과 사용자 영역(User Space) 간의 인터페이스 통신 구조를 이해해야 합니다. 리눅스 커널(Linux Kernel) 영역에서 동작하는 캐릭터 디바이스 드라이버(Character Device Driver)는 /dev 디렉토리 하위에 노드(Node) 파일을 생성합니다.하드웨어 추상화 계층(HAL, Hardware Abstraction Layer)은 C++ 언어로 구현되며, open(), read(), write(), ioctl() 등의 시스템 콜(S..

임베디드 리눅스 Real-Time 성능 극대화: RT-Preempt 커널 패치 적용 및 cyclictest 지연 시간(Latency) 측정

1. 피지컬 AI 및 로보틱스 모터 제어를 위한 Embedded Linux RT-Preempt 패치 도입 배경로보틱스 및 피지컬 AI 시스템에서는 1kHz 이상의 주기적인 모터 제어(Motor Control Loop)와 센서 데이터 수집이 필수적입니다. 표준 메인라인 리눅스 커널(Standard Mainline Linux Kernel)은 공정성(Fairness)과 처리량(Throughput) 최적화에 초점이 맞춰져 있으므로, 커널 내부 스핀락(Spinlock)이나 인터럽트 핸들러 실행 시 하드웨어 지연 시간(Latency)과 지터(Jitter)가 불규칙하게 증가합니다.이러한 지터 문제는 로봇의 제어 주기 타이밍 실패와 물리적 진동, 제어 오차를 유발합니다. 이를 해결하기 위해 표준 리눅스 커널에 RT-P..

AOSP 빌드 최적화: CCache 설정 및 Gradle Daemon 연동을 통한 증분 빌드 속도 향상 가이드

1. AOSP 증분 빌드 성능 저하와 CCache 및 Gradle 연동 최적화 배경안드로이드 오픈 소스 프로젝트(AOSP, Android Open Source Project) 및 차량용 안드로이드(Android Automotive OS) 빌드 시스템은 수십만 개 이상의 C/C++ 및 Java/Kotlin 소스 파일을 포함합니다. 전체 빌드(Clean Build) 시 수시간이 소요되며, 소스 코드가 수정된 후 수행하는 증분 빌드(Incremental Build) 과정에서도 C/C++ 컴파일러(Clang/GCC)와 Gradle 빌드 시스템의 재처리 작업으로 인해 심각한 병목 현상이 발생합니다.AOSP 빌드 환경에서 CCache(Compiler Cache)를 올바르게 구성하고 프레임워크 앱의 Gradle Da..

피지컬 AI 및 로보틱스 제어를 위한 Gazebo 시뮬레이터 URDF 모델링 및 ROS 2 가상 주행

1. 피지컬 AI 개발을 위한 Gazebo 로봇 시뮬레이터 환경 구축 배경피지컬 AI(Physical AI) 및 자율주행 로봇 제어 알고리즘을 실체 하드웨어에 직접 적용하는 것은 큰 위험과 비용이 발생합니다. 하드웨어 검증 전 가상 환경에서 물리 법칙을 모사하는 시뮬레이션을 수행해야 합니다.Gazebo 시뮬레이터는 중력(Gravity), 마찰력(Friction), 관성 모멘트(Inertia) 등 실제 환경의 물리적 특성을 정확하게 계산합니다. 또한 LiDAR, IMU, Camera 등 센서 노이즈(Sensor Noise)를 설정하여 자율주행 및 SLAM 알고리즘의 신뢰성을 사전 검증할 수 있습니다. 본 글에서는 URDF/Xacro 파일 구조 분석부터 Gazebo 커스텀 로봇 모델 생성 및 ROS 2 노드..

안드로이드 오디오 시스템 구조 및 오디오 경로: TinyALSA, AudioFlinger, Audio HAL 분석

1. 안드로이드 오디오 시스템 아키텍처 이해를 위한 도입 배경 및 개요안드로이드(Android) AOSP 및 차량용 인포테인먼트(Android Automotive IVI) 시스템 개발에서 오디오 경로(Audio Path)를 이해하는 것은 매우 중요합니다. 어플리케이션 계층부터 하드웨어 레지스터 제어 계층까지 오디오 데이터가 전달되는 과정에서 레이턴시(Latency) 지연, 음원 깨짐, 라우팅 오류 등의 문제가 빈번히 발생합니다.본 가이드에서는 마이크 입력(PCM Capture) 신호부터 스피커 출력(PCM Playback) 신호까지, 안드로이드 오디오 프레임워크 내에서의 데이터 흐름과 오디오 믹싱, 라우팅 프로세스를 기술적으로 다룹니다. 시스템 엔지니어 및 임베디드 개발자가 하드웨어 HAL 영역 및 커널..

로봇 마니퓰레이터 역기하학(Inverse Kinematics) C++ 구현: DH Parameter Matrix 및 엔드 이펙터 제어

1. NXP i.MX8 기반 다관절 로봇 팔(Manipulator) 역기하학(Inverse Kinematics) 제어의 개요임베디드 시스템 환경(예: NXP i.MX8QXP, STM32 MCU)에서 다관절 로봇 팔(Manipulator)을 제어할 때 엔드 이펙터(End-Effector)의 목표 Cartesian 좌표 $(X, Y, Z)$를 각 관절(Joint) 모터의 회전각 $(\theta_1, \theta_2, \dots, \theta_n)$으로 변환하는 알고리즘이 필요합니다.이 과정을 역기하학(Inverse Kinematics, IK)이라고 합니다. 직교 좌표계 값을 모터 제어 신호인 각도 값으로 신속하게 변환하지 못하면 연산 지연이 발생하고 로봇 제어 프레임레이트가 저하됩니다. 본 포스팅에서는 De..

[Automotive] 안드로이드 CTS VTS 테스트 환경 세팅 및 파트너 인증 통과 가이드: tradefed CLI 디버깅

1. 안드로이드 AOSP 파트너 호환성 검증을 위한 CTS VTS 테스트 도입 배경안드로이드 기반 디바이스 및 차량용 인포테인먼트(Android Automotive IVI) 시스템을 상용화하기 위해서는 구글의 호환성 정의 문서(CDD) 준수 여부를 검증해야 합니다. 이 과정에서 호환성 테스트 스위트(CTS, Compatibility Test Suite)와 벤더 테스트 스위트(VTS, Vendor Test Suite) 통과는 필수적인 구글 파트너 인증 절차입니다.CTS는 응용 프로그램 프레임워크(Application Framework) 레벨의 API 호환성을 검증하며, VTS는 HAL(Hardware Abstraction Layer) 및 리눅스 커널(Linux Kernel) 영역의 하드웨어 호환성을 검증합..

Micro-ROS 도입: STM32/ESP32 FreeRTOS 환경에서 ROS2 DDS 통신 직접 구현 가이드

1. STM32 및 ESP32 마이크로컨트롤러 환경에서 Micro-ROS 도입 필요성 및 작성 배경임베디드 피지컬 AI 시스템 개발 시, 센서 데이터를 라즈베리 파이나 PC 기반의 ROS2 노드로 전달하기 위해 기존에는 UART, CAN 통신을 거치는 커스텀 패킷 프로토콜을 사용했습니다. 이러한 방식은 애플리케이션 계층에서 데이터를 파싱하는 오버헤드를 발생시키며, ROS2 시스템과의 직접적인 메시지 동기화 및 DDS(Data Distribution Service) 노드 통합을 저해하는 요인이 됩니다.Micro-ROS는 리소스가 제한된 마이크로컨트롤러(MCU) 단에서 Micro XRCE-DDS 클라이언트를 실행하여, MCU 자체가 ROS2 그래프(ROS2 Graph)의 노드로 직접 참여할 수 있도록 지원하..

반응형