首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LinuxUbuntu12.04上的ROS hydro + OpenNI2 + NiTE2无法初始化

LinuxUbuntu12.04上的ROS hydro + OpenNI2 + NiTE2无法初始化
EN

Stack Overflow用户
提问于 2014-02-13 23:21:06
回答 1查看 2.2K关注 0票数 2

我面临的问题是,当我尝试初始化NiTE时,它会使用错误代码1 (STATUS_ERROR)失败。

代码语言:javascript
复制
nite::NiTE::initialize();

我有一个设计机器人模拟项目的项目。以下是一些细节:

  • 我正在使用虚拟机在Linux上进行开发。
  • 我已经测试了一个连接(样本)与Assus Xtion Pro Live,它正在工作。
  • 我已经在Windows下构建了我的跟踪器,它们正在工作,我所需要做的就是将它们作为节点附加到ROS中。
  • 我已经将OpenNI2和NiTE2连接到CMakeList.txt中,如你所见。

我开始做我自己的ROS水力发电包-它目前有一个简单的结构:-catkin pkg .-.- beginner_pkg .-特区政府.- talker.cpp .listerner.cpp .发展.-建造

我的CMakeList.txt for beginner_pkg如下:

代码语言:javascript
复制
cmake_minimum_required(VERSION 2.8.3)
project(beginner_tutorials)

## Find catkin and any catkin pack
find_package(catkin REQUIRED COMPONENTS
  roscpp
  rospy
  std_msgs
  genmsg
  tf
)

#set(NITE2_INCLUDE "/home/evo/Desktop/NiTE-Linux-x64-2.2/Include/")
#set(NITE2_REDIST64 "/home/evo/Desktop/NiTE-Linux-x64-2.2/Redist/")

##Find pack for OpenNI2
find_path(OpenNI2_INCLUDEDIR
      NAMES OpenNI.h
      HINTS /usr/include/openni2)
find_library(OpenNI2_LIBRARIES
         NAMES OpenNI2 DummyDevice OniFile PS1090
         HINTS /usr/lib/ /usr/lib/OpenNI2/Drivers
         PATH_SUFFIXES lib)
message (STATUS ${OpenNI2_LIBRARIES})
##Find pack for NiTE2
message(STATUS $ENV{NITE2_INCLUDE})
message(STATUS $ENV{NITE2_REDIST64})
#/home/evo/Desktop/NiTE-Linux-x64-2.2/Include/
find_path (NITE2_INCLUDEDIR
           NAMES NiTE.h
           HINTS "/home/evo/Desktop/NiTE-Linux-x64-2.2/Include/")
##/home/evo/Desktop/NiTE-Linux-x64-2.2/Redist/
find_library (NITE2_LIBRARY
          NAMES NiTE2
          HINTS "/home/evo/Desktop/NiTE-Linux-x64-2.2/Redist/"
          PATH_SUFFIXES lib)


## Declare a catkin package
catkin_package()

## Build talker and listener 

include_directories(include ${catkin_INCLUDE_DIRS})
include_directories(${OpenNI2_INCLUDEDIR})
include_directories(${NITE2_INCLUDEDIR})

add_executable(talker src/talker.cpp)
target_link_libraries(talker ${catkin_LIBRARIES})
target_link_libraries(talker ${OpenNI2_LIBRARIES} ${NITE2_LIBRARY})
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)

我留下的路径与CMakeList.txt中的路径相同

对话者的Cpp代码如下:

代码语言:javascript
复制
int main(int argc, char **argv)
{
  bool active = true;
  HandTracker hTracker;

  Status status = STATUS_OK;
  status = NiTE::initialize(); 
  // iniciate the ROS communicator
  ros::init(argc, argv, "talker");
  ros::NodeHandle n;
  ros::Publisher chatter_pub = n.advertise<std_msgs::String>("chatter", 1000);
  ros::Rate loop_rate(10);
  // Define the msg
  std_msgs::String msg;
  std::stringstream ss;
  // ros::ok()
  if(!HandleStatus(status)) {
        printf("ERROR: #%d, %s \r\n", status,openni::OpenNI::getExtendedError());
    ss << "NITE NOT INITIALIZED";
        msg.data = ss.str();
    ROS_INFO("%s", msg.data.c_str());
    chatter_pub.publish(msg);
    return 1;
  }else ss<<"NITE initialized";
...

我尝试过这样的解决方案:

http://ariandy1.wordpress.com/2013/07/10/ros-openni2-nite2/

并在机器学习数据所在的文件夹中运行我的beginner_tutorials,但是没有什么区别。

有什么建议我可能会犯错误吗?先谢谢你。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-13 22:14:00

原来我的CMakeList.txt没有被正确定义,也没有找到NiTE2在哪里.中提到的初始化问题

http://ariandy1.wordpress.com/2013/07/10/ros-openni2-nite2/

它无法找到位于Redist文件夹中的机器学习文件。

我使用了来自openni2_tracker的openni2_tracker的

tracker

只要稍微调整一下就行了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21767736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档