[Daily Contents] 모빌리티 명세서 읽는 법


스마트홈

시스템 아키텍쳐

  • ssafybridge : 내가 통신할 것(controller, perceptron…)과 simulator의 다리 역할을 해 주는 것.

스켈레톤 프로젝트 실행 예시

  1. ROS 메세지 통신 노드 실행(Req 1 : 기능명세 1번) $ ros2 run sub1 publisher -> ter 1 $ ros2 run sub1 subscriber -> ter 2 // 하나의 터미널에서는 하나의 노드밖에 실행되지 않기 때문에 반드시 각각 실행시켜야 함. // *.bef 파일도 각각 실행시켜야 함.

  2. controller(Req 2 : 기능명세 2번) 터틀봇 움직이기 : q 버튼을 눌러 AutoMode로 변경하면 터틀봇이 움직인다. $ ros2 run sub1 controller

센서 설정
Sensor IP : 127.0.0.1
DST IP : 127.0.0.1
IMU : 9091 / 9092
Lidar : 9093 / 9094
Camera : 1231 / 1232

  1. perception(Req 3)
    터틀봇에 카메라 장착 후 perception 노드 실행.

  2. Hand control(Req 4)
    Custom Map에서 Custom Object를 배치 후 Hand control 노드를 실행.

  3. Odmetry를 이용한 상대경로 생성 및 경로 추종(Req 5)
    IMU 센서 추가 세팅 후 odem 노드 실행.

Q. 로봇의 크기 변경 가능한가?
A. 불가능.

자율주행

1부

RPS <-> Simulator

2부

인지(판단, 제어)
인지 데이터는 Simulator에서 정답값으로 제공

3부

사용자가 알고리즘으로 인지 단계를 구현

목표

위치인식, 정밀도로, 경로계획
경로 계획 -> 경로 제작 -> 경로 추정

개발 환경 구성

Windows[Ubuntu(VM), (MORAL Sim]
Ubuntu 내의 ROS로 MORAL Sim과 연결

  • MORAL Sim에서 GPS, IMU 센서를 받는다.
  • Ego Status, Object Status, Traffic Status에는 메세지가 있다.
  1. gos_parser.py : GPS 센서에서 시뮬레이터 데이터를 코드로 받아옴.
  2. gosimu_parser.py : GPS 데이터와 IMU 데이터를 받아옴. ROS data를 통해서 /Odometry 를 만듬.
  3. tf_pub.py : /Odometry를 받음.
  4. path_maker.py : /Odometry를 받고 Data Read를 함.
  5. global_path_pub.py, local_path_pub.py, mgeo.py, mgeo_pub.py… 계속 이어짐.

velodity_planning.py, pid_control.py, pure_pursuit.py 가 번갈아 가며 고도화 하여 advanced_purepursuit.py가 되고, 그것을 다시 고도화하여 acc.py가 된다.

실행 결과

  1. Sensor 메세지 GPS - parser ter 1. ROS Bridge 실행 ter 2. GPS_parser 실행(simulator에서 GPS 연결)
  2. Sensor 메세지 GPSIMU - parser IMU 센서를 연결하여 GPSIMU 데이터 파싱해서 뿌림. 시뮬레이터에 적용하여 사용하기 위해서는 UTM 변환된 GPS 값에 오프셋 값을 빼 주어야 함. 시뮬레이터의 좌표계 영점을 맞추기 위해(원점을 맞추기 위해) 오프셋 적용. Real World와 simulator의 좌표가 동일하게 됨.
  3. Ego 상태 TF 브로드캐스팅 기본적으로 TF 기능 제공, 직접 만들어보는 것이 목적이므로 사용하지 않음. ter 3. rgt 실행
  4. MGeo : 좌표계 연습

Q&A

Q. 런쳐 화면에서 패키지 리스트를 확인해 보면 현재 가능한 차량, 맵 이외에도 더 많은 것들이 존재하는데 사용 가능한지 여쭤보고 싶다.
A. 여러 알고리즘을 적용하는데 적합한 맵이 있기에 처음 시도할 때는 그것을 활용하는 것이 좋다.
Q. loss를 활용하는데 loss2를 활용해서 window 환경으로 가져와서 실행할 수 있을지.
A. 할 수는 있는데 난이도가 높음.
Q. 다익스트라에서 노드 사이의 거리를 비용을 설정하는 것으로 했는데 교통체증을 구현하기 위해서 코스트 실시간으로 변경하는 것이 가능할지.
A. 교통 흐름을 생성하는 것 가능. 시물레이터에서 스폰 포인트 생성하여 차량을 물리적으로 만들 수도 있음. 알고리즘에서 사용하는 파라미터들도 바꿔가며 테스트해 보길.

댓글남기기