시작 시 ros2 시작 파일을 실행하는 방법은 무엇입니까?

시작 시 ros2 시작 파일을 실행하는 방법은 무엇입니까?

ros2 시작 파일을 실행하는 Python 파일이 있습니다.

process = subprocess.Popen(["/opt/ros/humble/bin/ros2", "launch", "blaunch_pkg", "on_startup.launch.py"])
process = subprocess.Popen(command1, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = process.communicate()


print("STDOUT OF ROS:", stdout.decode())
print("STDERR OF ROS:", stderr.decode())

process.wait()
exit()

이것은 내 서비스입니다.

[Unit]
Description=My Python Script
After=network.target

[Service]
Environment=PYTHONPATH=(my python path)
Enviroment=AMENT_PREFIX_PATH=(my ament prefix path)
Enviroment=CMAKE_PREFIX_PATH=(my ament cmake prefix path)
ExecStart=/bin/python3.10 (my path to service_startup.py) 
WorkingDirectory= (my working directory)
StandardOutput=append:/var/log/my_script.log
StandardError=inherit
Restart=always
User=tubo

[Install]
WantedBy=multi-user.target

내 오류 로깅이 일관성이 없습니다. 변경할 때마다 다른 오류 로깅이 표시됩니다(예: 사용 중인 Python 경로를 변경하는 경우). 현재 구성에서는 서비스가 활성화되어 있지만 때로는 오류 없이 실행되지만 시작 파일이 실제로 실행되지 않고 때로는 다음 오류가 나타납니다.

OSError: Environment variable 'AMENT_PREFIX_PATH' is not set or empty
STDOUT OF ROS: 
STDERR OF ROS: 
STDOUT OF ROS: 
STDERR OF ROS: 

관련 정보