for Robot Artificial Inteligence

현대자동차 로보틱스 채용전환형인턴 1차 면접

|

3명이 들어오셨다.

직무 면접과 Peer 면접이 있었다.

면접

  1. 포트폴리오 발표

  2. 매칭포인트에 양이 많은데 어떻게 줄이는지 Ransac을 이용하여서 가치있는 매칭포인트만 고려할 수 있습니다. Epipolar line contraint으로 공간산의 좌표를 얻고 Ransac을 통해 가치있는 MapPoints들을 걸러낼 수 있습니다. (Descriptor를 통한 매칭을 할때 이미 Ransac을 사용해서 2D Plane간에 가치있는 매칭 포인트도 구할 수 있다)

  3. Epipolar Contraint으로 Essential Matrix를 얻게 되는데, 거기서 로테이션이 오류가 많은지, 트랜슬레이션이 약한지. 로테이션이 정확하고, 오히려 Translation이 부정확 합니다. 그 이유는 로테이션은 scale factor의 영향을 받지 않습니다.

  4. 포즈 추적 어케 했는지 이미지 시퀀스에서 얻어지는 특징점과 드스크립터를 에피폴라컨스트레인으로 통한 맵포인트드들을 생성을하고 생성된 맵포인트들을 PnP 알고리즘을 통해 이미지에 재투영하여 least squre를 통한 자세 추정을 합니다.

  5. 공모전 구상만 한것인지 네 그렇습니다. 가지고 있는 경험을 가지고 아이디어를 짜서 구상한 것입니다.

  6. 팀에서 무슨 역할을 맡았는지 저는 센서 퓨전역할을 맡아서 현지화 하는 역할을 맡았습니다. 또한 당시에 멀티지오메트리 공부를 하지 않아서, 도형이라는 특징을 이용을 하여서 공간상의 좌표를 구했었습니다.

  7. 알고리즘 성적 어케 생각하는지 좋지 못하였습니다. 개선해야 되는 부분이라고 생각됩니다.

  8. 어떤 스타일인지 팀 팀을 하나로 뭉치는 팀을 만들고 싶습니다. 한명의 낙오자도 없이, 서로 배려하며, 서로 끌고 나가며, 결국에는 다양한 아이디어를 실현할 수 있는 혁신적인 팀을 만들고 싶습니다.

  9. 왜 논문을 두번째로 했는지 아무래도 논문 어셉턴트를 받을 수 있는게 첫번째 보다는 두번쨰가 더 컨티리뷰션이 크다 생각하여서 그렇게 하였습니다. 아무래도 논문 어셉턴트 받는게 중요하니, 첫번째 방법보다 두번째 방법이 더 가능성이 높아 보였습니다. 그 이유는 메커님휠의 로봇 모델을 이용한 현지화이기 때문입니다.

  10. 석사, 학사 프로젝트 누구랑 하였는지 동료들이랑 하였습니다. 석사때에는 3명의 팀원으로 슬램을 맡은 친구, 매니퓰레이터를 맡은 친구, 저는 현지화와 객체 인식을 맡아서 했었습니다. 학사때는 친구와 둘이서 했었습니다.

  11. 문제가 생겼을때 어떻게 해결하였는지 보통 상대망의 의견을 경청하려고 노력 많이 하였습니다. 제가 엉뚱한 제안을 많이 하는데, 예를 들어 스마트 지팡이 만들떄도, 웅덩이도 감지하게 전선을 달자고 제안을 하였었습니다. 그러나 동료가 사실 별 의미가 없고 무의미하다고 하여서, 그런 동료의 생각을 빨리 수긍하고 프로젝트에 진행하게 되었습니다. 이것이 저의 문제 점이라 생각됩니다.

  12. 한국에 왜 안오는지 부모님의 경제적인 부담을 덜어주기 위해서 현재 여기에 머물고 있습니다.

  13. 프로젝트에 대해 설명 카메라 기반의 모바일매니퓰레이터로 책꽂이 로봇을 개발하는데 참여를 하였습니다. 카메라 기반의 슬램을 통해서 네비게이션 시스템을 만들고, 책장 주변 근처에 오게 된다면, 책을 꽂을 위치를 찾고자 책꽂이 위치에 도형을 이용하여서 책을 꽂을 공간상의 위치를 찾고자 하였습니다. 또한 카메라 기반의 현지화는 아무래도 데이터에 대한 오차가 있기 때문에, 휠센서에서 얻어지는 오도미터리와 슬램에서 얻어지는 오도미터리를 익스텐디드 칼만 필터를 통해 융합을 하면서 최적화 하였습니다.

  14. 개인프로젝트 그냥 오픈소스 돌린거 아닌지 아닙니다. 오픈 데이타 셋을 이용하여서, PCL의 문서를 보면서 간단하게 객체 인식을 하였습니다.

  15. 어려움을 겪엇던 경험들 뉴욕에서 총 맞을번한 경험 슬램을 모바일 로봇에 적용하는 알고리즘 디버그 경험

  16. 탐색을 어떻게 했는지 먼저 슬램에서 얻어지는 3디 맵데이터들을 얻고, 이를 octo_tree 라이버러리를 통해 ocuppied 2d map으로 변환을 시켰습니다. 이렇게 되면 이제 각셀에 occupied가 되었는지 free가 되었는지 가중치를 얻게 되는데, 이 데이터 값을 통하여 2D Image로 변환을 주었으며 Opencv 이미지 프로세싱 알고리즘을 통하여 맵에대한 형상을 구하고, centroid 알고리즘을 통하여 형상이 된 맵에 중심점을 찾게 하였습니다. 이를 현재 로봇 포즈와 고려하여서 탐색을 하도록 하였습니다.

  17. 네비게이션 시스템 이렇게 얻어진 맵데이터들과 탐색점을 RRT * , PRM을 사용을 하여서 자율탐색을 하고, 장애물이 발견되었을때 탐색점을 업데이트 하도록 하며, Loop Closure가 발생하였을 경우 탐색을 종료하고, 사용자가 특정 타겟포즈를 주었을때 RRT *, PRM으로 탐색할 수 있도록 하였습니다.

  18. 로컬리제이션 슬램에서 얻어지는 오도미터리와, 휠센서에서 얻어지는 오도미터리를 익스텐디드 칼만필터로 퓨전하여 얻도록 하였습니다.

  19. 카메라 말고 다른 센서 해본적 있는지 없습니다. 오픈데이터 셋으로 라이더를 이용해보았지만, 실제로 이용해본적은 없습니다.

  20. 로스패키지로 그냥 사용한거 아닌지 꼭 그렇지 많은 않습니다. 익스텐디드 칼만 필터 구현같은것은 제가 직접 하였습니다.

