将可运行程序包移植到ros下
来源:互联网 发布:java迭代器模式 编辑:程序博客网 时间:2024/06/05 10:54
移植python脚本文件时,发现一个神奇的问题
将python文件从它之前运行的正常环境里移动到别的位置之后,在代码最前方
import syssys.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 requeredcmake_minimum_required(VERSION 2.4.6)#just to avoid the warningif(COMMAND cmake_policy) cmake_policy(SET CMP0003 NEW)endif(COMMAND cmake_policy)#set project nameproject(TLD)#Append path to the module pathlist(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR})#OpenCVfind_package(OpenCV REQUIRED)#set the default path for built executables to the "bin" directoryset(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/../bin)#set the default path for built libraries to the "lib" directoryset(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/../lib)#set the include directoriesinclude_directories (${PROJECT_SOURCE_DIR}/../include${OpenCV_INCLUDE_DIRS})#librariesadd_library(tld_utils tld_utils.cpp)add_library(LKTracker LKTracker.cpp)add_library(ferNN FerNNClassifier.cpp)add_library(tld TLD.cpp)#executablesadd_executable(run_tld run_tld.cpp)#link the librariestarget_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(FILESoutput.msg)generate_messages(DEPENDENCIESstd_msgs)set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)#set the default path for built libraries to the "lib" directoryset(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)#set the include directoriescatkin_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 librariestarget_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 0
- 将可运行程序包移植到ros下
- 将win7下编译好的nutch移植到linux下运行,出现ExcutionException问题
- 将VS下的win32程序移植到Xcode下编译运行
- 将花生壳移植到ARM Linux下
- Ubuntu 下将VP9移植到Android
- Ubuntu 下将ffmpeg移植到Android
- ROS下运行ORBSLAM2
- 如何将ucosii移植到vs2008中运行
- 如何将QT程序移植到开发板上运行
- 如何将QT程序移植到开发板上运行
- 将windows下wxwidgets程序移植到ubuntu下
- ROS程序包的创建
- ROS(Fuerte)移植到beagleboneblack完整过程
- ROS 移植到各种平台教程
- 将AVS1-P2 Decoder项目移植到linux下
- 将现有myeclipse项目移植到maven环境下
- Ubuntu下将TinyOS移植到CC2430芯片
- 在Fedora22平台下将opencv移植到S3C6410
- Web前端-HeadFirst笔记-CH11-定位
- react-native flatlist 的进阶使用 (头尾,间隔组件和滚动事件)
- 关于Nodejs的小总结
- win32 disk imager使用后u盘容量恢复
- 环境变量
- 将可运行程序包移植到ros下
- 如何将Apache Http Server2.2.32的C源码包编译成exe安装包
- 主成分分析(PCA)原理详解
- java环境变量的配置。JDK
- 希望和失望
- MciSendString实现播放音乐(支持多音乐播放)与PlaySound不同
- MATLAB产生随机数
- OSGChina推出的视频教程章节
- Leetcode48. Rotate Image