이전 내용
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
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
'작업 일지 > F1Tenth' 카테고리의 다른 글
| [작업 일지] f1tenth - rrt_node (0) | 2025.06.12 |
|---|---|
| [작업 일지] f1tenth - mapping.cartographer (0) | 2025.04.20 |
| [작업 일지] f1tenth lab5.SLAM and pure pursuit (0) | 2025.02.06 |
| [작업 일지] f1tenth lab5.SLAM and pure pursuit (0) | 2025.02.06 |
| [작업 일지] f1tenth lab5.SLAM and pure pursuit (0) | 2025.01.26 |