내가 했던 질문들

  1. 무엇을 이용하는지 로스 로스 키네틱을 사용하며 로스2로 넘어가려고 준비중
  2. 컴퓨터 사양 잘 모른다. 아마 지티에스가 달려있을것이다.
  3. 취미 생활 하시는지 운동이나 다른 것 할 시간이 많다.

Comment  Read more

한국자동차연구원 1차 객체 인식 연구원 면접

|

면접관 5명이 들어오셨고, 주로 3분만 물어봄

면접

  1. 포트폴리오 발표

  2. 중국에 가게 된 이유 제 인생에 있어서 개인적인 목표가 3개국어를 할 줄 아는 엔지니어가 되는 것이 목표입니다. 그래서 교환학생을

  3. 성적이 좋지 않은 이유 군대 졸업 이후에 전공과목에 대한 물리적으로 잘 이해가 되지 않았습니다. 그러다 보니 수업도 잘 못따라가고 좋은 성적이 나오지 않았습니다. 그러나 컴퓨터에 관련된 수업은 좋은 성적을 유지하였습니다.

  4. 60점 교환학생 시절, 현지 수업을 들었었습니다. 제가 실습도 잘 못따라가고 그러다 보니 좋은 성적이 나오지 못하였습니다.

  5. 로스자격증, 오픈소스로 푼 문제들 아닌지 로봇운영시스템을 만든 회사에서 개설한 코스입니다. 프로젝트별로 문제를 풀 수 있고, 일정 점수가 넘어가야 자격증을 얻을 수있습니다. 꼭 그렇지 만은 않습니다. 이 시스템이 새로생긴 시스템이기 때문에 많은 리소스가 없고 이에, 제가 스스로 풀어야 하는 문제들이 더 많았습니다.

  6. 연구실에서 교유관계 장난을 많이 잘치는 스타일입니다. 그래서 친구들하고 잘 어울립니다. 코로나때문에 연구실을 잘 나가지 못하였지만, 꾸준히 연락을 하며 지내었습니다.

  7. 교수님하고 관계 교수님하고 잘지내고 있습니다. 홍콩분이고, 제가 어떤 일을 물어보든, 직접적으로 많이 도와주시며, 좋은 관계를 유지하고 있습니다.

  8. 왜 박사 안하는지 우선 집에서 재정적인 문제가 있기 때문에, 우선 취업하자라는 것을 하게 되었습니다.

  9. library를 사용한거 아닌가요 꼭 그렇지만은 않습니다. 익스텐드 칼만필터에 대해 개발은 메카님휠특성을 가진 로봇이기 떄문에, 익스텐드 칼만필터 프레임 워크를 이용하였지만, 일전 부분에 있어서 제가 스스로 개발하였습니다.

  10. 프로젝트에서 역할 프로젝트에서 센서퓨전을 통한 현지화와 카메라 센서를 통한 객체추정을 하였습니다.

  11. 인지 예측 기반 미래차 자동충전 응용 및 임베디드 시스템 기술 분야에 하실수 있는 연구 카메라 기반으로 충전할 곳을 인지하고 움직이며, 미래차 자동충전에 대한 기술을 연구할 수 있습니다.

  12. 정부과제 보고서를 써봤는지 써보지 못하였습니다.

  13. 국가에서 보내는 유학인지 네 맞습니다. 국가장학금을 받고 가는 것이였습니다.

  14. 교환학생을 본인이 돈내고 갔는지 아닙니다. 학교에서 보내주는 교환학생이였습니다.

  15. 마지막할말 오늘 이렇게 귀중한 시간을 주셔서 감사합니다. 비록 좋은 결과를 얻지 못하여도, 제가 있는 자리에서 최선을 다하여서, 꼭 면접자리가 아닌 더 좋은자리에서 뵙도록 노력하겠습니다. 감사합니다.

