분류 전체보기 57

Isaac Sim/Lab 설치 가이드

Ubuntu 24.04 + RTX 5090 환경에서 Isaac Lab 설치하기Isaac Lab을 아무것도 깔려 있지 않은 Ubuntu 24.04 머신에 처음부터 설치한 기록이다. GPU는 RTX 5090(Blackwell, sm_120)이다. 공식 pip 설치 가이드가 "가상환경 생성"부터 시작하기 때문에, 그 앞단에서 필요한 사전 준비와 중간에 실제로 마주친 오류들을 함께 정리한다.설치 순서는 다음과 같다.드라이버(580) → 빌드 도구 → Miniconda → conda 3.11 환경 → Isaac Sim + PyTorch(cu128) → Isaac Lab0. 설치 전 사전 준비공식 가이드에는 없지만, 맨 처음에 반드시 확인해야 하는 것들이다. 특히 RTX 5090 + Ubuntu 24.04 조합은 ..

로보틱스 2026.07.03

라즈베리파이 2대로 CAN 통신하기 — MCP2515 모듈 세팅

라즈베리파이 4 두 대와 MCP2515 모듈을 이용해 실제 CAN 버스를 구성하고 두 노드 간 통신을 실습한다.목차준비물HW 세팅SW 세팅통신 세팅1. 준비물항목 수량Raspberry Pi 4 Model B2대MCP2515 CAN 모듈2개점퍼 케이블적당량점퍼캡2개OS는 Raspberry Pi OS (64-bit) Bookworm 기준이다.(Trixie도 문제없이 가능) 두 대 모두 SSH 접속이 가능한 상태에서 진행한다. 2. 하드웨어 연결핀 연결 (라즈베리파이 ↔ MCP2515)각 라즈베리파이에 MCP2515 모듈을 아래 핀맵대로 연결한다. 두 대 모두 동일하게 연결한다.MCP2515 핀 라즈베리파이 핀 GPIOVCC핀 2 (5V)—GND핀 6 (GND)—CS핀 24 (CE0)GPIO 8SO (MISO..

임베디드 2026.05.20

CAN 통신 - 가상버스 실습 (python-can 라이브러리)

오늘은 실제 하드웨어 없이 Mac에서 python-can 라이브러리로 CAN 통신 구조를 먼저 파악해보려 한다. python-can 이란?python-can은 Python에서 CAN 통신을 다룰 수 있게 해주는 오픈소스 라이브러리이다. USB-CAN 어댑터, SocketCAN, 그리고 가상 버스(virtual bus) 까지 지원한다.가상 버스를 사용하면 실제 하드웨어 없이도 CAN 메시지 송수신 코드를 작성하고 테스트할 수 있다. bashpip install python-can가상환경 만들고 실행하기 bash# 가상환경 생성python3 -m venv can_env# 가상환경 활성화source can_env/bin/activate# python-can 설치pip install python-can# 설..

임베디드 2026.05.20

CAN 통신 기초

1. CAN 통신을 사용하게된 배경문제: 배선 지옥1980년대 자동차에는 ECU(Electronic Control Unit)가 점점 많아지고 있었다. 엔진 ECU, 브레이크 ECU, 에어백 ECU, 계기판 ECU...이걸 전부 UART나 SPI로 연결하면 다음과 같은 문제가 생긴다.SPI: 노드마다 칩셀렉 핀이 필요 → 과도한 핀 필요I2C: 노드가 많아지면 버스 부하 급증, 속도 한계배선 수백 개 → 실제로 배선 무게만 수십 kg해결책: Bosch CAN (1986)Bosch가 1986년에 CAN(Controller Area Network)을 발표했다. 핵심 철학은 단 하나이다."선 2개로 모든 노드가 대등하게 통신한다"2. CAN의 핵심 특징 3가지① 멀티마스터 (Multi-master)I2C처럼 M..

임베디드 2026.05.19

STM32 LED 작동 (Nucleo-F401RE)

https://zino-dev.tistory.com/53 STM32 개발 환경 세팅 — CubeMX + CubeIDE (Nucleo-F401RE)RTOS 공부를 위해 STM32 개발 환경을 세팅한 과정을 정리한다. 사용한 보드는 Nucleo-F401RE, OS는 macOS 기준이다.필요한 툴 두 가지STM32 개발에는 툴이 두 개 필요하다. 예전에는 CubeIDE 하나에 다 들어있zino-dev.tistory.com이전 포스팅에서 세팅한 환경을 기반으로 보드에 있는 LED를 켜는 코드를 작성하려한다. Bare-metal이란?코드를 작성하기 전에 Bare-metal이 뭔지 짚고 넘어간다.일반 PC에서는 코드가 OS 위에서 실행된다. 하지만 STM32 같은 MCU는 OS 없이 코드가 하드웨어 위에서 직접 실..

임베디드 2026.05.13

FreeRTOS Task

개념 정리이번 포스트에서는 FreeRTOS의 핵심 개념인 Task 를 정리하고, 실습으로 LED Blink(Periodic Task)와 버튼으로 LED 제어(Event-driven Task)를 직접 구현할 예정이다.Task란?Task는 FreeRTOS에서 독립적으로 실행되는 작업 단위다. 일반 OS의 스레드(Thread)와 비슷하지만, 훨씬 단순하다.FreeRTOS의 Task는 반드시 무한루프 구조로 작성한다. 일반 함수처럼 return 하면 안 된다.void myTask(void *pvParameters) { while(1) { // 반복할 작업 vTaskDelay(pdMS_TO_TICKS(100)); // 100ms 대기 }}각 Task는 자신만의 Stack 을 가..

카테고리 없음 2026.05.06

STM32 개발 환경 세팅 — CubeMX + CubeIDE (Nucleo-F401RE)

RTOS 공부를 위해 STM32 개발 환경을 세팅한 과정을 정리한다. 사용한 보드는 Nucleo-F401RE, OS는 macOS 기준이다.필요한 툴 두 가지STM32 개발에는 툴이 두 개 필요하다. 예전에는 CubeIDE 하나에 다 들어있었지만, 2025년 11월 출시된 CubeIDE 2.0부터 두 툴이 완전히 분리되었다. 따라서 지금은 둘 다 따로 설치해야 한다.STM32CubeMX - https://www.st.com/en/development-tools/stm32cubemx.html#st-get-softwareSTM32CubeIDE - https://www.st.com/en/development-tools/stm32cubeide.html#st-get-software두 툴의 역할 — 라즈베리파이에 비..

임베디드 2026.05.06

RTOS

일반 OS와 무엇이 다른가RTOS에 대해 공부한 내용을 정리해보려 한다. 전체 흐름을 먼저 정리하고, 이후 Task, Scheduling, Synchronization 등을 하나씩 깊게 다룰 예정이다.일반 OS와 RTOS의 가장 큰 차이점일반 OS(Linux, Windows)와 RTOS의 가장 큰 차이점은 시간에 대한 보장(Timing Guarantee) 이다.Windows나 Linux는 "평균적으로 빠르게" 동작하도록 설계되어 있다. 처리량(Throughput)을 최대화하는 것이 목표이기 때문에, 특정 작업이 정확히 몇 ms 안에 끝날지는 보장하지 않는다. 가끔 GC(Garbage Collection)가 끼어들거나, 페이지 폴트가 발생해 예상보다 오래 걸리는 일이 생겨도 사용자 입장에서는 크게 문제가 ..

임베디드 2026.04.30