반응형

전체 글 28

Python Variable Arguments, Ellipsis(엘리프시스)

Python의 Variable Arguments와 Ellipsis를 정리한다.Python Variable Arguments 어디에 적용하고 싶은가?다른 사람의 class를 기반으로 상속받아 코딩하려고 한다. 내가 만드는 child class에서, parent class의 생성자를 그대로 호출하고 싶다. 이때 같은 내용이 반복되지 않도록 Variable Arguments(가변인자)를 쓰려고 한다.class parent(): def __init__(self, param1: int, param2:np.ndarray, ... ): self.param1 = param1 ...class OurWrapper(parent): def __init__(*args, **kwargs): ..

Chapter 4. Synchronizing Concurrent Operations. (3) - Functional Programming

Functional Programming 함수형 프로그래밍을 한 줄로 요약하자면 pure function을 first class object로 보는 것이다. 이를 통해 데이터와 로직을 분리한다. pure function이란 함수 밖에 영역에 영향을 끼치지 않으며, input이 같으면 언제나 output이 같은 함수를 뜻 한다. 이를 first class object로 본다는 것은 함수를 parameter처럼 주고받을 수 있게 만들었단 뜻이다. 즉, 고차함수(Higher order function)를 만들거나 콜백(callback)을 구현할 수 있다.함수형 로직으로 프로그래밍을 설계하면 쉽게 병렬 프로그램을 짤 수 있다. 요즘 나온 언어(rust, clojure)는 함수형 프로그래밍을 염두해 두고 만들었다..

Engineering/C++ 2025.01.26

진짜 하루만에 읽는 반도체 산업 리뷰

Image processor 에 관한 논문을 읽는데 아무리 봐도 이해가 안 가서 읽기 시작했다. 1.  트랜지스터 역사논리회로를 만들려면 트랜지스터가 필요하다.진공관BJT (Bipolar Junction Transistor, 바이폴라 접합 트랜지스터)MOSFET (Metal-Oxide-Semiconductor FET (Field Effect Transistor, 전계 효과 트랜지스터) )BJT는 고등학교 때 배운 PnP NpN 트랜지스터이다. 이것을 더 작게 만들도록 개발한 것이 MOSFET이다.2. 반도체 분류3. 반도체 8단계 공정웨이퍼 제조 공정(Wafering)산화 공정(Oxidation)포토 공정(Photolithography)에칭 공정(Etching)증착 공정(Deposition) 및 이온 주..

Book Review 2025.01.24

Chapter 4. Synchronizing Concurrent Operations. (2) - future

1. Future vs Shared Future뮤택스(Mutualy Exclusive)는 Race Condition(경쟁 상태)을 방지하기 위해서 공유 자원에 접근을 하나로 제한하는 것이었다.Conditional Variable(조건 변수)는 스레드 간의 순서를 맞출 때 사용했다. (Synchronizing)future 멀티 스레드에서 결과 값을 받아 올 때 쓰는 class이다. future 자체로는 Race Condition을 막을 수 없다. 그래서 Read only 함수만을 이용하면 더 편리한 멀티 스레딩이 된다. 만약 여러 개의 함수가 Read only로 결과를 내서 합친다면 shared_future를 사용할 수 있다. future는 movable 하지만 shared_future는 movable과..

Engineering/C++ 2025.01.22

Chapter3. Sharing Data Between Threads

해당 챕터는 Thread 간 데이터를 공유하는 방법에 관해 다룬다. Race Condition (경쟁 상태)란 여러 개의 Thread가 같은 데이터에 한 번에 접근해서 생기는 문제점이다. 데이터를 읽고 쓰기를 동시에 할 때 일어난다. 실행할 때마다 결과가 다르게 나오는 거지 같은 상황이 나올 수 있다.1. Race Condition해결 방법Mutex 기반Critical Section에 접근할 수 있는 Thread를 제한한다. C++에서 가장 많이 쓰는 방법이다.Lock-Free Programming자료구조를 바꿔서, 여러 과정을 통해 자료구조의 부분이 변하게 한다. (Chapter5. Memory Model, Chapter 7 Lock-Free Data structure)Update를 Data Trans..

