Search
🚿

Fine tuning해야 할 것들

Category
할 일들
Status
참여자
상위 테스크
하위 테스크
날짜
생성 일시
2024/01/04 04:57

Perception

SLAM
mapConvert.py에서 콘-사람 필터링하는 임계값
DETECTION
주황콘 개수 - mapConver.py의 self.red_cone
ROI 각도 - 세부코드 수정

Decision

조향각이 너무 빡세서 들이 받는 경우에는 어떻게 해야하나 ?
ros_package/driven_ros/src/driven/src/decision/library/MotionPlanner.py 에서 코드를 수정해야 함.
현재 로컬패스플래닝의 조향은 가장 멀리있는 콘 3개의 무게중심 지점을 목표점으로 지정하여 현재 위치의 yaw rate에서 현재위치와 목표점과의 각도를 계산하여 이동한다.
1.
여기서 최대조향각과 최소조향각을 설정하던지
2.
각도를 원하는 범위로 매핑시키는 방법이 있음.
ex. 출력값 1000,1200 이라면 / 100 을 하여 10,12 로 만드는방법등… 창의적인 생각이 필요함.
now_steer = self.get_now_steering() ###### LiDar 배열의 yaw rate 각 만큼의 회전을 통하여 실제 imu가 바라보고 있는 방향으로의 조향각을 구한다. ###### 만약 값이 이상하다면 now_steer 를 - now steer 로 바꿔야합니다. goal_x = int(goal_x*math.cos(now_steer) - goal_y*math.sin(now_steer)) goal_y = int(goal_x*math.sin(now_steer) + goal_y*math.cos(now_steer)) radian_point = gradient.calculate_radian(car_x,car_y,goal_x,goal_y) print(f"[manual log] [DECISION] [MotionPlanner.py] [ Motion Planning ] radian_ : {radian_point}") target_degree = gradient.rad2deg(radian_point) print(f"[manual log] [DECISION] [MotionPlanner.py] [ Motion Planning ] target_degree : {target_degree}") #self.first_target_steering = target_degree - self.get_now_steering() #self.first_target_steering = target_degree - self.get_now_steering() self.first_target_steering = int(target_degree) - int(now_steer)
Python
복사
GPS
시작지점에서 멈추기 위해 GPS 를 사용한다. 시작 지점과 같아지거나, 시작 지점과 outlier 만큼 위경도가 떨어져있으면 멈추게 한다.
지금은 0.0000001 을 outlier 로 설정해둔 상태라 이 값을 직접 운행해보고 설정해야 함.
Driven_autonomous_driving/ros_package/driven_ros/src/driven/src/decision/library/MotionPlanner.pyisInitPosition_by_gps 함수의 outlier 인자를 수정해야 한다.
/decision/libarary/MotionPlanner.py , lin3 329 if self.isInitPosition_by_gps(0.0000001) or e: self.first_target_steering = 0 self.second_target_steering = 0 self.first_target_velocity = 0 self.second_target_velocity = 0 self.brake_level = 90 ## level 3 return self
Python
복사
좌표계를 맞추기 위한 행동
현재 우리는 2개의 좌표계를 사용하고 있음. 현실세계의 IMU 좌표계 ( 0도가 자북방향 ) 추상자료형 세계의 Lidar 좌표계 ( 어느쪽도 0도가 아님. 다만 차량이 도로의 중심에 있고, 주행간 앞을 보고 있을 거라는 가정하에 y 좌표가 높은 방향이 0도 )
이를 해결하기 위해 ‘회전행렬’을 사용하였음. 2D LiDar 세계를 IMU 에 맞추기 위해 목표지점을 yaw rate 만큼 회전시켜 다시 최종 조향각을 구하는 방식을 사용하였음.
Driven_autonomous_driving/ros_package/driven_ros/src/driven/src/decision/library/MotionPlanner.py 의 Motion Planning 함수의 goal_x,goal_y 인자를 수정해야 한다.
###### LiDar 배열의 yaw rate 각 만큼의 회전을 통하여 실제 imu가 바라보고 있는 방향으로의 조향각을 구한다. ###### 만약 값이 이상하다면 now_steer 를 - now steer 로 바꿔야합니다. goal_x = int(goal_x*math.cos(now_steer) - goal_y*math.sin(now_steer)) goal_y =int (goal_x*math.sinn(now_steer) + goal_y*math.cos(now_steer)) radian_point = gradient.calculate_radian(car_x,car_y,goal_x,goal_y) target_degree = gradient.rad2deg(radian_point) print(f"[manual log] [DECISION] [MotionPlanner.py] [ Motion Planning ] target_degree : {target_degree}") #self.first_target_steering = target_degree - self.get_now_steering() #self.first_target_steering = target_degree - self.get_now_steering() self.first_target_steering = int(target_degree) - now_steer print(f"[manual log] [DECISION] [MotionPlanner.py] [Motion Planning] first_target_steering {self.first_target_steering}") self.now_steering = self.first_target_steering
Python
복사