将可运行程序包移植到ros下

移植python脚本文件时,发现一个神奇的问题

将python文件从它之前运行的正常环境里移动到别的位置之后,在代码最前方

import sys
sys.path.append("之前位置的路径")
就可以正常使用了

这句话好像可以将路径改到之前的位置,这样就有了之前的环境信息,就可以正常运行

具体原因,还希望有大神指导一下。


要注意:用python在ros下发布消息,不需要修改CMAKELIST等文件,因为它本事就不是cpp文件

写完python文件,必须在该目录下要执行

chmod +x 文件名.py
给予文件执行权限

然后再在工作空间执行

catkin_make
运行方式是

rosrun package名称 python文件名.py




移植C++写的程序包时,要将src文件里的CMakeList.txt的内容,修改到src外的路径,然后再链接上需要的库函数

ros包CMAKEList写法中,catkin_package(...)中依赖的包,必须要在package.xml文件中声明


原先程序包中src里的CMakeList.txt的内容如下

#Set minimum version requered
cmake_minimum_required(VERSION 2.4.6)
#just to avoid the warning
if(COMMAND cmake_policy)
     cmake_policy(SET CMP0003 NEW)
endif(COMMAND cmake_policy)
#set project name
project(TLD)
#Append path to the module path
list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR})
#OpenCV
find_package(OpenCV REQUIRED)
#set the default path for built executables to the "bin" directory
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/../bin)
#set the default path for built libraries to the "lib" directory
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/../lib)
#set the include directories
include_directories (${PROJECT_SOURCE_DIR}/../include	${OpenCV_INCLUDE_DIRS})
#libraries
add_library(tld_utils tld_utils.cpp)
add_library(LKTracker LKTracker.cpp)
add_library(ferNN FerNNClassifier.cpp)
add_library(tld TLD.cpp)
#executables
add_executable(run_tld run_tld.cpp)
#link the libraries
target_link_libraries(run_tld tld LKTracker ferNN tld_utils ${OpenCV_LIBS})
#set optimization level 
set(CMAKE_BUILD_TYPE Release)
对应的,修改成ros下package中src文件夹外的CMakeList.txt文件

步骤是,先修改相对路径,然后加入ros的依赖,修改后结果如下

cmake_minimum_required(VERSION 2.8.3)

if(COMMAND cmake_policy)
     cmake_policy(SET CMP0003 NEW)
endif(COMMAND cmake_policy)
project(tld)
list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR})
find_package(catkin REQUIRED COMPONENTS
  cv_bridge
  image_transport
  roscpp
  rospy
  std_msgs
  message_generation
)
find_package(OpenCV 3.1 COMPONENTS core highgui imgproc REQUIRED)
add_message_files(
	FILES
	output.msg
)
generate_messages(
	DEPENDENCIES
	std_msgs
)
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
#set the default path for built libraries to the "lib" directory
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)
#set the include directories
catkin_package(
    CATKIN_DEPENDS
    roscpp
    sensor_msgs
    opencv
    image_transport
    message_runtime
)
include_directories (${PROJECT_SOURCE_DIR}/include	${OpenCV_INCLUDE_DIRS})
include_directories(
  ${catkin_INCLUDE_DIRS}
)
link_directories(${OpenCV_LIBRARY_DIRS})
add_library(tld_utils ${PROJECT_SOURCE_DIR}/src/tld_utils.cpp)
add_library(LKTracker ${PROJECT_SOURCE_DIR}/src/LKTracker.cpp)
add_library(ferNN ${PROJECT_SOURCE_DIR}/src/FerNNClassifier.cpp)
add_library(tld ${PROJECT_SOURCE_DIR}/src/TLD.cpp)
add_executable(run_tld ${PROJECT_SOURCE_DIR}/src/run_tld.cpp)
#link the libraries
target_link_libraries(run_tld tld LKTracker ferNN tld_utils  ${catkin_LIBRARIES} ${OpenCV_LIBS})
#set optimization level 
add_dependencies(run_tld tld_generate_messages_cpp)
set(CMAKE_BUILD_TYPE Release)

之后再在工作空间的目录下进行catkin_make,就可以完成移植





  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值