작업 일지/F1Tenth

[작업 일지] f1tenth lab5.SLAM and pure pursuit

젊은 친구들 2025. 3. 1. 22:00

이전 내용

 range_libc 파이썬 패키지를 불러오는 환경변수 주소를 수정하고 패키지를 불러올 수 있었다. 

작업 내용 

1. particle filter를 사용하면서 range_libc 패키지를 불러오는데 다시 문제가 생겼다. 컴파일한 경로에 라이브러리 파일(*.so) 이름을 수정해줬다.

dawgs_nx@dawgs:/usr/lib/python3.8/site-packages/range_libc$ ls
EGG-INFO     range_libc.cpython-38-aarch64-linux-gnu.so
__pycache__  range_libc.py
dawgs_nx@dawgs:/usr/lib/python3.8/site-packages/range_libc$ cp range_libc.cpython-38-aarch64-linux-gnu.so range_libc.so
cp: cannot create regular file 'range_libc.so': Permission denied
dawgs_nx@dawgs:/usr/lib/python3.8/site-packages/range_libc$ sudo cp range_libc.cpython-38-aarch64-linux-gnu.so range_libc.so
[sudo] password for dawgs_nx: 
dawgs_nx@dawgs:/usr/lib/python3.8/site-packages/range_libc$ ls
EGG-INFO     range_libc.cpython-38-aarch64-linux-gnu.so  range_libc.so
__pycache__  range_libc.py
dawgs_nx@dawgs:/usr/lib/python3.8/site-packages/range_libc$ python3
Python 3.8.10 (default, Jan 17 2025, 14:40:23) 
[GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import range_libc
ra>>> range_libc.PyOMap
<class 'range_libc.PyOMap'>
>>> exit()

 range_libc.so가 있는 곳에서는 PyOMap을 불러올 수 있었지만 ros2에서 노드로 실행했을 때는 Attribute Module에러를 발생시켰다.

[particle_filter-8] 1739881492.609492 [0] particle_f: using network interface wlan0 (udp/192.168.0.8) selected arbitrarily from: wlan0, docker0
[map_server-4] [INFO] [1739881492.888728877] [map_server]: Handling GetMap request
[particle_filter-8] Traceback (most recent call last):
[particle_filter-8]   File "/home/dawgs_nx/dawgs_f1tenth/sim_ws/install/particle_filter/lib/particle_filter/particle_filter", line 33, in <module>
[particle_filter-8]     sys.exit(load_entry_point('particle-filter', 'console_scripts', 'particle_filter')())
[particle_filter-8]   File "/home/dawgs_nx/dawgs_f1tenth/sim_ws/build/particle_filter/particle_filter/particle_filter.py", line 710, in main
[particle_filter-8]     pf = ParticleFiler()
[particle_filter-8]   File "/home/dawgs_nx/dawgs_f1tenth/sim_ws/build/particle_filter/particle_filter/particle_filter.py", line 152, in __init__
[particle_filter-8]     self.get_omap()
[particle_filter-8]   File "/home/dawgs_nx/dawgs_f1tenth/sim_ws/build/particle_filter/particle_filter/particle_filter.py", line 210, in get_omap
[particle_filter-8]     oMap = range_libc.PyOMap(map_msg)
[particle_filter-8] AttributeError: module 'range_libc' has no attribute 'PyOMap'
[rviz2-1] [INFO] [1739881493.882644757] [rviz2]: Stereo is NOT SUPPORTED
[rviz2-1] [INFO] [1739881493.885822522] [rviz2]: OpenGl version: 4.6 (GLSL 4.6)
[rviz2-1] [INFO] [1739881494.151353715] [rviz2]: Stereo is NOT SUPPORTED
[ERROR] [particle_filter-8]: process has died [pid 6338, exit code 1, cmd '/home/dawgs_nx/dawgs_f1tenth/sim_ws/install/particle_filter/lib/particle_filter/particle_filter --ros-args -r __node:=particle_filter --params-file /home/dawgs_nx/dawgs_f1tenth/sim_ws/install/f1tenth_gym_ros/share/f1tenth_gym_ros/config/localize_config.yaml']

 site-packages에 패키지 이름으로 시작하는 디렉토리가 아니라 라이브러리(*.so)가 있어야 했다. cython으로 컴파일하고 불러오는 과정에 좀 놓치는 게 있는 것 같다. 

dawgs_nx@dawgs:/usr/lib/python3.8/site-packages$ sudo rm -rf range_libc
dawgs_nx@dawgs:/usr/lib/python3.8/site-packages$ ls
easy-install.pth  range_libc-0.1-py3.8-linux-aarch64.egg  range_libc.so

 

2. 시뮬레이션 환경에서 PoseStamped msg를 받아 waypoint node를 만들었다. 기존 메세지들 형태가 바뀌는 게 아니어서 

 

3. parameter file을 불러오는 --ros-args를 사용했다. 파일에서 squash_factor를 불러오는데 기본값이 설정되어 있지 않아서 실행 중에 문제가 있었다. 명령어(--param-file)를 사용하는데 절대 경로를 적어두는 게  맞았나 싶다. 

dawgs_nx@dawgs:~/dawgs_f1tenth/sim_ws$ ros2 run particle_filter particle_filter -- --param-file:=./src/f1tenth_gym_ros/config/localize_config.yaml 
1740384181.758932 [0] particle_f: using network interface wlan0 (udp/192.168.0.8) selected arbitrarily from: wlan0, docker0
Traceback (most recent call last):
  File "/home/dawgs_nx/dawgs_f1tenth/sim_ws/install/particle_filter/lib/particle_filter/particle_filter", line 33, in <module>
    sys.exit(load_entry_point('particle-filter', 'console_scripts', 'particle_filter')())
  File "/home/dawgs_nx/dawgs_f1tenth/sim_ws/build/particle_filter/particle_filter/particle_filter.py", line 710, in main
    pf = ParticleFiler()
  File "/home/dawgs_nx/dawgs_f1tenth/sim_ws/build/particle_filter/particle_filter/particle_filter.py", line 93, in __init__
    self.INV_SQUASH_FACTOR    = 1.0 / self.get_parameter('squash_factor').value
TypeError: unsupported operand type(s) for /: 'float' and 'NoneType'

 

잘했던 부분

-

아쉬웠던 부분

1. 며칠이 지나서야 로그를 남겼다. 적어둔 내용으로 온라인에 올렸지만 그리 생생하지는 못했다. 

2. 제목에서 무슨 작업을 했는지 뾰족하게 남은 게 없었다. 

참고자료

1. f1tenth range_libc github

f1tenth/range_libc: A collection of optimized ray cast methods for 2D occupancy grids including the CDDT algorithm. Written in C++ and CUDA with Python wrappers.

 

GitHub - f1tenth/range_libc: A collection of optimized ray cast methods for 2D occupancy grids including the CDDT algorithm. Wri

A collection of optimized ray cast methods for 2D occupancy grids including the CDDT algorithm. Written in C++ and CUDA with Python wrappers. - f1tenth/range_libc

github.com