작업 일지/F1Tenth

[작업 일지] f1tenth - rrt_node

젊은 친구들 2025. 6. 12. 23:30

이전 내용

 bresenham line으로 local occupancy grid를 만들었다. 여기서도 bresenham의 경계가 되는 45'라인에 문제가 있었다. lidar가 미치는 영역 밖으로도 unknown표시하는 부분에서도 어려움이 있었다. 

작업 내용 

1. rrt 알고리즘을 구현하면서 new_node에서 nan이나 너무 큰 값이 나오기도 했다. (아래는 터미널 로깅 내용) Steering이후 nearset_node와 new_node 사이 장애물을 확인한 다음 No collision으로 new_node의 좌표를 보내준다. 

dawgs_nx@dawgs:~/dawgs_f1tenth/labs_f1tenth/lab7$ ros2 run lab7_pkg rrt_node 
1749735465.830973 [0]   rrt_node: using network interface wlan0 (udp/192.168.0.8) selected arbitrarily from: wlan0, docker0
[INFO] [1749735466.084489151] [RRT]: Created new RRT Object.
[INFO] [1749735466.122454555] [rrt_node]: rrt initialized
[INFO] [1749735466.123270472] [rrt_node]: odom_topic received: 100
[INFO] [1749735466.123429322] [rrt_node]: sampling: 0, (-0.49, 0.93)
[INFO] [1749735466.123640013] [rrt_node]: Check collision size: 23
[INFO] [1749735466.305715654] [rrt_node]: sampling: 1, (0.65, 1.33)
[INFO] [1749735469.824420821] [rrt_node]: No collision: (nan, nan)
[INFO] [1749735469.836986643] [rrt_node]: odom_topic received: 100
[INFO] [1749735470.256181121] [rrt_node]: sampling: 1, (0.25, -0.42)
[INFO] [1749735473.524945691] [rrt_node]: No collision: (-1.28, -0.20)
[INFO] [1749735479.137131443] [rrt_node]: Too small steer dist: (2.04, -1.70) -> (2.04, -1.70)
[INFO] [1749735480.926329743] [rrt_node]: No collision: (1.41, 1459396304482002481214975241147297479143278610165727801780021157082148657072061788506157206218934533540501500110153386426776406706463459161063803467473257720521954413585552677593199874685762717842669568.00)

 

2.  Sampling을 잘하고 있는지 rviz로 확인하려던 차에 steering 함수에 문제가 있는 것을 발견했다.(위 내용) 그러면서 rviz에도 node를 표시할 수 없었다. Node실행순서를 안맞춰서 그런건지 steering함수 문제로 rviz가 죽은 것인지 확인해봐야 한다. 

[rviz2-1] rviz2: /tmp/binarydeb/ros-foxy-rviz-ogre-vendor-8.2.8/.obj-aarch64-linux-gnu/ogre-v1.12.1-prefix/src/ogre-v1.12.1/OgreMain/include/OgreAxisAlignedBox.h:225: void Ogre::AxisAlignedBox::setExtents(const Vector3&, const Vector3&): Assertion `(min.x <= max.x && min.y <= max.y && min.z <= max.z) && "The minimum corner of the box must be less than or equal to maximum corner"' failed.
[ERROR] [rviz2-1]: process has died [pid 15670, exit code -6, cmd '/opt/ros/foxy/lib/rviz2/rviz2 -d /home/dawgs_nx/dawgs_f1tenth/sim_ws/install/f1tenth_gym_ros/share/f1tenth_gym_ros/launch/particle_bridge_v4.rviz --ros-args -r __node:=rviz'].

 

3. MarkerArray를 표현하는 함수를 만들었지만 steering이 문제인지 visualization함수의 문제인지 모르게 rviz를 표현할 수 없었다. (위 로깅)

 

잘했던 부분

1. 문제를 해결하지는 못했지만. 전체적인 문제점을 발견했다. 

 

아쉬웠던 부분

1. bresenham에서 항상 양의 방향으로 occupancy를 업데이트하는 점을 수정해야겠다. 

 

참고자료

1. 브레젠험 직선 알고리즘 - 위키백과, 우리 모두의 백과사전