[Daily Contents] 모빌리티 명세서 읽는 법
스마트홈
시스템 아키텍쳐
- ssafybridge : 내가 통신할 것(controller, perceptron…)과 simulator의 다리 역할을 해 주는 것.
스켈레톤 프로젝트 실행 예시
-
ROS 메세지 통신 노드 실행(Req 1 : 기능명세 1번) $ ros2 run sub1 publisher -> ter 1 $ ros2 run sub1 subscriber -> ter 2 // 하나의 터미널에서는 하나의 노드밖에 실행되지 않기 때문에 반드시 각각 실행시켜야 함. // *.bef 파일도 각각 실행시켜야 함.
-
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
-
perception(Req 3)
터틀봇에 카메라 장착 후 perception 노드 실행. -
Hand control(Req 4)
Custom Map에서 Custom Object를 배치 후 Hand control 노드를 실행. -
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에는 메세지가 있다.
- gos_parser.py : GPS 센서에서 시뮬레이터 데이터를 코드로 받아옴.
- gosimu_parser.py : GPS 데이터와 IMU 데이터를 받아옴. ROS data를 통해서 /Odometry 를 만듬.
- tf_pub.py : /Odometry를 받음.
- path_maker.py : /Odometry를 받고 Data Read를 함.
- 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가 된다.
실행 결과
- Sensor 메세지 GPS - parser ter 1. ROS Bridge 실행 ter 2. GPS_parser 실행(simulator에서 GPS 연결)
- Sensor 메세지 GPSIMU - parser IMU 센서를 연결하여 GPSIMU 데이터 파싱해서 뿌림. 시뮬레이터에 적용하여 사용하기 위해서는 UTM 변환된 GPS 값에 오프셋 값을 빼 주어야 함. 시뮬레이터의 좌표계 영점을 맞추기 위해(원점을 맞추기 위해) 오프셋 적용. Real World와 simulator의 좌표가 동일하게 됨.
- Ego 상태 TF 브로드캐스팅 기본적으로 TF 기능 제공, 직접 만들어보는 것이 목적이므로 사용하지 않음. ter 3. rgt 실행
- MGeo : 좌표계 연습
Q&A
Q. 런쳐 화면에서 패키지 리스트를 확인해 보면 현재 가능한 차량, 맵 이외에도 더 많은 것들이 존재하는데 사용 가능한지 여쭤보고 싶다.
A. 여러 알고리즘을 적용하는데 적합한 맵이 있기에 처음 시도할 때는 그것을 활용하는 것이 좋다.
Q. loss를 활용하는데 loss2를 활용해서 window 환경으로 가져와서 실행할 수 있을지.
A. 할 수는 있는데 난이도가 높음.
Q. 다익스트라에서 노드 사이의 거리를 비용을 설정하는 것으로 했는데 교통체증을 구현하기 위해서 코스트 실시간으로 변경하는 것이 가능할지.
A. 교통 흐름을 생성하는 것 가능. 시물레이터에서 스폰 포인트 생성하여 차량을 물리적으로 만들 수도 있음. 알고리즘에서 사용하는 파라미터들도 바꿔가며 테스트해 보길.
댓글남기기