제 9회 오픈로보틱스 세미나에 참석하였습니다. (+로보티즈 탐방 및 기타)
제9회 오픈 로보틱스 세미나 안내 : 네이버 카페 (naver.com)
이 바닥에 입문한지 이제 반년쯤 지나갑니다.
지금의 반년이 제 인생에서 가장 알찬 일들로 채워지고 있는 것 같습니다.
블로그 운영 시작, 부트캠프, 로보월드 탐방, 해커톤 혹은 대회 참여, H-Mobility 자율주행부분 수강, LG Aimers 수료 등등
이 모든게 6개월 동안 일어난 일이라는게 믿어지지 않습니다.
최근들어 ROS 프로젝트를 시작하고나서 ROS를 딥하게 들어가보고 있고,
여러 딥러닝 오픈소스나 논문도 읽어보고 있습니다. 그리고
부트캠프 분들의 추천으로 최근 새로운 오픈 채팅방도 들어갔습니다.
그래서 여러모로 할 수 있는 것이 엄청나게 많아졌고, 그만큼 배워야할 것도 엄청나게 늘어났습니다.
여튼 그래서 이 혼란스러움에 더 혼란스러움?을 알게해준
오픈 로보틱스 세미나를 다녀온 후기와 발표 내용 소개를 적고자 합니다.
오픈 로보틱스 세미나는
ROS 2로 시작하는 로봇 프로그래밍 - YES24
이 책의 저자이시자, 현재 로보티즈에서 근무하고 계시는 표윤석 작가님, 박사님, ~~님께서
운영하고 계신 카페 오픈로보틱스카페 (약칭 : 오로카) 에서 매년 개최하던 세미나로
ROS에 관심있는 사람들이 모여 강연도 하고, 정보도 나눔하는 그런 행사입니다.
이 책은 거의 바이블로 통합니다.
(저는 아직 안 읽었습니다만 이번달안으로..)
제9회 오픈 로보틱스 세미나 안내 : 네이버 카페 (naver.com)
세미나를 신청할때도 1분 30초만에 마감될 정도로 경쟁이 치열했습니다.
저는 처음부터 수강신청하는 마음으로 네이비즘도 켜고, 12시가 땡하자마자 신청을 해서 성공했습니다.
대기자분들도 300명이나 있었기 때문에 노쇼를 하지 말아달라는 부탁의 메일을 받게 되었고,
당연히 노쇼 없이 참석을 했습니다.
로보티즈 구경
마곡나루역에서 내리고 로보티즈 사옥으로 걸어가는 길
실외 자율 주행 로봇이 실증 테스트가 되고 있다는 현수막부터 설레이기 시작합니다.
로봇으로치면 대기업급의 회사에 와있다니 참 신기했습니다.
세미나는 로보티즈 1층에서 진행되었고, 세미나 때문인지
1층에는 로보티즈의 여러 로봇들이 전시되어 있는 것을 볼 수 있었습니다.
로보티즈의 일개미 배송로봇
로보티즈의 터틀봇3 와플
여러 로봇과
로봇팔과 휴머노이드
그리고 이걸 다이나믹셀이라고 부르는건지 모르겠습니다만
다이나믹셀이라면 로보티즈의 자랑이라고 예전에 자율주행 직무설명회에서 들었던 것 같습니다.
로봇팔도 구경하고
굉장히 귀여운 이미지 ㅋㅋ
그리고 이게 제가 아는게 맞다면,
한양대학교 한재권 교수님께서 로보티즈의 연구원으로 계실때, 만든 재난구조 로봇으로 알고 있습니다.
부트캠프 첫날 한재권 교수님께서 강연을 해주셔서 들은 적이 있는데, 설마설마 했는데, 맞더라구요.
그리고 중고장터도 있었고
그리고 발표에서도 등장하지만
오르카 카페의 제시카 동아리에서 만드신 로봇도 한쪽에 전시가 되어 있었습니다.
저는 무료나눔하시는 책과 스티커를 가져왔(?) 습니다.
다들 아키텍쳐에 대한 내용은 관심이 없으셨나 봅니다. 책 이름은 "개발자에서 아키텍트로"입니다.
그리고 행사의 경품.. (제껀 없습니다)
발표
그래서 어떤 내용의 발표가 있었는지 적어보자면,
저는 개인 공부용으로 작성하기 때문에 내용이 너무 과하거나 빈약하거나할 수 있으니 후에
오르카에서 1~2주 후에 표윤석 박사님께서 영상과 발표자료를 올려주신다고 하니 참고하시면 좋을 것 같습니다.
제가 적은건 그냥 참고용으로만 보시면 좋을 것 같습니다.
제가 듣기에 난이도가 많이 높다는 생각이 들었던 강의는 내용이 빈약할 수 있습니다.
또한 발표를 듣고 오직 기억력에 의존해서 정리한 정보의 글이기 때문에
실제 발표에서 없었던 내용이 들어가 있을 수도 있습니다.
그리고 카페에는 발표자분의 성함이 나와있지만, 저는 개인 블로그이기 때문에 기업이름과 성만 적도록 하겠습니다.
제9회 오픈 로보틱스 세미나 안내 : 네이버 카페 (naver.com)
이번 세미나의 주제는 ROS라는 개발 툴에 대한 이야기입니다.
그래서 여러가지로 도움이 정말 많이 되었습니다.
그래서 발표들을 소개해드리겠습니다.
1. 기간시설에서의 로봇응용 (삼성전자 장ㅇㅇ님)
기간시설이란 공장의 생산시설이나 물류창고 등을 말합니다.
이 곳에서의 업무는 설치와 점검 공급 그리고 유지/보수이며, 설치는 1회성이라고 볼 수 있지만, 점검 공급 그리고 유지/보수는 계속 진행되어야합니다.
이런 곳에서 무인화를 위해 로봇을 사용하는 추세이지만 로봇을 사용하다가 사고를 한 번 이라도 치면, 대형사고이기 때문에 작업의 완성도와 민감성이 굉장히 중요합니다.
로봇을 개발하는 과정에서 로봇의 서비스를 제공하는 데에 개발자가 직접 현장에서 작업을 진행해보면서 로봇에 적용할 것을 찾아야합니다. 주로 업무는 주공아파트 3개의 규모의 단지에서 진행되는데, 이런 단지에서 각각 원하는 니즈가 모두 다릅니다.
ROS는 어디서 쓰일까? 산업기반이다 보니 PLC(전기기사), OS 등등 각자의 플렛폼이 있어서 소통이 어려운데, 이럴 때 ROS로 진행합시다 라고 하면 손쉽게 소통을 할 수 있다.
ROS는 무료이고, 오픈소스이며 분산처리지향통신프레임워크(한기능이 죽어도 다른 기능이 살아있는), 다양한 SW존재하고, 유지보수를 공짜로 해주기 때문에 좋다고 생각
발표자분의 현재의 도전
ChatGPT : 다양한 로봇이 사용되는 만큼 센서도 많은데, dependency(의존성)문제가 있다. 그때마다 코드를 새로 짜기에는 문제가 있다. 근데 chatGPT에 넣으면 다 짜줘서 활용하고자 한다.
WSL : 같이 일하는 사람들에게 윈도우 밀고 우분투 깔자고 하면 난리가 난다. 그러니 윈도우에서 돌아가는 환경으로 구축해주자
SIL : 시뮬레이션과 관련된 부분
발표자분이 생각하는 현재 산업현장의 과제
- 좁은 실내 어딘가에 날려보내고 싶다 (드론)
- 빨리 하지만 잘피해서 보내고 싶다.
- 알아서 뭔가를 하게 하고 싶다. (일일히 티칭을 하는 구조)
- 알아서 잘들 돌아다니게 하고 싶다 (멀티로봇 패스플레닝)
2. 산업현장에서 ROS로 문제를 어떻게 해결하고 있는가? (시스콘 대표님)
시스콘이란 회사는 급성장하고 있는 회사로 자율주행로봇(AMR, AGV) 전문기업이며 현재 AMR을 공급하고 있는 회사이다.
(사실 로보월드에서 한 번 본적이 있는 회사로, 가고 싶다라는 인상을 받았었습니다)
시스콘의 솔루션
다양한 로봇 자동화 환경을 수용하는 것이 가장 중요한 Keyfactor
자사 고유의 AMR/AGV 핵심기술이 기반되어야 시장의 요구 수용
AMR/AGV 로봇 기반 Smart Factory 및 물류창고 자동화 전 주기에 걸친 토탈 솔루션 제공
솔루션 아키텍처
1. 시스템 설계 및 컨설팅 : 로봇 자동화 요구 분석 및 설계 , 레이아웃, 시나리오
2. 토탈 솔루션 제공 : AMR, AGV 로봇, 로봇관제시스템, 시뮬레이션
3. 시스템 구축 : 현장에 시스템 구축, 현장의 변화 수용, 시운전 및 양산 대응
4. 유지보수 : 자체 전문인력을 통한 체계적인 유지보수, 부품확보, 신속정확장애지원, 국내외 사이트 원격지원
시스콘 회사의 조직구성
(이미지)
(의외로 로봇 관제 시스템에 대한 기업들의 수요가 엄청나게 많다는 점이 신기했다... 근데 인터넷에 자료는 너무 적어)
시스콘이 생각하는 AMR의 핵심기능
- 산업현장에서 AMR은 독립적으로 일을 하면 안된다. 항상 공장의 내부 설비들과 서로 상호작용 하는 것에 의미가 있다.
- 고객의 모든 니즈를 맞추기 위해 어떤 기능이라도 빠뜨리면 안된다.
- 저상형 로봇의 수요가 높다
- 관제시스템으로 설비와 서로 연결되어야한다. 그래서 모니터링, visualization, 교통흐름제어를 해야한다.
- 도킬 다양한 마커 인식 기술, 정밀 도킹 제어 기술
- 사이클 타임과 세이프티가 중요하다.
- 공장쪽은 시장이 좋고, 유통은 조금 열악한 환경이다.
(관제시스템)
주행시스템과 ROS
- 주행시스템에 대한 산업현장에서 요구사항으로
1. 산업현장은 보수적이며, 예측가능하고 통제가능해야한다. (AMR은 AGV의 특성도 포함해야한다.) (AMR은 환경에 유연해야한다)
2. 산업 현장은 설비를 중심으로 레이아웃이 구성되어 있다. (운반 업무인 주행 뿐만 아니라 도킹 및 설비와의 통신이 중요, 관제와의 인터페이스 및 로봇의 TASK 스케즐링이 필요하다.)
ROS2 Features에서 3가지로 볼 수 있다.
Behavior Tree와 Infra Process 그리고 Executor
Behavior Tree
Infra Process
Executor
앞으로 시스콘의 목표 (기술고도화)
- 리눅스, 통신, 임베디드 PC 개발
- 다양한 모델(차동구조, 스티어링, 쿼드타입, 트레일러 , 하이브리드 모델) 제어 모델링
- 모델기반 실시간 경로 생성
- 최적제어기반 경로 생성
- 라이다 및 카메라를 이용한 장애물 인식 추종
- 센서 필터링 및 퓨전 연구
- ROS2 시스템 구축 및 migration
- 멀티 로봇 관제 시스템 기술개발
3. 휴림로봇(주)의 ROS 활용사례 및 개발 스토리 (휴림로봇 및 오르카 닉네임 "수호아빠"님)
개발자로 일을 하시다가, ROS를 해보라는 상사분의 지시에 ROS를 배우기 시작하셨다고 합니다. 굉장히 재미있는 강연이였으며, ROS를 배우고 있는 나도 공감이 되는 그런 강연이였습니다.
휴림로봇의 로봇은 TETRA라는 로봇이라고 합니다. 발표자분께서 오픈소스로 공개를 해놓으셨다는 이야기를 하셨습니다.
카페활동이 정말 많은 도움이 되었다고 말씀해주셨습니다. / 그리고 개발만 하지말고 모든 플로우를 볼 수 있는 사람이 되자는 말을 남기셨습니다.
4. SLAM Meets Open-Source : Robotice 학계에서의 ROS 활용 및 Open Source 시 팁 공유 (카이스트 Urban Robotics Lab 박사님)
ROS에서 OpenSource로 공개해야하는지에 대한 고찰로 발표를 한 줄로 요약하면 : 공개해!
Urban Robotics Lab. @ KAIST (github.com)
Visual SLAM도 신기해서 한장 남겨놓았다.
강연자 분께서 말씀하시는 코드를 오픈해야하는 이유는 다음과 같다
- 남에게 보여주어야하고, 유지보수를 하는 상황에서 코드의 실력이 늘어난다
- 논문을 많이 써내야하는 한국의 대학원 구조상 질보다는 양이다. 그러므로 코드를 공개함으로써 나의 논문을 인용하게 만들자.
(항상 CMake 하는 과정이 뭘까 궁금했는데, 설명을 해주셔서 사진을 찍었던 것 같다. )
알고리즘의 dependency를 줄이자. 코어알고리즘은 C++와 python으로 짜고 하나의 레포지토리에서 다양한 걸 할 수 있게 하는게 좋을 듯하다고함.
만약 개인보다는 Organization 으로 만드는게 좀더 알고리즘에 추천받기 좋다.
점심을 후원해주신 Floatic도 발표에 참여를 하셨습니다.
5. ROS Making and Education (오르카 제시카팀)
오르카 카페의 제시카 동아리 분들께서 만드신 작품들을 소개하시는 자리였습니다.
어떤 분들일까 발표를 보고 있으니, 정말 대단하신 분들이셨습니다. 한 분은 아래 블로그를 운영하고 계신 분은
https://m.blog.naver.com/PostList.naver?blogId=zeta0807
맨땅에 헤딩하듯이 ROS를 하면서 만든 작품들과 도전을 소개해주는 발표를 해주셨습니다.
한 분은 아두이노맘이라는 분으로 유명하신 분이셨고, 엔비디아로 부터 아시아 최초 젯슨나노 엠버서디로 선정되어 공식 유튜브에 출연하신 분이셨습니다.
Inspiring the Next-Generation Robotics Pioneers with AI - YouTube
제가 적어온 것에는 robotArm 에 Moveit이라는 오픈소스가 자주 쓰이니 알아보자는 이야기와 Rviz 파라미터에 대한 의미알기
Automatic Addison Blog 도 좋다고 하셨습니다. 무엇보다도 이 분들의 공부와 연구가 저에게도 많은 도움이 될 것으로 보입니다.
노션과 깃의 코드를 리뷰하면서 공부를 해야겠습니다.
6. ROS 2에 기반한 실외 자율주행 로봇 소프트웨어 (로보티즈)
일개미는 총 3가지 버전이 있고, 첫 번째 일개미는 모든 기능이 구현되어 비싼 친구, 두 번째는 저렴한 버전, 세 번째는 상용화 버전이라고 합니다. 그래서 현재 가평 마이다스 리조트에서 사용되고 있다고 합니다.
설명 중심보다는 현재 일개미라는 친구가 어떻게 구성되어 있는지 영상과 이미지를 통해 설명해주시는 발표였습니다.
다음은 가평 마이다스 리조트에서 로봇이 사용되는 모습을 영상으로 보여주신 것을 찍은 사진입니다.
일개미의 구성은 아래 사진과 같습니다.
일개미의 구성과 특징에 대한 이야기로 작동 방식에 대한 간략한 구성입니다.
모바일앱과 Fleet management system에서 명령을 내리면
IMU/GNSS와 9개의 카메라로 Localization 을 진행하고, 이 두 정보로 현재의 위치를 추정합니다.(Visual Inertial Odometry)
Localization과 Global Map을 비교하여 Navigation을 진행합니다. 그래서 path planing을 한 이후에 바퀴를 움직이게 됩니다.
로보티즈의 실내자율주행로봇 소프트웨어 로봇 첼린지는 3가지 첼린지가 있었다.
1. 다양한 데이터를 실시간으로 처리해야한다.
2. 지구 어디상에서든 로봇을 관제하는 시스템이 필요하다.
3. 365일 24시간 최상의 서비스를 제공해야한다. (유지관리)
이를 해결하기 위해 사용했던 기술들을 간략하게 소개해드리면
IPC : 간단히 설명해서 포인터 같은 개념이라고 합니다. 그래서 최대한 메모리 낭비를 줄이는 느낌입니다. 높은 용량의 이미지를 전송해도 레이턴시가 적고, 중요한건 저 코드 두줄만 넣으면 활성된다.
그래서 적은 리소스로 이미지들을 통신할 수 있게된다.
2번째 첼린지를 위해서는 인터넷만 연결되면 로봇을 컨트롤할 수 있게 관제시스템을 넣어야 했다.
그래서 WebRTC를 기반으로 해서 개발을 했다.
로봇으로 부터 나오는 데이터를 실시간으로 볼 수 있는 관제시스템을 만들고, 발생한 문제들을 DB에 저장을 했다.
365일 24시간 문제없는 서비스를 위해서는 ROS의 Lifecycle management를 사용하는게 좋다고 합니다.
FSM 같은 느낌으로 생각되며, 로봇의 한 사이클을 어떻게 할 것인가에 대한 이야기입니다.
강사님께서도 엄청나게 중요하게 강조하시는 부분이기도 합니다.
lifecycle manager 어떻게 가 작동하는지 보여줍니다. 항상 작동되어야하는 노드와 필요할때만 활성화되어야하는 노드를 분리해서 진행 한다고 합니다. 그래서 호율적으로 시스템을 리커버리하는
그래서 로보티즈의 발표를 요약하자면
1. 다양한 센서로부터 전달되는 수 많은 데이터의 노드간 실시간 통신
- 9개의 카메라로부터 전달되는 이미지들
- 실시간으로 생성되는 Collision 및 segmentation 정보들이 포함된 Local map 정보
- 전방위를 커버하는 이미지 상에서의 Object detection 결과
- 중요한 기술은 Intra-process communication
2. 실시간으로 배송 상태를 확인 및 제어하기 위한 관제 시스템
- 수많은 카메라 및 자율 주행 알고리즘이 제공하는 이미지 및 데이터의 실시간 전송 및 시각화
- 중요한 기술은 WebRTC를 기반으로한 ROS2 message communication
3. 356일, 24시간 최상의 상태를 유지할 수 있는 자율주행 소프트웨어
- 배송 주문을 대기하고 있는 상황에서 필요한 시스템만을 활성화
- 예외 상황 발생 시 시스템 혹은 파일럿이 개입하여 문제되는 시스템만을 초기화 및 재설정 후 임무 복귀
- 중요한 기술은 Lifecycle node을 사용한 Node management
여기에 등장한 일개미의 구성 및 특징은 우리 프로젝트에서 응용해도 좋을 것 같다는 생각을 합니다.
7. Micro-ROS의 어꺠 위에 올라서서 로봇을 바라보기 (플로틱 ㅇㅇㅇ님)
"사람이 잘하는건 사람이 , 로봇이 잘하는 건 로봇이" 플로틱은 물류로봇 관련 혹은 물류 시스템에 대한 관제시스템을 개발하는 회사입니다. 여기 회사가 점심을 지원해주셨습니다. (Watt와 함께)
임베디드 시스템에서 Micro-ROS의 장점을 설명해주시는 발표입니다.
우선 임베디드 시스템이라고 한다면 전력 소모량이 적고, 전력도 적게 먹고, 실시간 처리를 지원하며 이를 통해 액추에이터 및 센서 하드웨어를 제어할 수 있다는 장점이 있습니다.
그래서 임베디드 시스템에서는 다음과 같은 4가지 설계가 중요합니다. 회로설계, 시스템 디자인, 제어 시스템, 통신 시스템 설계
그래서 이번 발표의 키워드는 MCU와 PC와 통신을 어떻게 해야할까?
Transport 는 전기선과 포트를 의미합니다. 여기에서 Protocol을 통해서 임베디드 시스템과 정보를 공유합니다. 이때 사용되는 Protocol은 modbus, CANopen, EtherCAT, MQTT 가 있습니다. 이러한 정보가 NODE로 향합니다.
그러면 이러한 과정을 ROS한테 맡기면 어떻게 될까요? Micro ROS가 가지는 장점은 다음과 같습니다.
1. rclc 를 활용한 ROS 개념 흡수
2. 노드화를 통한 ROS2 연결
3. Micro XRCE-DDS
4. QoS
그래서 Micro-ROS의 subscription예제를 하나 보여주셨습니다.
이 예제에 대한 사진은 나중에 시간이 난다면 정리하도록 하겠습니다.
그래서 micro-ROS와 rosserial과의 비교입니다.
그리고 micro-ROS에 대한 정보는 다음의 주소에서 찾을 수 있습니다.
마지막으로 이를 요약해주시면서 발표가 마루리 되었습니다.
8. 게임엔진과 ROS2 시뮬레이션 (LG전자 ㅇㅇㅇ님)
회사와는 상관없이 개인적으로 한 사이트 프로젝트를 소개해주시는 부분이였습니다.
개인적으로 나중에 꼭 따라해보고 싶다는 생각이 들었던 강연이였습니다.
로봇을 시뮬레이션 하는 이유는 빠른 개발과 비용절약 그리고 SW퀄리티 향상을 위해서이다. 이런 시뮬레이션으로는 가제보, Webots, CoppeliaSim 이 있고, 자신에게 맞는 것을 쓰는게 좋다.
문제는 자율주행의 vision을 트레이닝 하거나 테스트할 수 있는 그래픽을 만들 수 없다. 이를 sim2Real gap이라고 하고, 시뮬레이션과 현실의 차이를 줄이는 방법으로 게임엔진이 떠오르고 있다.
게임엔진은 높은 시각 충실도와 물리엔진, 실시간 렌더링/광선 추적 기능/가상 환경 제작용 3D 에셋을 제공하고 있다.
그래서 언리얼엔진은 게임엔진이 아니라 이제 실시간 3D 창작툴이라 부른다 특징으로는
nanite : Virtualized Micropolygon Geometry
폴리건이 많을 수록 정교해지는데, 많을 수록 컴퓨팅 파워가 증가함.
아티스트가 폴리건을 만들면 개발자는 그냥 들고와서 합치면됨
Lumen (Dynamic global illumination and reflections)
빛을 계산하는게 게임에서 가장 중요한데 컴퓨팅 파워가 많이 필요함 그걸 다 계산해준다. 그러니 개발자 입장에서는 그냥 빛을 배치만 하면 끝임 (딥러닝 기반에서 사용하기 편해짐)
Quixel - Megascan (Photorealistic 3D scanned assets)
에셋과 텍스처를 제공하고 있다. 언리얼에서는 무료입니다.
언리얼 엔진에서 ROS2 사용하기 (라이브러리 사용법)
eCAL 로 ROS2와 연결할 수 있는데, 도저히 어렵다.. 개인으로 하기는 너무 빡셈 만들어도 유지보수가 어려우니
rclUE 이라는 라이브러리가 나왔는데 이거를 사용하면된다.
우분투 22.04를 추천합니다.
모두의 연구소 커뮤니티 Metabotics 소개 언리얼 엔진으로 로보틱스 스터디 같은거 관심있으면 알려주세요
발표자분의 결과물은 다음과 같으며 실행방법도 알려주셨는데, 나중에 한 번 돌려보는 글을 작성해보고 싶다.
9. 로보틱스를 위한 아주 쉬운 엔비디아 Isaac 활용법 (엔비디아 ㅇㅇㅇ님)
내가 Isaac이 뭔지 모르고, 내용도 많이 어려워서 그런지 그래서 집중을 못한 강연이 되어버렸다.
기억에 나는 것은 GTC라는 컨퍼런스가 3월 말에 열리니 신청하고 들어 주세요.
세계 최고의 AI 개발자 컨퍼런스 | GTC 2023 | NVIDIA
Isaac은 시뮬레이션 툴이라고 하시는데, 아는 사람들만 재미나게 들었던 강의 같은 느낌..
강연이 좋지않았다는 것이 아니라, 내가 무지해서 이해를 못했다...
10. PX4-ROS2 기반 군집 드론 정찰 시스템 소개 (한국기술교육대학교 문성태 교수님)
강연자님(교수님)은 국방과학연구소에서 한국형 헬리콥터를 연구개발하시던 분으로 국가보안기술연구소 한국항공우주연구원에서 군집드론을 연구하고 계신다고 합니다.
교수님께서는 위를 군집드론쇼라고 표현을 하셨습니다. 이를 성공시키고, 현재는 이를 사회 안전망 분야까지 발전시키는걸 목표로 연구를 진행하고 계신다고 하셨습니다.
초반에 수백대의 드론으로 군집비행을 할때 통신이 문제였다고 합니다. 각각의 드론에게 시나리오 정보를 심어놓고, 드론을 모두 띄운 후에 동기화를 진행하는 방식으로 통신시에 드론의 개수와 무관하게 통신량이 동일해지게 만들었다고 합니다.
하지만 이러한 시나리오식은 드론을 내가 엑티브하게 제어할 수 없다는 단점이 있습니다. 그래서 이때 드론 내부에 두대의 컴퓨터를 넣어서 해결한다고 합니다. 한대는 PX4라는 프로그램을, 한대는 ROS2
PX4와 ROS2를 기반한 군집드론 정찰시스템 소개를 해주자면 이미 제작된 드론의 경우 동일 주파수를 사용해 군집주행이 불가능하다고 합니다. (음파로 고도를 측정하고 있다.) 그 문제를 해결하기 위해서는 이미 제작된 드론을 해킹하는 것... SONAR라는 데이터를 삭제하고 다른 데이터를 넣게 수정하여 군집드론을 실현시켰다고 합니다.
PX4는 하드웨어부터 소프트웨어까지 오픈소스입니다. 거기서 정보를 주고 받는 방식을 uORB : 디자인패턴에 publisher 와 subscriber (센서정보를 받아서 자세정보를 추정하는 것) 라고 합니다.
근데, 이걸 다르게 생각하면 ROS에서 일어나고 있는 일입니다. 그래서 둘이 동일한 철학을 가지고 있었고, PX4도 이를 염두해두고 제작을 했다고 합니다. 그래서 PX4와 ROS의 연동을 쉽게 할 수 있었다고 합니다.
PX4는 제어는 잘하는데, 임무와 관련된 부분은 별로라서. ROS의 환경을 가져와 코드의 재사용을 늘렸다고 합니다.
그래서 기능이 서로 서로간에 분리가 되어있습니다. PX4는 비행제어를 주로 담당하고, ROS 는 영상정합, 객체탐지, 자율탐지를 담당합니다. PX4의 특징으로는 쉐어드 메모리이기 때문에 노드간의 실시간성을 보장하는 것이고, ROS는 네트워크 사용으로 서로 다른 컴퓨터를 하나의 컴퓨터 처럼 사용가능합니다.
통신같은 경우에는 PX4의 토픽은 MAVLink(이걸타야 밖으로 나갈 수 있다) -> NAVROS라는 프로토콜 -> ROS 에서 메시지 ->MAVLink 방식으로 진행됩니다.
여기서 발생하는 지연적문제는 ROS2가 나오면서 해결되었습니니다. ROS2는 분산네트워크 시스템 + DDS로 수행으로 이덕분에 성능이 많이 올라갔습니다.
ROS2에서는 PX4의 topic이 MAVLink를 거치지 않고 XRCE-DDS 를 통해 밖으로 나간다. MAVLink를 통하기 때문에 많은 데이터를 밖으로 보낼 수 있게 되었습니다.
그러나 여전히 ROS에서 나갈때는MAVLink 타야거쳐가야 합니다. 그래서 현재 교수님의 목표는 MC에서 ROS메시지로 외부와 통신할 수 있게 개발중이라고 합니다.
swarm flight in the simulation 시뮬레이션은 잘되는데, 실제는 어려움이 너무 크다. 그래서 이 문제가 뭘까하니 ROS1은 마스터가 존재했는데 ROS2에서는 마스터가 없다고 합니다. 그래서 Fast DDS라는 것에서 Discovery Server 를 사용한다고 합니다 ROS1으로 돌아가는기법(?)
여튼 이와함께 영상자료도 정말 재미있었습니다.
11. AutoDrive : A ROS-basd Autonomous Driving S/W Platform for Robotaxi Services (소네트 ㅇㅇㅇ님)
디지스트에 있는 자율주행 전문 테크 스타트업 기업입니다. 4단계 자율주행을 연구하고 있는 회사입니다.
자율주행를 진행하면서 라이다 관련 일을 하는 회사라고 합니다.
자율주행의 각 레이어 단계에서 보여주시는 모습입니다.
글로벌 패스 플레닝 : 네비게이션 느낌 / 로컬 패스 플레닝 : 현 상황에 맞추는 느낌
오픈 아키텍쳐를 통해서 다른 회사와 협업을 하려고 합니다.
다음과 같은 자율주행자동차를 제작해서 실제로 도로를 주행하는데 성공했고, 현재는 코나 전기차를 이용해서 자율주행자동차를 제작했다고 합니다.
그리고 현재는 자율주행 택시를 대구에 납품했다고 합니다.
현재 비전은 카를라를 사용하는게 목표라고 하셨습니다.
저도 카를라는 한 번 설치해본 경험이 있습니다. 사양이 부족해서 포기했습니다.
12. ROS2 on Yocto 기반 로봇의 실증사례 공유 (엘지전자 ㅇㅇㅇ님)
강연이 어려웠기도 하고, 관심분야의 발표가 다음이여서 집중을 잘 하지 못했습니다.
Yocto 는 가장 작은 단위라고 합니다(최근에는 바뀐걸로 압니다) 그래서 소프트웨어의 기초부터 차근차근하자라는 개념이라고 하는데..
Yocto란? :: 아는 개발자 (selfish-developer.com)
아마 제가 Yocto가 뭔지 몰라서 그랬던 것이 아닐까 싶습니다. 나는 아직 멀었구나 라는 것을 느낀 발표였습니다.
13. 다수의 자율주행 로봇을 위한 교통관리 시스템 개발 (클로봇 로봇 미들웨어팀의 ㅇㅇㅇ님)
로봇 시장의 증가와 물류쪽에서도 로봇의 개수가 많아지는 추세입니다. 이러한 상황에서 여러대의 로봇이 움직이는 상황의 문제가 크다고 합니다. 주행로봇간의 교통 밀집 현상 및 교착 상황 발생하고, 다수의 로봇으로 인해 나타나는 교통의 혼잡도가 증가하고 있다.
발표 주제는 서비스 로봇을 위한 멀티로봇의 교통관리의 필요성입니다.
다음과 같은 사례처럼 로봇들의 교통관리가 필요한 경우입니다.
그리고 서비스 로봇은 사람의 규칙을 따라야하는 부분도 조금 풀어야하는 숙제입니다.
교통관리 방법으로는 크게 두가지가 있습니다.
중앙방식 : 로봇이 각자의 상태를 서버로 전송하고, 서버에서 상태정보를 이용해서 제어신호를 특정 로봇에게 신호를 보내는 방식
분산 방식 : 서버의 문제는 실시간성을 보장하지 못해서, 실시간성을 보장하기 위해 각자 알아서 정보를 받으면 어떤식으로 해라 라는 등의 방식
두가지 방식으로 연구를 진행하고 계신다고 합니다. 중앙방식에서 주로 사용되는 방식으로는 RMF라는 robot middleware Framework 가 있습니다.
RMF 기반으로 교통관리를 위한 인터페이스는 이렇게 생겼다라는 것을 설명해주셨습니다. (어려워요..)
노드에서 노드로 이동하는 것에서 충돌이 발생할 위험이 있거나, 우선순위를 부여해주고 우회경로를 넣어주는 패스 플레너
갑자기 수식이 나와서 놀랐는데, Mix Integer Programming 이라는 방법을 사용해서 path planner 모델을 만들었다고 합니다.
굉장히 수학적이고 복잡한 문제.. 우회경로를 만들어주고 우선순위를 골라주고 하는 것이 중요하다는 것을 보여주시는 것으로 보입니다.
이에 대한 내용은 클로봇에서 오픈소스로 공개를 해두었다고 합니다.
CLOBOT Co., Ltd (github.com)
CLOBOT-Co-Ltd/clober_rmf: multi-clober rmf packages (github.com)
여러가지가 있어서 공부하기 정말 좋은 자료들 인것 같습니다.
중앙방식으로 하려고 했는데, 교착상황에서 발생하는 문제들에 제한적으로 사용할 수 밖에 없어서 다음처럼 TMS Trafic Management System 이라는 프로그램을 제작중에 있다고 합니다.
방식은 여러가지가 있을 것인데, 교착상태에서는 양보를 해주는 위치로 교착을 해소하는 시퀀스를 만들거나, 센싱되지 않은 경우 멀리있어도 정보를 줄 수 있게 하여 회피할 수 있게 하거나, 같은 목적지에서 줄을 서거나, 엘레베이터와 연동하거나 등등의 기능이 들어가야할 상황 아직 개발중인 상황이라 중앙방식으로 시도를 하고 있는 상태
내부적으로는 ROS2를 활용해서 패키지를 만들어서 통신을 하고 있고 여러가지고 테스트 중이라고 합니다.
DDS를 활용한 방식을 보여주고 있습니다.
목표
중앙식분산식의 하이브리드통신을 통한 교통관리 방식 확장
교통관리 알고리즘 고도화 등
사실 Fleet Management에 관심이 있어서 주의깊게 강연을 들었습니다. 사실 강연이 시작되기 전에 표윤석 박사님께서는 로보티즈에서 Fleet Management를 연구하고 계셔서 어떻게 공부를 하면 좋을지에 대해서 여쩌보고 왔었습니다.
부트캠프의 강사님께서는 아직 뛰어들기 어려운 분야이고, 사람들마다 정의내린게 달라서 프로젝트에서도 일단은 깊게 들어가면 정말 어려워지니 로봇 두대만 서로를 장애물로 인식하게만 해도 잘한거다라고 말씀을 해주셨었습니다.
여튼 표윤석 박사님께서 강조하신건 전지적인 관점에서 로봇을 컨트롤하는 것이이고, 이에 대한 교통흐름제어(트렉픽제어)가 핵심이라고 말씀을 해주셨습니다.
중간중간에 Fleet Management 부분 채용을 한다는 내용에 서버관리자 라는 느낌의 직무도 있어서 이게 웹의 백엔드 같은 곳과 연관이 있는가? 여쭤보니 연관이 있다고 말씀을 해주셨고, 아무래도 관심이 있다면 그쪽도 공부를 더해야하는거 같습니다.
일단 인터넷에서 구할 수 있는 자료가 너무 없다. 공부를 시작하고 싶다면 우선 OpenRMF부터 공부를 해보면서 교통을 한 번 관제 해보면, 그 뒤에 눈이 뜨일 것이라고 말씀해주셨습니다.
여튼 키워드만 정리하자고 생각을 했는데, 글이 엄청나게 길어졌고 놓친 강의도 있는데
어떤 감정이였냐고 물어보면, 아직도 넘어야할 산이 많다라는 점이였습니다. (정상적인 반응이라고 합니다.)
좋은 프로그래머가 되기 위해서는 남의 발표를 주의깊게 들어보는 습관이 중요하다는 이야기를 많이 들었는데
그 이유를 알 수 있었던 것 같습니다.
추가적으로 앞으로는 지하철에서 강의를 계속 듣는 것 보다도
파이콘 한국 2022 (pycon.kr)
이벤터스 :: 행사와 함께하는 모든 순간 (event-us.kr)
이런 저런 사이트에서 다른 개발자들의 스토리를 들어보는 것도 좋은 경험이 되겠다는 것을 느꼈습니다.