2014-07-01 30 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)讀取圖像的問題。但這是一個其他問題的漏洞!