Comment  Read more

만도 1차 면접 후기(센서퓨전 알고리즘 설계 엔지니어)

|

면접관 두명, 주로 간단한 직무 면접

면접

  1. 자기소개 안녕하십니까. 우선 이렇게 면접의 기회를 주셔서 감사합니다. 센서퓨전알고리즘 지원자 이찬교 입니다. 저는 중국 상해교통대에서 로봇공학을 공부하였습니다. 주로 센서퓨전을 통한 현지화와 객체주정에 대해서 공부하였고 이에 모바일로봇 내비게이션 시스템을 개발하였습니다. 이와 같은 경험으로, 관련 직무 인턴 경험과 개인 프로젝트등을 통해 역량을 개발하였습니다. 오늘 면접 최선을 다해 임하여, 만도 센서퓨전엔지니어가 될 수 있도록 하겠습니다. 감사합니다.

  2. 중국어 일할정도로 잘하는지 실무에서 일할 정도로 할 수 있습니다. 소통을 하는데 문제는 없습니다.

  3. 만약 센서가 작동안한다면 어떻게 추정할 것인지 만약 라이더 센서가 있고 레이더 센서가 있다고 치면, 중간에 트리거를 하나 설정하여서 라이더 센서가 정확하게 들어오는데도 불구하고 레이더 센서가 반응이 없다면, 트리거를 통해 라이더 센서만 우선 받아 들여 추정을 할 것입니다.

  4. 로보틱스, 센서퓨전에 대한 수업 제가 들었던 수업은 온라인 대학강의입니다. 이에 제가 부족한 부분을 온라인 강의를 통해 공부를 하였고, 주로 돈을 주고 등록하게 되면, 튜터가 그룹을 만들어주어주고 프로젝트를 멘토해주면서 일정 수준이 넘게 되면 증명서를 얻게 됩니다.

  5. 카메라와 라이다센서에 대한 퓨전 Yolo Object Detection을 통해 먼저 바운더리 박스를 구하게 됩니다. 이에 외부 파라미터와 카메라 내부파라미터를 라이더에서 얻어지는 포인트클라우드에 적용하여서 생성된 맵포인트들을 이미지플래인에다가 투영을 하였습니다.

  6. 데이터셋과 프레임워크는 뭐 이용했는지 코코 데이터 셋과 ResNet101을 사용하였습니다.

  7. 레이더 센서를 해보았나 오픈 데이터 셋으로만 사용을 해보고, 실제 레이더 셋을 사용해보지는 않았습니다.

  8. 상해교통대로 왜 갔는지 우선 이유는 2개 이유가 있습니다. 첫번쨰로는 제가 살면서 3개국어를 할줄 아는 사람이 되는 것이였습니다. 이에 유학에 길로 들어스게 되었습니다. 나머지 하나는 제가 국립국제교육원에서 하는 유학장학생으로 선발이 되었습니다. 제가 대학을 선택할 수 있는 것이 아닌, 장학재단에서 선택을 해줘서 상해 교통대로 가게 되었습니다.

  9. 와서 어떤 일을 해보고 싶은지 레이더 센서를 다뤄보고 싶습니다. 아무래도 제가 카메라 센서와 다른 센서를 이용하여서 퓨전을 하였는데, 사실 하다보면 다른 센서도 다뤄보고 싶고, 그렇습니다. 평소에 다룰 수 없었던 레이더 센서를 다루고 싶습니다.

  10. 마지막 할말 오늘 이렇게 시간을 주셔서 감사합니다. 꼭 만도에 센서퓨전 엔지니어가 되고싶습니다. 꼭 그렇게 되지 못하더라도, 자기계발을 꾸준히 하여서 꼭 면접자리가 아니여도, 다른자리에서 뵐수 있도록 노력하겠습니다 감사합니다.

  11. 왜 중국에 남아있는지 우선 부모님한테 경제적인 부담을 드리기 싫어서, 현재 현지에서 인턴을 하던, 계약직을 하던 최대한 준비가 다 된상태에서 한국으로 가려고 합니다.

  12. 센서 퓨전에 있어 주위해야할점 아무래도 frequency에 대한 다름을 맞춰야 된다고 생각합니다. 센서마다 프리컨시가 드르다 보니, 이를 update frequency를 고정을 하여서 두 데이터 간에 얼라인을 맞춰야 합니다.

  13. 3개 국어 목표를 달성 하셨나요. Native 정도로 할 수는 없지만, 실무에서 할 수 있는 정도 입니다.

  14. 임베디드시스템을 경험해본 적 이 있나요? 아두이노 말고는 실제로 경험해 본적이 없습니다.

  15. 만약 본인이 말했던 센서퓨전에 제약 조건이 많은 임베디드 시스템에서 사용한다면 어떻게 최적화를 할 것인가요? 지금, 따로 아이디어가 떠오르지 않습니다. 죄송합니다.

