ROS 시스템 은 python 패 키 지 를 실행 가능 한 파일 로 컴 파일 하 는 간단 한 절차 입 니 다.

python install 모드 개발 규칙
이 글 은 ROS 시스템 에서 python 을 실행 가능 한 파일 로 컴 파일 하 는 방법 을 설명 합 니 다.절차 가 비교적 간단 합 니 다.누락 되 지 않도록 엄 격 히 실행 하 십시오.
1.필수 파일 다운로드

git clone https://gitee.com/alen2020/ros_python_install_mode_files
##      cmake   setup.py,install.sh        
cp -r cmake setup.py  car_mqtt_api/
동적 인 파 라 메 터 를 사용 하려 면 install.sh 를 복사 하고 다음 과 같은 수정 을 해 야 합 니 다.(동적 인 파 라 메 터 를 사용 하려 면 다음 과 같이 무시 하 십시오)

cp install.sh  car_mqtt_api/

##    install.sh  package_name,       

package_name=
package_path=`rospack find ${package_name}`
if [ $# -eq 1 ]; then
    package_path=$1
fi
#      .py    src   ,    scripts ,    scripts 
#   ROS          /root/ROS/catkin_ws/ ,       
mkdir $package_path/src/$package_name/cfg
cp  /root/ROS/catkin_ws/devel/lib/python2.7/dist-packages/$package_name/cfg/* $package_path/src/$package_name/cfg
2.디 렉 터 리 구조 개조

##   ,.py     scripts    
ls 
在这里插入图片描述
주 함 수 는 현재 디 렉 터 리 에 남아 있 고 호출 된 파일 은 하위 디 렉 터 리 에 있 으 며 하위 디 렉 터 리 는 이 패키지 이름과 같 습 니 다.
在这里插入图片描述
3.CMakelist 규칙 만 들 기(참조 관계 가 있 음)
1)현재 가방 의 CMakelist 수정
다음 내용 을 추가,그 중 addsubdirectory 는 자신의 python 파일 에 저 장 된 디 렉 터 리 에 따라 조정 합 니 다.

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
# include CMake module for Cython
include(UseCython)
add_custom_target(ReplicatePythonSourceTree ALL ${CMAKE_COMMAND} -P
  ${CMAKE_CURRENT_SOURCE_DIR}/cmake/ReplicatePythonSourceTree.cmake
  ${CMAKE_CURRENT_BINARY_DIR}
  WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
add_subdirectory(src)

##        ,         
add_custom_target(install.sh ALL)

add_custom_command(TARGET install.sh
POST_BUILD
COMMAND /bin/sh ${PROJECT_SOURCE_DIR}/install.sh ${PROJECT_SOURCE_DIR})
)
2)scripts 디 렉 터 리 에 CMakeLists.txt 추가
인용 되 는 모든 파일 을 써 야 합 니 다.마지막 에 주 함수 의 파일 이름 을 써 야 합 니 다.

##     
add_subdirectory(mypackage)

cython_add_standalone_executable(1 MAIN_MODULE 1.py mypackage/2.py 1.py)
install(TARGETS 1
  RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION})
3)scripts 디 렉 터 리 의 하위 디 렉 터 리 에 CMakeLists.txt 추가
인 용 된 모든 파일 은 규칙 을 추가 해 야 합 니 다.

cython_add_module(2 2.py)
set_target_properties(2
  PROPERTIES
  LIBRARY_OUTPUT_DIRECTORY
  ${CATKIN_DEVEL_PREFIX}/${CATKIN_PACKAGE_PYTHON_DESTINATION})
install(TARGETS 2
  LIBRARY DESTINATION ${CATKIN_PACKAGE_PYTHON_DESTINATION})
    。。。
4.비 인용 관계(단일 파일)
두 번 쓰다

cython_add_standalone_executable(car_mqtt_api_main MAIN_MODULE car_mqtt_api_main.py car_mqtt_api_main.py)

install(TARGETS car_mqtt_api_main
  RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION})
5.가방 인용 방법
규칙 을 바 꾼 후 하위 디 렉 터 리 접 두 사 를 붙 여야 합 니 다.

 
from mypackage import 2
  
from mypackage.2 import function
6.cfg 동적 매개 변수
앞에서 말 했 듯 이 하위 디 렉 터 리 는 이 노드 와 동명 이인 이 어야 합 니 다.컴 파일 후 하위 디 렉 터 리 의 이름 이 아 닌 노드 이름 으로 명명 되 기 때문에 컴 파일 이 생 성 된 실행 가능 한 파일 은 devel 또는 install 의 lib/python 2.7/dist-packages 에 넣 고 소스 코드 모드 로 실행 되면 하위 디 렉 터 리 의 cfg 파일 을 읽 습 니 다.
예 를 들 어 carmqtt_api 컴 파일 후 동적 으로 파 라 메 트릭 을 실행 할 수 있 는 프로그램 은 다음 디 렉 터 리 에 놓 습 니 다.

devel/lib/python2.7/dist-packages/mypackage/cfg
이 디 렉 터 리 에 있 는 파일 을 하위 디 렉 터 리 로 복사 해 야 합 니 다.

mkdir -p mypackage/scritps/cfg
cp */devel/lib/python2.7/dist-packages/mypackage/cfg scripts/mypackage/cfg
7.흔 한 버그
모듈 을 찾 을 수 없습니다:install/lib/python2.7/dist-packages/car_control디 렉 터 리 에__init__.py파일 을 놓 습 니 다.
ROS 시스템 이 python 패 키 지 를 실행 가능 한 파일 로 컴 파일 하 는 것 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 python 패 키 지 를 실행 가능 한 파일 로 컴 파일 하 는 내용 은 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 지원 바 랍 니 다!

좋은 웹페이지 즐겨찾기