-
[Torc] 자율주행차 엔지니어가 된다는 것카테고리 없음 2020. 6. 19. 05:13
>
들어가는 올해 초에는 자율주행차 엔지니어가 사용한 소프트웨어를 정리한 글을 2회에 걸쳐 소개하고 있었습니다. 많은 분들이 계속 접속하시는 걸 보면 자율주행차 소프트웨어에 대해 관심이 많은 것 같아요. 하지만 실제에 대한 정보를 찾는 건 쉽지 않아요. 당시에도 이런 것에 대해 도움이 되었으면 한다는 의견으로 정리했던 기억이 납니다.이번에는 Torc라고 하는 자동 운전 기술을 개발하고 있는 스타트업에, 자율 주행차의 엔지니어에 대해 이야기하겠습니다. 자율주행차 개발을 위한 채용에 관한 이야기를 소개하고 있어요. 그래도 제가 선택한 이유는 아직 낯선 자율주행차 개발에 대한 우리의 나쁘지 않다는 귀추로, 자율주행차 엔지니어가 되고 싶은 분에게 작은 안내가 되지 않을까 해서 소개합니다.원문은 총 3편으로 나쁘지 않게 자면서 작성된 글이지만 개인적인 판단으로 Part 2, 3만 소개하려고 합니다. 만약 Part1에 대해서 알고 싶으시면 아래에 처음 작성한 참고 자료에서 확인하실 수 있습니다.
Part2: 소프트웨어 기술(Software Skills)
>
이 블로그 시리즈 중에서 Part1에서, 우리는 자율주행차 엔지니어가 되기 위한 형의 여행의 시작 방법에 대해 다루었습니다. 앞서 여러분은 교통의 미래를 창조하는 팀으로 여러분의 위상을 확고히 하기 위해 어떤 코딩 언어와 소프트웨어를 배우는지 궁금해.보고-소견사-행동사(See-Think) – Act) 시내 거리를 운전하면서 수백 피트 앞 도로를 따라 천천히 다가오는 보행자를 발견하는 것을 상상해 보세요. 그들이 아직 횡단보도에 들어가지 않은 동안 형은 그들이 마르기 시작할지도 모른다고 예상하면서 브레이크에 발을 들여놓아요. 형의 길이 교차할 때, 그 사람은 길을 건 너 때문에 앞으로 나쁠 게 없어요. 먼저 준비한 형은 멈춰서서 그들이 나쁘지 않게 갈 수 있을 거예요.우리의 end-to-end 레벨 4 자율주행시스템은 인간의 운전자와 거의 유사한 방식으로 의사결정 과정을 모방하기 위해 만들어졌습니다: 보고-소견시-행동시(See-Think-Act) 이는 우리가 보행자를 "인지(See)" 센서 데이터를 한곳에 모아서 사람을 식별하는 알고리즘까지 모든 것을 실현하는 것을 의미합니다. 정지, 감속, 또 운전을 계속할지의 판정과 행동은, 시스템 자체에 프로그래밍 된 동작에 근거합니다.이와 같은 간단한 오류 없이 리오는 환경(비, 눈), 다른 트래픽(누가 방향전환하는지)이나 경로판정 등을 고려하면 더욱 복잡해집니다. 우리는 다양한 종류의 기술을 가진 팀들이 도로에서 부딪칠 수 있는 다양한 형세를 다룰 수 있는 강력한 시스템을 만들 것을 요구할 예정입니다.우리팀(Our Teams) – 능동적인 감지 및 정보융합(Active Sensing and Information Fusion) – 능동감지팀은 센서 데이터를 활용하여 알고리즘을 생성하고 Torc의 자율주행시스템용 물체를 감지 및 식별하여 시스템이 실시간으로 차량 주변 환경을 이해하고 반응할 수 있도록 합니다.기계학습(Machine Learning) - 기계학습팀은 원시 센서 데이터와 같이 공급되는 보다 상세한 특정 물체를 식별하기 위해 시스템을 학습시킵니다. 예를 들어 교통신호를 식별하거나 나쁘지 않기 때문에 보행자와 가로등의 차이를 판정하는 방법을 시스템으로 가르치기 위해 기계학습을 사용합니다.지도 제작 및 육지화(Mapping and Localization) – 자율주행차 지도는 사람이 이동하는데 사용하는 일반적인 지도보다 더 구체적이어야 합니다. 우리의 지도 팀은 3D환경을 개발하고 자율 주행 차를 운행하는 시스템이 목적지에 어떻게 도착하는지 알 수 있도록, 현지 팀과 협력합니다. 행동이나 계획(Behaviors and Planning)– 행동 팀은 차량이 어 떤 형세로 어떻게 행동해야 하는지에 집중하는 것입니다. 예를 들어, 혼잡한 고속도로에서 합류하려면 차가 교통의 흐름에서 끼어들 수 있는 좋은 지점을 판정하고 안전하게 달성하기 위해 가속도를 조정할 필요가 있습니다.기계(Mechanical) – 기계팀은 차량설계의 개념을 만들어 센서, 장착 및 컴퓨터를 차량에 통합합니다.시스템 통합(System Integration) – 구성요소가 개별적으로 동작할 뿐만 아니라 시스템으로서도 작동시키는 것이 팀의 중요한 역할입니다. 시스템통합팀은구성요소전체의높은수준의상호작용을연구합니다.이다베디드, 제어 및 전기 (Embedded, Controls, Electrical) – 이 팀은 소프트웨어를 전 구성요소 시스템에 통합하여 가속, 제동 및 조향 등 차량을 제어하는 전기 시스템으로 작업합니다.DevOps – DevOps 팀은 소프트웨어 배포를 관리하고 기술 인프라를 유지하기 위해 작업을 수행합니다.안전 및 테스트(Safety and Testing) – 안전은 자율주행 시스템의 주요 목표이며, 안전 및 테스트 엔지니어는 개발의 모든 단계에서 매우 중요합니다. 안전 및 테스트 팀은 모든 팀에 대한 안전 프로토콜과 습관을 그대로 유지할 뿐만 아니라 새로운 기능을 테스트 및 검증하도록 노력합니다.어떻게 준비해야 될지 예쁘잖아. 우리는 Torc 엔지니어들에게 어떤 소프트웨어 기술과 경험이 그들이 우리 AV팀에서 그들의 전문 분야에서 성공하는데 도움이 되었는지 물었습니다.
>
C++는 속성(pop the hood) 메모리 관리에 깊이 접근할 수 있는 성능향 언어입니다. 만약 어떤 지원자가 제대로 된 C++와 로봇운영체제(ROS) 기술을 가지고 있다면, 이들은 이미 로봇공학 엔지니어입니다. 지도 제작이나 지면화 엔지니어가 되기 위해서는 일걸소음뿐 아니라 일반적인 좌표 변환이나 3D기하학을 이해해야 할 것이다. 후보자가 SLAM(동시 현지화 및 맵 제작)과 같이 일하고 있었다면, 이 역할에 매우 적합했을 것이다.
>
DevOps팀은 소프트웨어 개발과 시스템 관리의 통일 기술을 요구합니다. 우리는 자동차 컴퓨팅에 대한 소프트웨어 배포를 관리하기 위해 Torc에서 이러한 기술을 사용하고 있습니다. 리눅스 컴퓨터를 적절하게 감독하고 관리하는 것은 역시 하나의 시스템을 자동화하고 견고하게 만드는 중요한 기술입니다.우리는 우리 차량에 매우 복잡한 네트워크를 사용합니다. 좋은 네트워크 디자인을 설계하고 복잡한 디자인을 디버깅 할 수 있는 것은 우리 업무에 필수입니다.DevOps 팀원들이 프로세스를 자동/반복하기 위해 사용하는 일반적인 기술은 Config Management 및 Continuous Integration 파이프라인입니다. 개발자가 소프트웨어를 작성하고 수동으로 컴파일 한 후 수동으로 컴퓨터에 복사(그리고 수동으로 구성)하는 대신 우리는 자동화를 사용하여 가능한 한 인간 오류가 발생할 가능성이 거의 없는 상태에서 소프트웨어를 제작, 설치 및 구성하도록 합니다.
>
하드웨어 설계 분야에서 알아야 할 가장 유용한 소프트웨어는 다양한 CAD(Computer Aided Design)와 시뮬레이션 패키지이다. 이들은 이 기술을 작동시키는 하드웨어를 만들기 위해 매일 사용됩니다. 가장 유용한 코딩 언어는 Python과 MATLAB이다.하드웨어의 초점은 때때로 코드의 효율성이 아니라 데이터 조작 및 때때로화에 관한 것이다.
>
C++는 객체지향 프로그래밍과 낮은 수준의 메모리 조작을 지원하는 컴파일된 프로그래밍 언어입니다. 많이 사용된 C++ 코드는 매우 빠르게 확장 가능하므로 Torc는 C++를 사용하여 자율성을 강화합니다.지원자는 코딩하는 법에도 익숙해야 합니다. 산업 코드 어떻게든 랜타이더에 잠재적으로 안전하지 않은 버그라고 할 수 있는 특정 코딩 풍속을 금지합니다. 이러한 제약조건을 적용함으로써 코드는 보다 안전하고 휴대할 수 있으며 신뢰할 수 있게 됩니다. MISRA 코딩은 유출되어 문서들이 어렵게 되어 있지만 핵심 아이디어는 상당히 쉽게 배울 수 있습니다.
>
자율 주행 행동은 자동차, 보행자나 자전거 같은 다른 많은 개체가 있다는 점을 고려하는 도로에서 차가 어떻게 행동해야 하는지에 대한 높은 수준의 의사 자결에서 중요한 역할을 한다. 이러한 서로 다른 실태를 다루고 필요한 안전 알고리즘을 개발하기 위해서는 차량의 스포츠학이나 역학이 도로에서의 움직임에 어떤 영향을 미치는지 잘 이해할 필요가 있습니다. Torc에서 일하는 재미는 국희의 작업이 결코 자신의 요소인 만큼 대한민국이 아니라는 점이다. 차량의 액튜에이터를 제어하는 차량 인터페이스와 같은 다른 구성요소에 대해 작업할 수 있습니다. 이 다양한 작업을 위해 제어 알고리즘을 이해하고 제어 루프를 개발하고 튜닝한 경험을 갖는 것이 좋습니다.무엇보다 보통 묻는 질문은 이 기술에 대해 어디서 배울 수 있는가?이다. 댁에서 드물게 놀 수 있는 시뮬레이터는 상당히 많이 있습니다. new the now now를 탐구하는 것은 항상 즐겁고 당신이 원하는 대로 시뮬레이터를 운전할 때 다른 종류의 만족감을 가지게 됩니다. 이러한 시뮬레이터를 사용해 실전(Hand-on)의 경험을 하고 몇 개의 제어 알고리즘 또는 자율주행 동작을 개발하는 것은 좋은 시작이다. 또한 자율 주행 차량에 관심이 있는 동료들과도 소통을 해 주시기 바랍니다. 개인적인 경험으로 미루어 그룹 프로젝트에서 일하고 다른 사람들에게 배우는 것이 뉴더-다 기술을 이해하는데 많은 도움이 된다고 말하고 싶습니다.
Part 3: 코딩을 넘어서 (Beyond Coding)
>
자율 주행차는 우리가 알고 있는 운송 수단에 혁명을 일으킬 수 있습니다. 이 기술은 또, 공학 분야에서 새롭게 관심있는 일을 창출하고 있습니다. 이 블로그 시리즈 중 Part1에서 우리는 이 분야에서 일자리를 찾기 시작하는 방법에 대해 설명했습니다. 2부에서는 AV 엔지니어링 분야의 틈새를 찾기 위해 배워야 할 가장 중요한 코딩 언어에 대해 이야기했습니다. 이 시리즈의 마지막 블로그는 정의하기 어려운 성공지표, 즉 개인개발에 관한 것이다.자율주행차는 소프트웨어로 움직인다. 코드보다 더 중요한 게 뭘까요?자율주행차를 만드는 인적 요소를 무시할 수 없습니다. 로봇공학담에는 기술에 대한 열정이 있으며, 세상을 더 본존적인 곳으로 만드는 사람들이 있습니다. 자율주행시스템을만드는것은빠르게진행되는환경에서일하고복잡한도전에동료들과협조해서아무도일전에해결하지못했던글재에대한해결책을마련하는것을의미합니다. 이런 종류의 일은 매우 흥미진진하고 단순한 코딩 방법, 그 이상이 필요합니다.Torc에서는 좋은 프로그래머만 고용하는 것이 아닙니다. 우리는 뛰어난 일을 이루기 위해 일관된 추진력을 가진 사람을 찾고 있습니다. 우리는 자아(ego)가 팀워크에 방해가 되지 않도록 하는 사람들을 찾고, 다양한 그룹과 의사소통하는 방법을 이해합니다.우리는 이들 핵심가치를 Hungry, Humble, People Smart라고 부릅니다.우리는 Torc 엔지니어들에게 코드를 뛰어넘어 코딩 능력만큼 중요한 기술을 발견하고 AV 산업에서 일하는 것에 대한 그들의 기대가 현실과 어떻게 다른지 설명해 줄 것을 요청했습니다.
>
코딩은 아마 개발을 위한 실제 작업의 일부에 지나지 않을 것이다. 어떤 것을 유형하기 전에 이미 많은 시간이 해결되어야 하는 문제 집합에 적합한 구조를 찾는데 소비됩니다. 어떤 구성요소라도 어려운 조건 하에서 자동차를 주행하기 위해 모든 시스템과 상호 작용할 필요가 있습니다. 이를 가능하게 하는 유일한 요인은 통합부터 모든 개발단계에 이르기까지 팀 간의 일관된 의사소통이다.이 분야에서 그냥 보이는 고정관념은 그들의 분야를 속속들이 알고 있는 반사회적 천재 가운데 가장 바람직하지 않다. 자율주행차 업계에서는 여전히 탐구해야 할 질문이 많아 아무도 답을 모릅니다. 답을 알 수 없다는 불편한 감정에 매우 편안한 것은 내가 사용한 최고의 자산이다. 교실에는 답을 틀리는 것에 대한 큰 벌칙이 있는데, 이는 학생들이 절대로 위험을 느끼지 못하도록 합니다. 이 업계에서 질문하는 것은 결코 당신을 늦게 하지 않을 것이다. 제 경험으로는 지식이 풍부한 사람은 본인이 자주 말하는 주제에 대해 이 말을 하는 것을 언제나처럼 괜찮으니까 들어주세요!이 분야에 진출하려고 노력하는 사람에게 제 조언은 실수를 할 준비가 되어 있다는 것이다. 많은 실수를 할 준비가 되어 있어야 해요. 한번도실수한적이없다면,천스토리에서새롭고더-다운일을하려한적이없는것. 거대한 복잡한 문제처럼 보일 수도 있는 것은 항상 - 그랬던 것처럼 스스로 평가하고 고칠 수 있는 일련의 작은 시스템이다. 네트워킹, 하드웨어, 전기 또는 프로그래밍의 문제를 분리하여 해결할 수 있는 사람은 이미 우리와 같은 기술의 개발에 있어서 자산이다.
>
코드를 넘어서 가장 중요한 기술은 야망, 추진력, 협업입니다. 우리의 많은 성공은 우리 팀이 함께 일하는 방식에서 나옵니다. 뭔지 모른다면 팀끼리 힘을 합쳐 답을 찾습니다. 이것은 우리의 야망과 결부되어 우리가 해결책을 모르고 사고를 해결하는 창의적인 비결을 찾을 때 사고를 파헤치려고 노력합니다.일반적으로, 우리는 단순히 기술적 전문 지식을 요구하는 것이 아니라 당신이 그 팀의 일원이 되기를 희망합니다. 올바른 스킬을 가지는 것은 좋지만, 그룹과 함께 일하는 데 필요한 사람들의 스킬을 가지는 것도 매우 중요합니다. 개인주의자가 될 수도 있고, 훌륭하지만, 우리가 일하는 방식과 토크의 성공은 팀 내에서 일하는 데서 나옵니다. 기술적인 측면과 인간과의 균형을 유지하며 다른 사람들과 관계를 맺는 것은 이상적인 Torc를 실현합니다.
>
기술정보와 비기술정보를 효과적으로 전달하는 능력은 제가 Torc에서 성공하도록 도운 가장 중요한 기술 중 하나입니다.제가 일반적으로 현실(real-world) 일로 기대했던 것은 제가 기계 속에서 톱니바퀴가 되어 같은 일을 반복하도록 묶여 있다는 것이었습니다. Torc는 저에게 다양한 종류의 문제들에 대해 일하게 해주었고, 제가 얻을 수 있을 거라고는 상상도 하지 못했던 실제 경험을 하게 해주었습니다.
>
미래지향적인문제와의사소통은이분야에서일하기위해필요한두가지중요한기술입니다. 아이들과 아이디어를 갖고 이를 달성하기 위한 계획을 제시하고 복잡한 목표를 쉬운 주제로 바꾸는 방법으로 소통할 수 있다는 것은 업무에 있어서 매우 강력할 것이다.저는 지난 달의 '커팅 에지(cutting edge)'가 이미 수정되어 개선되고 있는 끊임없이 변화하는 산업의 일원이 되기를 기대했습니다. 이것은 사진으로 밝혀졌습니다. 이곳 Torc의 결과는 전체가 끊임없이 서로를 배우고 돕는 아름다운 문화입니다. 그것은, 가장 추진력이 있는 사람들이, 장래의 기술의 전문가가 될 수 있는 무한한 기회를 제공하고, 회사의 방향에 실질적인 영향을 미친다.
>
의사소통 기술은 이 분야에서 저를 가장 많이 도와준 비기술적인 자질입니다. 다른 중요한 자질은 겸손과 추진력이었다. 당신은 세계 최고의 프로그래머가 되지만 겸허하게 되지 않고 자신을 밀고 나가는 추진력을 갖추지 못하면 멀리까지 갈 수는 없겠죠. 자신이 최고라고 생각하면, 안일해져, 바로 밀고 나가는 사람에게 뒤쳐져 버립니다.결말, 당신은 당신의 분야에서 가장 현명한 사람 중 한 사람이 될 수 있지만, 당신이 하고 있는 일에 대해서도 열정적이어야 해. 자율주행차 분야에서 일하는 것이 열정이라면 그것을 실현하는 방법을 찾을 수 있을 거라고 생각합니다.인터럽트 Torc는 2007년 DARPA Urban Challenge 참여팀에서 10년 이상 자율주행차를 개발해 온 기업입니다. 따라서 2019년 3월 Daimler Truck에 인수될 정도로 기술력을 인정받은 기업입니다. 그런, 기업에서 자율 주행 차량의 개발을 위해 필요한 엔지니어에 대해 소개하고 있습니다. 10년 이상 자율주행차 개발에 힘써 왔고, 소프트웨어의 중간 개발도 해왔기 때문에 어느 정도 자율주행차 개발에 대한 과정은 갖추어져 있지 않을까 생각해.이번 글을 통해 자율주행차 개발에 필요한 분야와 그 분야에서 필요한 소프트웨어 엔지니어의 역량을 파악할 수 있었을 것입니다. 또 단순히 기술적 능력과는 별개로 스타트업이라는 특성을 나타내는 엔지니어가 갖춰야 할 인간적인 부분까지 소개하고 있습니다.자율주행차량에대해서많이관심이있는데몇년전까지는관련된일을하는사람을만나기가어려웠을것입니다. 그때는요즘보다더관련정보와기술을찾기가어려웠을것같아. 하지만 현재 상황도 크게 달라진 게 없다는 걸 우리가 이번 문장에서 확인할 수 있어요. 자율 주행차라고 하는 낯선 것에 접근하는 방식은 기존의 정해진 틀에서는 만들기 어렵다는 것을 설명하고 있습니다. 그것을 극복하기 위해서 열정과 겸손함으로부터 생겨나는 협력, 그렇기 때문에 지속적인 지적 탐구를 자율 주행차 개발 엔지니어가 가져야 할 덕목으로서 이야기하고 있습니다. 골란스토리는 안정된 시스템이 존재하는 큰 기업에서 쉽지 않을까 생각해. 스타트업이 갖고 있는 절박함이 보이지 않는 것 같아.예를들어시에서도자율주행차에관심있는분들이이글을읽으면실제현장에서필요한것이무엇인지에대해서살펴볼만한이야기가아닌가생각해. 그렇기 때문에 실패를 인정하고 다음 단계를 위해서 필요한 비용으로 인정할 수 있는 분위기가 만들어지는 문화도 함께 확산되었으면 좋겠습니다.저는 자율주행차가 소프트웨어라고 믿는 사람이 다닙니다. 그 만큼 기존의 하드웨어의 한가운데였던 자동차를, 소프트웨어가 그 자리에 가져 온다고 생각하고 있습니다. 자율주행차는 자동차 자체보다 그것이 포함되는 미래의 교통 환경을 변천시키기 때문입니다.앞으로 한국의 자율주행차 개발을 하시는 많은 엔지니어들에게 격려를 보냅니다.또한 한국의 자율주행차 스타트업인 CODE42의 CDOE42Way도 소개하고 싶어.
그리고 자율 주행 자동차 엔지니어를 위한 소프트웨어를 정리한 문장도 처음 씁니다.
PS:검색에 들어와서, 만약 원하는 스토리를 찾을 수 없다면, '태그' 또는 '검색'을 하면 더 많은 자료를 얻을 수 있습니다. 그래도 찾는 스토리가 없으면 저한테 연락 주시면(이메일,메시지), 제가 아는 선에서 도와드릴게요. 부그다음을 갖지 않아도 만질 수 있습니다.Over the Vehicle!!!참고 자료