Comment  Read more

what is lidar sensor

|

what is lidar Sensor

Lidar is a sensor. Lidar stands for light detection and ranging. Like analog to radar. It sends out beams of light, and it measures how long it takes for the beam of light to come back. So it determines the distance to an object. A lidar contains a laser. A lidar is just a contraption basically consisting of a laser, a method of deflection basically scanning that laser beam across the field of view, and photo diode or a photo detector that detects the incoming photons that are reflected from the object. So the laser sends out a very short pulse, few nanoseconds, and then measures the time it takes for the pulse to go to the object, and back to the lidar where it’s detected. This time gives us then an indication, or gives us the exact distance to that object. You scan this laser beams across the field of view, which means you get for each point in the field of view, a distance to an object or no distance if there is no object there whatsoever. From this, it tells you exactly what objects there are, and how far away they are. We use lidar as one sensor in our overall sensor suite. We have several different kinds of sensors. We have lidar, we have radar, and we have various cameras, and ultrasound. All of those sensors work together to detect, and track objects in the environment.

Lidar Sensor

Lidar sensing gives us high resolution data by sending out thousands of laser signals. These lasers bounce off objects, returning to the sensor where we can then determine how far away objects are by timing how long it takes for the signal to return. Also we can tell a little bit about the object that was hit by measuring the intensity of the returned signal. Each laser ray is in the infrared spectrum, and is sent out at many different angles, usually in a 360 degree range. While lidar sensors gives us very high accurate models for the world around us in 3D, they are currently very expensive, upwards of $60,000 for a standard unit.

