코딩일지(2024-07-15)
파라미터 수정작업을 진행하고 있다.(1)
컴퓨터를 켜고 도커로 진입해서 오토웨어를 실행하는 작업은 다음과 같이 단순화시켰다.
# Docker 실행(1)
rocker --network=host -e RMW_IMPLEMENTATION=rmw_cyclonedds_cpp -e LIBGL_ALWAYS_SOFTWARE=1 --x11 --nvidia --volume /home/jacksmith/playground/auto-workspace/ -- 2c78ac889f9a
# Docker 실행(2)
docker run --network=host -e RMW_IMPLEMENTATION=rmw_cyclonedds_cpp -e LIBGL_ALWAYS_SOFTWARE=1 -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix --gpus all -v /home/jacksmith/playground/auto-workspace/:/home/jacksmith/playground/auto-workspace/ -it 2c78ac889f9a /bin/bash
# 마운트된 경로로 이동
cd /home/jacksmith/playground/auto-workspace/autoware
# setup파일 실행
source install/setup.bash
# ros2 실행
ros2 launch autoware_launch planning_simulator.launch.xml \
map_path:=/home/jacksmith/playground/auto-workspace/map/Kiapi \
vehicle_model:=sample_vehicle sensor_model:=sample_sensor_kit
ros2 launch autoware_launch planning_simulator.launch.xml \
map_path:=/home/jacksmith/playground/auto-workspace/map/target_map \
vehicle_model:=sample_vehicle sensor_model:=sample_sensor_kit
작업도중 아래와 같은 오류 발생
[component_container_mt-29] [motion_utils] calcLongitudinalOffsetToSegment: Failed to calculate longitudinal offset because the given segment index is out of the points size. Return NaN since no_throw option is enabled. The maintainer must check the code.
- 특정 세그먼트 인덱스가 포인트 크기를 초과,
calcLongitudinalOffsetToSegment
함수가 종단 오프셋을 계산할 수 없음을 나타내고 있음 no_throw
옵션이 활성화되어 예외를 던지지 아니하고 NaN을 반환함(By activatingno_throw
options, it’s not throwing exceptions but returns NaN)- 따라서 아래 절차를 따를 것(Therefore, u have to follow steps below)
- CodeCheck:
calcLongitudinalOffsetToSegment
함수를 호출하는 부분을 검토하여, 전달되는 세그먼트 인덱스와 포인트 크기를 확인한다고 함. 세그먼트 인덱스가 포인트 크기를 초과하지 않도록 함. - Debugging: 이슈를 발생시키는 입력 데이터 식별 후, 올바른 포인트 크기 및 세그먼트 인덱스를 사용하도록 디버깅해줄것
- InputValidationCheck: 함수 호출 전에 입력값의 유효성을 검사함. 세그먼트 인덱스가 포인트 크기를 초과하는지 확인후, 필요한 경우 오류 메시지를 출력하거나 디버깅 Log를 기록
순서>
2D Pose Estimate -> 2D Goal Pose -> Obstacle 배치 및 시나리오 설계
수정(1): avoidance.param.yaml
case1-1)
result>
resample_interval_for_planning 속성을 0.3에서 0.0으로 바꿔주었더니 예상된 경로에 장애물이 있을 경우 전혀 회피하지 못하는 것을 파악함.
※ rocker로 컨테이너를 최초로 접속한 터미널을 종료시켜버리면, 알아서 자동으로 컨테이너가 종료되는 것을 확인함. 이를 마스터 터미널로 보았을때, 서브 터미널에서는 연결했다가 접속을 끊어도 컨테이너가 종료되지 않는 모습을 보임.
※ Rviz가 켜지고 나서 estimate 버튼은 빠르게 활성화가 되지만 이후 실질적으로 pose버튼으로 세팅을 해주었을때 활성화가 되기 까지는 일정시간이 소요되는 모습을 보임
case1-2)
result>
resample_interval_for_output을 0으로 비활성화 시켰을 경우 보행자에 대해서는 가까스로 우회하지만, 버스에 대해서는 우회하지 못하고 정차하는 모습을 보임.
case1-3)
result>
pedestrian조차 피하지 못하는 모습을 보임.
case1-4)
result>
보행자를 제대로 피하지 못함. drivable_area_right_bound_offset과 drivable_area_left_bound_offset은 0으로 내비두는게 좋을 듯.
issue: PC를 일정시간 이상 방치하면, 기존 KIAPI맵에서 nishishinjuku이라는 기본 설정 맵으로 바뀌는 문제가 간헐적으로 발생.
기존 osm파일(지도맵파일)에서 기본 파일로 덮어씌워지는게 아닌가 하는 추측을 함.
해당 일본 커뮤니티(링크)를 참고해본 결과, 경로 생성이나 장애물 회피의 파라미터는
behavior_path_planner.param.yaml이나 avoidance.param.yaml등의 파일로 설정하고 있는 것 같다.
case1-5)
avoidance.param.yaml 파일에 수정을 가했더니 나름 내가 생각한 시나리오에서 만족하는 결과가 나온 것을 확인하였다.
댓글남기기