온라인 교육 업체 유다시티가 자율주행차 시뮬레이터를 오픈소스 기술로 공개했다고 2월8일 밝혔다.
이번에 공개한 시뮬레이터는 유다시티 온라인 강의 ‘자율 주행차 엔지니어링 과정’의 일부 수업 자료다. 자율 주행차 엔지니어링 과정은 유다시티 뿐만 아니라 BMW, 우버, 디디추싱, 메르세데스 벤츠, 엔비디아 등이 함께 협력해 만든 강의로 딥러닝, 컨트롤러, 컴퓨터 비전, 자동차 하드웨어 등을 가르친다. 강의는 유다시티 설립자이자 과거 구글에서 자율주행차 개발을 이끈 세바스찬 스런이 직접 진행하기도 하다. 유다시티는 이 강의를 위해 오픈소스 자율자동차 소프트웨어를 개발하고 있으며, 이와 관련된 소스코드를 깃허브에 전부 공개했다. 여기에는 주행 기록 데이터, 딥러닝 모델, 카메라 마운트 기술 등이 포함돼 있다.
Clone the repository to your local directory, please make sure to use Git LFS to properly pull over large texture and model assets.
Install the free game making engine Unity, if you dont already have it. Unity is necessary to load all the assets.
Load Unity, Pick load exiting project and choice the self-driving-car-sim folder.
Load up scenes by going to Project tab in the bottom left, and navigating to the folder Assets/1_SelfDrivingCar/Scenes. To load up one of the scenes, for example the Lake Track, double click the file LakeTrackTraining.unity. Once the scene is loaded up you can fly around it in the scene viewing window by holding mouse right click to turn, and mouse scroll to zoom.
Play a scene. Jump into game mode anytime by simply clicking the top play button arrow right above the viewing window.
View Scripts. Scripts are what make all the different mechanics of the simulator work and they are located in two different directories, the first is Assets/1_SelfDrivingCar/Scripts which mostly relate to the UI and socket connections. The second directory for scripts is Assets/Standard Assets/Vehicle/Car/Scripts and they control all the different interactions with the car.
Building a new track. You can easily build a new track by using the prebuilt road prefabs located in Assets/RoadKit/Prefabs click and drag the road prefab pieces onto the editor, you can snap road pieces together easily by using vertex snapping by holding down "v" and dragging a road piece close to another piece.
텐서플로우(TensorFlow)는 기계 학습과 딥러닝을 위해 구글에서 만든 오픈소스 라이브러리입니다. 데이터 플로우 그래프(Data Flow Graph) 방식을 사용하였습니다.
데이터 플로우 그래프
데이터 플로우 그래프는 수학 계산과 데이터의 흐름을 노드(Node)와 엣지(Edge)를 사용한 방향 그래프(Directed Graph)로 표현합니다.
노드는 수학적 계산, 데이터 입/출력, 그리고 데이터의 읽기/저장 등의 작업을 수행합니다. 엣지는 노드들 간 데이터의 입출력 관계를 나타냅니다.
엣지는 동적 사이즈의 다차원 데이터 배열(=텐서)을 실어나르는데, 여기에서 텐서플로우라는 이름이 지어졌습니다.
텐서(Tensor)는 과학과 공학 등 다양한 분야에서 이전부터 쓰이던 개념입니다. 수학에서는 임의의 기하 구조를 좌표 독립적으로 표현하기 위한 표기법으로 알려져 있지만, 분야마다 조금씩 다른 의미로 사용됩니다. 여기에서는 학습 데이터가 저장되는 다차원 배열 정도로 이해하시면 되겠습니다.