본문 바로가기

분류 전체보기

(44)
차량 네트워크 : CAN, LIN, FlexRay 자율주행 차량은 내부의 각 시스템 간 정보교환을 위해 다양한 방식의 유무선 통신을 활용한다. 이는, 자율주행 차량 내 시스템이 차량의 주변 상황을 인식하기 위한 센서 시스템, 구동을 위한 기본적인 전장 시스템, 엑추에이터, high level 제어기, 주변과의 무선 통신을 위한 OBU 등으로 다양한 시스템이 유기적으로 얽혀있기 때문이다. 각 시스템에 따라 적합한 유무선 통신 방식과 프로토콜이 다르기에 자율주행 차량 내에는 다양한 방식의 유무선 통신이 활용된다. 자율주행 차량에서 활용되는 대표적인 통신 프로토콜은 CAN, LIN, FlexRay, Ethernet 등이 있으며 이 중 차량에서만 사용되는 대표적인 3가지의 통신 프로토콜은 CAN, LIN, FlexRay로 들 수 있다. 각 통신 프로토콜의 특징..
Cruise Control과 Smart Cruise Control Cruise Control Cruise Control(순항제어기)는 차량의 주행 중 속도를 원하는 목표 속도에 맞게 유지하는 기능이다. 크루즈 컨트롤은 바퀴의 회전수로 차의 속도를 파악하고 해당 값을 피드백 제어기에 입력함으로써 현재 차량의 속도와 목표 속도 간의 오차를 통해 시스템을 구성할 수 있다. 구체적으로, 사용자가 지정한 지정 속도를 입력하면, 차량 내의 시스템에서 현재 차량의 속도를 바퀴의 회전수로 파악할 수 있다. 이를 제어기에서 현재 속도와 사용자의 입력 간의 차이를 계산하고 해당 오차를 줄이는 방향으로 제어 명령을 보내게 된다. 이때, 크루즈 컨트롤은 브레이크 제어 없이 전자식 액셀레이터, 페달 제어, 쓰로틀, 연료량, 기어 변속 등으로 속도를 제어함으로써 오차를 줄여나간다. Cruise..
A*알고리즘과 RRT, RRT* 알고리즘 A* 알고리즘 A* 알고리즘은 경로가 그려질 수 있는 공간에 대하여 2D Grid를 그리고 해당 그리드 맵 상에서 최단 경로를 탐색 및 결정하는 알고리즘이다. 2차원 그리드를 그림으로써 현재 위치로부터 8방향에 대하여 각각 Cost를 계산한다. Cost 값을 기준으로 목표지점까지의 최적 경로를 찾을 수 있다. 이때, 그리드는 장애물 유무에 따라 0 또는 1로 채워지며, 1이면 장애물이 있어 진행하지 못하는 그리드, 0이면 그리드가 비어 있어 진행이 가능한 그리드임을 의미한다. 각 그리드에 채워진 0 또는 1 값으로 Cost를 계산할 수 있다. 또한 주변 8방향에 대하여 Cost를 계산하고 최단거리를 탐색하는 기법은 트리구조를 활용하여 구현할 수 있다. 이러한 A 알고리즘은 그리드의 크기를 어떻게 설정하느..
라이다 센서의 장단점, 데이터 특성, 딥러닝의 적용 라이다 센서의 데이터 라이다 센서는 카메라 센서와 달리 3차원 공간에 대한 정보를 포인트 클라우드 형식을 통해 취득할 수 있다. 이는 ToF(Time of Flight)를 통해 레이저가 반사되서 돌아오는 시간을 측정하고 대상 포인트와 라이다 간의 거리를 구함으로써 각 x,y,z 좌표값을 구할 수 있다. 이로부터, 라이다는 카메라에 비해 대상과의 거리를 정확하게 알 수 있다는 장점이 있다. 또한, 레이저를 활용하므로 카메라에 비해 날씨환경에 좀 더 강인하다는 장점이 있다. 라이다 포인트 클라우드는 기본적으로 3D 좌표계에서 대상 포인트에 대한 (x,y,z)좌표 정보를 제공한다. 해당 정보와 더불어 보통은 intensity 값을 추가하여 (x, y, z, i)로 제공하거나 reflectivity를 활용하기도..
[Python] .scatter()함수 이해 요약 1. .scatter(dimension, index, src) 꼴이라면 다음과 같다. dimension은 어느 방향으로 업데이트할지 index는 src의 값을 어떻게 선택할지 src는 어떤 값으로 업데이트를 할지 2. index 텐서의 각 element 의 위치에 대응되는 src의 element가 output의 어느 위치로 갈지 결정한다. 예시1 >>> src = torch.arange(1, 11).reshape((2, 5)) >>> src tensor([[ 1, 2, 3, 4, 5], [ 6, 7, 8, 9, 10]]) >>> index = torch.tensor([[0, 1, 2, 0]]) >>> output = torch.zeros(3, 5, dtype=src.dtype).scatter_(0,..
(pred.argmax(1) == y).type(torch.float).sum().item() 해석 (pred.argmax(1) == y).type(torch.float).sum().item() 해석 1. pred는 model(x)의 출력으로 입력 이미지에 대하여 각 10개 class별 socre를 출력하여 모은 값. [ [img1 10개 스코어], [img2 10개 스코어], [img3 10개 스코어] ... ] 2. pred.argmax(1)은 각 row의 방향에서 가장 큰 값을 찾고 해당 값의 인덱스를 반환함, 즉, 각 이미지가 가장 높은 score를 보인 class가 어딘지를 반환함 3. 높은 값을 보인 class(예측값)이 Groud Truth인 y와 동일한지 확인하여 True/False 를 반환(pred.argmax(1) == y) 각 이미지에 대한 True/Fase이므로 한번에 트레이닝 시..
nn.Module 입력과 forward 함수: Pytorch에서 모델 호출법 nn.Module의 입력은 뭐고, 클래스 메소드 forward()에 모델 입력은 어떻게 전달하는가? (1) 모델의 입력 X가 nn.Module(X)로써 전달이 된다면 이 X는 forward에 입력 인자로 전달된다. forward 함수는 사용자가 직접 호출하지 않기 때문 (2) 이렇게 입력 받은 모델의 input은 자동으로 forward의 함수 입력으로 들어가서 자동으로 forward propagtion한다. (3) 이때 입력의 길이, 갯수는 가변인자(*input) 임 nn.Module을 활용한 모델 디자인 nn.Module을 상속하여 다음과 같이 모델을 디자인할 수 있다. 일반적으로, pytorch의 nn.Module을 사용하여 모델을 디자인 하기 위해서는 (1) nn.Module을 상속하는 모델 클래스..
[ROS] rosbag 을 csv 로 변환 rostopic 을 활용하여 bag 파일을 csv로 직접 변환할 수 있다. $ rostopic echo -b NAME.bag -p TOPIC_NAME > CSVNAME.csv 한번에 한 개의 토픽에 대하여 변환되어, 다음과 같이 개별 csv 파일로 변환함 rostopic echo -b NAME.bag -p TOPIC_NAME > CSVNAME.csv && rostopic echo -b NAME2.bag -p TOPIC_NAME2 > CSVNAME2.csv ** 해당 글은 필자의 medium 포스트를 백업한 게시글임 참조 : https://wiki.ros.org/rostopic#rostopic_echo, https://gyuwon-anna.medium.com/ros-rosbag-file-%EC%9D%84-..

728x90