我想让我自己的ROS包在Gumstix上工作。该项目的最终目标是从Caspa (摄像机)获取图像,并将其与ROS进行流。要做到这一点,我在Yocto项目上取得了最大的成功: Pocky,它使用BitBake交叉编译工具链。为此,我遵循了README.md在GitHub repo:https://github.com/gumstix/Gumstix-YoctoProject-Repo中的说明。
在正式的Gumstix网站上,关于实际闪烁和安装的说明更加清晰。
我成功地使用以下命令编译了带有所有ROS元数据和附加项的BitBake项目:
$ bitbake gumstix-console-image (需要相当长的时间和大量的磁盘空间)和稍后,闪烁和安装。
下面是我试图编译的包:https://github.com/elikos/groundStationPublic我试图尽可能简单地保存文件夹,以限制潜在的路径问题,所以所有的东西都在基本的dir中.(很丑,我知道)
这是我的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 groundStationPublic talker一样
发布于 2014-07-07 01:55:49
终于找到了我自己问题的答案:
我不得不像在~/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 \
[...]
"并确保将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 6).但那是另一个问题!
https://stackoverflow.com/questions/24517991
复制相似问题