2014-07-01 29 views
1

我自己的ROS包我试图让自己的ROS包上Gumstix Overo工作。该项目的最终目标是从Caspa(相机)中获取图像并用ROS进行流式处理。为此,我在Yocto项目中取得了最大的成功:Pocky,它使用BitBake交叉编译工具链。为此,我按照GitHub的README.md中的说明进行操作:https://github.com/gumstix/Gumstix-YoctoProject-Repo获取有关Gumstix overo(BitBake的Yocto计划)

仅供参考,实际闪烁和安装的说明在官方Gumstix网站上更加清楚。

我是成功的,在所有的ROS元和额外使用以下命令编译BitBake的项目:

$ bitbake gumstix-console-image 

(需要相当长一段时间,很多很多的磁盘空间),后来,闪烁,安装。

这里是我的包,我试图编译:https://github.com/elikos/groundStationPublic我试图保持文件夹尽可能简单,以限制潜在的路径问题,所以一切都在基地目录...(非常丑,我知道)

这里是我的CMakelist.txt:

cmake_minimum_required(VERSION 2.8.3) 
project(groundStationPublic) 

## Find catkin and any catkin packages 
find_package(catkin REQUIRED COMPONENTS cv_bridge image_transport roscpp rospy std_msgs genmsg) 

find_package(OpenCV REQUIRED) 

## Declare ROS messages and services 
#add_message_files(FILES Num.msg) 
#add_service_files(FILES AddTwoInts.srv) 

## Generate added messages and services 
#generate_messages(DEPENDENCIES std_msgs) 

## Declare a catkin package 
catkin_package() 

include_directories(include ${catkin_INCLUDE_DIRS} ${OpenCV_INCLUDE_DIRS}) 

add_executable(talker talker.cpp) 
target_link_libraries(talker ${catkin_LIBRARIES}) 
#add_dependencies(talker beginner_tutorials_generate_messages_cpp) 

add_executable(listener listener.cpp) 
target_link_libraries(listener ${catkin_LIBRARIES}) 
#add_dependencies(listener beginner_tutorials_generate_messages_cpp) 

add_executable(cornerDetection main.cpp ConerDetection.cpp LineDetection.cpp ImagePublisher.cpp) 
target_link_libraries(cornerDetection ${catkin_LIBRARIES} ${OpenCV_LIBRARIES}) 

add_executable(bonPublisher bonPublisher.cpp) 
target_link_libraries(bonPublisher ${catkin_LIBRARIES} ${OpenCV_LIBRARIES}) 

这里是我的包BitBake的食谱:

DESCRIPTION = "Elikos groundstation code." 
SECTION = "devel" 
LICENSE = "BSD" 
LIC_FILES_CHKSUM = "file://package.xml;beginline=8;endline=8;md5=d566ef916e9dedc494f5f793a6690ba5" 

DEPENDS = "roscpp rospy catkin std-msgs" 
RDEPENDS_${PN} = "roscpp rospy std-msgs" 

SRC_URI = "git://github.com/elikos/groundStationPublic.git" 

SRCREV = "${AUTOREV}" 
PV = "1.0.0+gitr${SRCPV}" 

S = "${WORKDIR}/git" 

inherit catkin 

ROS_SPN = "groundStationPublic" 

我已经找到了它~/yocto/poky/meta-ros/recipes-ros/groundStationPublic

如果我执行命令bitbake groundStationPublic,一切编译罚款。没有错误。 (你可能会从x264_git一个错误,但正确的sourcerev是:SRCREV = “ffc3ad4945da69f3caa2b40e4eed715a9a8d9526”)

最后,我的问题是:

  • 哪里是我的包在图像中位于?
    • 这不是在/usr/share/像我希望它是...
  • 我如何运行我的包,如果rosrun无法找到它? (可能是因为它根本不存在)
    • 我希望它不会停像rosrun groundStationPublic talker

回答

1

好了,终于找到了答案,以我自己的问题:

我不得不添加我的包中的图像像这样在~/yocto/poky/meta-gumstix-extras/recipies-images/gumstix/gumstix-consol-image.bb

UTILITIES_INSTALL = " \ 
    [...] 
    packagegroup-ros-comm \ 
    python-wstool \ 
    python-email \ 
    python-distutils \ 
    git \ 
    git-perltools \ 
    python-rosinstall \ 
    rospy-tutorials \ 
    roscpp-tutorials \ 
    groundStationPublic \ 
    [...] 
" 

和m AKE一定有UTILITIES_INSTALL加入:

IMAGE_INSTALL += " \ 
    [...] 
    ${UTILITIES_INSTALL} \ 
    [...] 
" 

我也不得不改变CMakelist.txt明确地告诉它在哪里安装目标,所以这里是新CMakelist。TXT(注意在最后几行的差异):

cmake_minimum_required(VERSION 2.8.3) 
project(groundStationPublic) 

## Find catkin and any catkin packages 
find_package(catkin REQUIRED COMPONENTS cv_bridge image_transport roscpp rospy std_msgs genmsg) 

find_package(OpenCV REQUIRED) 

## Declare ROS messages and services 
#add_message_files(FILES Num.msg) 
#add_service_files(FILES AddTwoInts.srv) 

## Generate added messages and services 
#generate_messages(DEPENDENCIES std_msgs) 

## Declare a catkin package 
catkin_package() 

include_directories(include ${catkin_INCLUDE_DIRS} ${OpenCV_INCLUDE_DIRS}) 

add_executable(talker src/talker.cpp) 
target_link_libraries(talker ${catkin_LIBRARIES}) 
#add_dependencies(talker beginner_tutorials_generate_messages_cpp) 

add_executable(listener src/listener.cpp) 
target_link_libraries(listener ${catkin_LIBRARIES}) 
#add_dependencies(listener beginner_tutorials_generate_messages_cpp) 

add_executable(cornerDetection src/main.cpp src/ConerDetection.cpp src/LineDetection.cpp src/ImagePublisher.cpp) 
target_link_libraries(cornerDetection ${catkin_LIBRARIES} ${OpenCV_LIBRARIES}) 

add_executable(bonPublisher src/bonPublisher.cpp) 
target_link_libraries(bonPublisher ${catkin_LIBRARIES} ${OpenCV_LIBRARIES}) 

add_executable(exempleSubscriber src/exempleSubscriber.cpp) 
target_link_libraries(exempleSubscriber ${catkin_LIBRARIES} ${OpenCV_LIBRARIES}) 

install(TARGETS talker listener cornerDetection bonPublisher exempleSubscriber 
    ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} 
    LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} 
    RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} 
) 

不幸的是,我目前遇到的OpenCV这不是能够从CASPA(从/ dev/video6)读取图像的问题。但这是一个其他问题的漏洞!