• The Lidar sends thousands of laser rays at different angles. • Laser gets emitted, reflected off of obstacles, and then detected using a receiver. • Based on the time difference between the laser being emitted and received, distance is calculated. • Laser intensity value is also received and can be used to evaluate material properties of the object the laser reflects off of.

Here are the specs for a HDL 64 lidar. The lidar has 64 layers, where each layer is sent out at a different angle from the z axis, so different inclines. Each layer covers a 360 degree view and has an angular resolution of 0.08 degrees. On average the lidar scans ten times a second. The lidar can pick out objects up to 120M for cars and foliage, and can sense pavement up to 50M.

Comment  Read more

what is Pointcloud

|

What is pointcloud

What is a point cloud? A point cloud is the set of all the Lidar reflections that is measured. So each Lidar, each point is one laser beam going to the object being reflected, and that creates a point because the laser beam is relatively tight in diameter. Then you collect all of the reflections of those laser beams from the environment, and this creates this point cloud. The data Lidar generates depends on the principle of the Lidar field of you, and you know how dense the beams are. But let’s call it a 100 megabyte per second roughly, can be the more can be less. If you have 64 lasers, obviously that thing generates way more data than if you have only two layers, or 10 or 30 layers. So it depends a little bit on the Lidar itself.

let’s dive into how lidar data is stored. Lidar data is stored in a format called Point Cloud Data (PCD for short). A .pcd file is a list of (x,y,z) cartesian coordinates along with intensity values, it’s a single snapshot of the environment, so after a single scan. That means with a VLP 64 lidar, a pcd file would have around 256,000 (x,y,z,i) values.

PCD of a city block with parked cars, and a passing van. Intensity values are being shown as different colors. The big black spot is where the car with the lidar sensor is located.

The coordinate system for point cloud data is the same as the car’s local coordinate system. In this coordinate system the x axis is pointing towards the front of the car, and the y axis is pointing to the left of the car. Also since this coordinate system is right-handed the z axis points up above the car

Pointcloud Tool

The tools engineers use depends obviously on the engineers. There are tools that are proprietary to each company or organization that have been developed over time. Ours come originally from working with the stereo cameras. There’s also a very well-known library called a point cloud library, that deals with the main things are really segmentation, and separation of the ground plane, and things like that. Those kinds of tools where you do segmentation of the point cloud to get the images out of all the objects out of the point cloud, clustering segmentation, those things. There’s also an open CV, are tools to work with point clouds.

In this module you will be working on processing point cloud data to find obstacles. All the code will be done in a C++ environment, so some familiarity with C++ will definitely be helpful. PCL is an open source C++ library for working with point clouds. You will be using it to visualize data, render shapes, and become familiar with some of its built in processing functions. Some documentation for PCL can be found here.

PCL is widely used in the robotics community for working with point cloud data, and there are many tutorials available online for using it. There are a lot of built in functions in PCL that can help to detect obstacles. Built in PCL functions that will be used later in this module are Segmentation, Extraction, and Clustering.

Comment  Read more