Engineering/C++ 2025.01.20

Chapter 4. Synchronizing Concurrent Operations

스레드를 순서대로 동기화시키는 방법에 관해 다룬다.4. Waiting for Event or Other Condition하나의 thread가 끝낼 때 까지 다음 thread가 기다리는 것은 conditional varaible로 쉽게 가능하다.4.1 Waiting for a Condition with Conditional Variablebusy wait 방식 (+ sleep_for )만약 conditional variable이 없다면 busy waiting 방식을 사용해야 한다. CPU 자원도 낭비되고, 기다려야 하는 초를 계산하기 힘들다.bool flag; std::mutex m; void waitForFlag(){ std::unique_lock lk(m); while(!flag){ lk.unlock..

Engineering/C++ 2025.01.18

강화학습 용어 정리

1. 강화학습으로 풀 수 있는 문제Markov Model로 추상화된 환경에서 Prediction과 Control 문제를 풀 수 있다. Prediction이란 Model based 또는 Planning라고 불리며, 여러 번의 시뮬레이션을 통해 해당 State와 action의 가치를 계산하는 것이다. Control은 모든 State에서 Value가 가장 크게 할 수 있는 policy를 찾는 것이다.Policy: State에서 어떤 Action을 취할지에 관한 확률 분포 함수(PDF)이다.State: Markov Model에서 노드로 추상화된 상태이다.Action: State에서 다른 노드로 이동하기 위해 할 수 있는 행동들의 집합이다.즉, State에서 Policy를 보고 어떤 Action을 할 확률을 알 ..

ROS2 Node Interface, Parameter, Namespace

지난 포스팅에서 Package와 Node에 관해 정리했다.요약하면, Package는 Node들의 집합과 이를 실행하는 launch file로 된 것이고, Node는 우리가 RCL(ROS Client Library)를 활용하여 만드는 Process이다. Node(Process) 간의 통신 방식은 3가지이다. Topic, Service, Action 관계는 아래 그림과 같다.Node InterfaceNode 간 데이터를 주고받는 형식이다. Interface에는 IDS(Interface Definition Language)와 msg, srv, action이 있다. msg는 Topic에서 주고받는 데이터, srv는 service에서 주고받는 데이터, action은 action에서 주고받는 데이터이다. 이 데이터..

Engineering/ROS 2025.01.14

ROS2 표준 시간, 좌표계

1. 공간적 표준 (좌표, SI 단위)ROS2는 SI단위를 사용한다. meter, second, volt...1.1 좌표계정말 중요한 개념이다. 원본은 책과 rep-103을 참고하자.오른손(외적) 법칙을 사용한다.컴퓨터 비전 분야에서는 Z forward, X right, Y down 좌표계를 사용한다. (깊이를 계산할 때 Z를 앞으로 둬야 편하게 계산 가능하기 때문이다. image plane을 x y로 두면 편하다.)로봇 분야에선 X forward, Y left, Z up 좌표계를 사용한다.IMU를 살 때 NED(x North, y East, z Down)인지 ENU(x East, y North, z Up)인지 잘 확인해야 한다.RGB를 순서대로 Red:X, Green:Y, Blue:Z이다.지리적 위치 ..

Engineering/ROS 2025.01.12

ROS2 참고 사이트

1. 커뮤니티 ROS discourcehttps://discourse.ros.org/ ROS DiscourseThe ROS discussion forumdiscourse.ros.org커뮤니티 게시판, 개발 관련 소식이 올라온다.  2. 문서2.1 ROS Designhttps://design.ros2.org/ DesignROS 2 Design This site is repository of articles which are designed to inform and guide the ROS 2 design efforts. The goal of the ROS 2 project is to leverage what is great about ROS 1 and improve what isn’t. If you wou..

Engineering/ROS 2025.01.10
반응형