Robotics StackExchange | Archived questions

node not built, but executable is built?

Hi, I'm trying to "pull" PTAM out of the TUM ARDrone package, so that I can build a package just using the stateestimation node, and nothing else. The first step of this was to create a package called ptam which is a copy of TUM ARDrone but I commented out the instructions in the CMakeList.txt which build the other nodes. With a few more changes it built succesfully, and told me

Linking CXX executable /home/highbay-linux/ptam_ws/devel/lib/ptam/drone_stateestimation
[100%] Built target drone_stateestimation

Yet when I try to run rosrun ptam and hit TAB, nothing comes up, in fact when I run rosrun pTAB, it doesnt pull up ptam as an option. I sourced my workspace corectly, so I don't know why, if the target exacutable was built, I dont have any nodes to run?

Here is the amended CMakeList.txt


cmake_minimum_required(VERSION 2.8.3)
project(ptam)

## Find catkin macros and libraries
## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz)
## is used, also find other catkin packages
find_package(catkin REQUIRED COMPONENTS
  cv_bridge
  dynamic_reconfigure
  geometry_msgs
  message_generation
  message_runtime
  roscpp
  roslib
  rospy
  sensor_msgs
  std_msgs
  std_srvs
  tf
)


# Compile third party libs
include(ExternalProject)
ExternalProject_Add(thirdparty
    URL ${PROJECT_SOURCE_DIR}/thirdparty/thirdparty.tar.gz
    PREFIX ${CMAKE_BINARY_DIR}/thirdparty
    CONFIGURE_COMMAND ""
    BUILD_COMMAND make
    INSTALL_COMMAND ""
    BUILD_IN_SOURCE 1
)

# ------------------- add dynamic reconfigure api ------------------------------------
generate_dynamic_reconfigure_options(
#  cfg/AutopilotParams.cfg
#  cfg/GUIParams.cfg
  cfg/StateestimationParams.cfg
)

################################################
## Declare ROS messages, services and actions ##
################################################

## Generate messages in the 'msg' folder
add_message_files(FILES filter_state.msg)

## Generate services in the 'srv' folder
#add_service_files(
#   DIRECTORY srv
#   FILES
#   SetReference.srv
#   SetMaxControl.srv
#   SetInitialReachDistance.srv
#   SetStayWithinDistance.srv
#   SetStayTime.srv
#)

## Generate added messages 
generate_messages(DEPENDENCIES std_msgs)

###################################
## catkin specific configuration ##
###################################
catkin_package(CATKIN_DEPENDS message_runtime std_msgs ardrone_autonomy)

###########
## Build ##
###########
include_directories(${catkin_INCLUDE_DIRS})

# --------------------------- stateestimation & PTAM --------------------------------
# set header ans source files
set(STATEESTIMATION_SOURCE_FILES       
    src/stateestimation/GLWindow2.cc
    src/stateestimation/GLWindowMenu.cc  
    src/stateestimation/main_stateestimation.cpp
    src/stateestimation/DroneKalmanFilter.cpp
    src/stateestimation/Predictor.cpp
  src/stateestimation/PTAMWrapper.cpp
  src/stateestimation/MapView.cpp
  src/stateestimation/EstimationNode.cpp
  src/stateestimation/PTAM/ATANCamera.cc
  src/stateestimation/PTAM/Bundle.cc
  src/stateestimation/PTAM/HomographyInit.cc
  src/stateestimation/PTAM/KeyFrame.cc
  src/stateestimation/PTAM/Map.cc
  src/stateestimation/PTAM/MapMaker.cc
  src/stateestimation/PTAM/MapPoint.cc
  src/stateestimation/PTAM/MiniPatch.cc
  src/stateestimation/PTAM/PatchFinder.cc
  src/stateestimation/PTAM/Relocaliser.cc
  src/stateestimation/PTAM/ShiTomasi.cc
  src/stateestimation/PTAM/SmallBlurryImage.cc
  src/stateestimation/PTAM/Tracker.cc
)
set(STATEESTIMATION_HEADER_FILES    
  src/stateestimation/GLWindow2.h 
  src/stateestimation/GLWindowMenu.h    
  src/stateestimation/MouseKeyHandler.h  
  src/HelperFunctions.h   
  src/stateestimation/DroneKalmanFilter.h        
  src/stateestimation/Predictor.h 
  src/stateestimation/PTAMWrapper.h
  src/stateestimation/MapView.h
  src/stateestimation/EstimationNode.h
  src/stateestimation/PTAM/ATANCamera.h
  src/stateestimation/PTAM/Bundle.h
  src/stateestimation/PTAM/customFixes.h
  src/stateestimation/PTAM/HomographyInit.h
  src/stateestimation/PTAM/KeyFrame.h
  src/stateestimation/PTAM/LevelHelpers.h
  src/stateestimation/PTAM/Map.h
  src/stateestimation/PTAM/MapMaker.h
  src/stateestimation/PTAM/MapPoint.h
  src/stateestimation/PTAM/MEstimator.h
  src/stateestimation/PTAM/MiniPatch.h
  src/stateestimation/PTAM/OpenGL.h
  src/stateestimation/PTAM/PatchFinder.h
  src/stateestimation/PTAM/Relocaliser.h
  src/stateestimation/PTAM/settingsCustom.h
  src/stateestimation/PTAM/ShiTomasi.h
  src/stateestimation/PTAM/SmallBlurryImage.h
  src/stateestimation/PTAM/SmallMatrixOpts.h
  src/stateestimation/PTAM/TrackerData.h
  src/stateestimation/PTAM/Tracker.h
  src/stateestimation/PTAM/VideoSource.h
)

# set required libs and headers
include_directories(
  ${CMAKE_BINARY_DIR}/thirdparty/src/thirdparty/TooN/include 
  ${CMAKE_BINARY_DIR}/thirdparty/src/thirdparty/libcvd/include 
  ${CMAKE_BINARY_DIR}/thirdparty/src/thirdparty/gvars3/include 
)  

link_directories(
  ${CMAKE_BINARY_DIR}/thirdparty/src/thirdparty/libcvd/lib 
  ${CMAKE_BINARY_DIR}/thirdparty/src/thirdparty/gvars3/lib 
)
set(PTAM_LIBRARIES GL glut cvd GVars3 blas lapack)
add_definitions(-DKF_REPROJ)

# build!
add_executable(drone_stateestimation ${STATEESTIMATION_SOURCE_FILES} ${STATEESTIMATION_HEADER_FILES})
set_target_properties(drone_stateestimation PROPERTIES COMPILE_FLAGS "-D_LINUX -D_REENTRANT -Wall  -O3 -march=nocona -msse3") 
target_link_libraries(drone_stateestimation ${PTAM_LIBRARIES} ${catkin_LIBRARIES})
add_dependencies(drone_stateestimation thirdparty ${PROJECT_NAME}_gencpp ${PROJECT_NAME}_gencfg)

# ------------------------- autopilot & KI -----------------------------------------
# set header ans source files
#set(AUTOPILOT_SOURCE_FILES         
#   src/autopilot/main_autopilot.cpp  
#   src/autopilot/ControlNode.cpp
#   src/autopilot/DroneController.cpp
#   src/autopilot/KI/KILand.cpp
#   src/autopilot/KI/KIAutoInit.cpp
#   src/autopilot/KI/KIFlyTo.cpp
#)
#set(AUTOPILOT_HEADER_FILES        
#   src/autopilot/ControlNode.h
#   src/autopilot/DroneController.h
#   src/autopilot/KI/KILand.h
#   src/autopilot/KI/KIAutoInit.h
#   src/autopilot/KI/KIFlyTo.h
#   src/autopilot/KI/KIProcedure.h
#)

# build!
#add_executable(drone_autopilot ${AUTOPILOT_SOURCE_FILES} ${AUTOPILOT_HEADER_FILES})
#target_link_libraries(drone_autopilot ${catkin_LIBRARIES})
#add_dependencies(drone_autopilot thirdparty ${PROJECT_NAME}_gencpp ${PROJECT_NAME}_gencfg)

# ---------------------------- GUI --------------------------------------------------
# set header ans source files
#set(GUI_SOURCE_FILES         
#   src/UINode/main_GUI.cpp  
#   src/UINode/tum_ardrone_gui.cpp  
#   src/UINode/RosThread.cpp  
#   src/UINode/PingThread.cpp  
#)

#set(GUI_HEADER_FILES        
#   src/UINode/tum_ardrone_gui.h 
#   src/UINode/RosThread.h  
#   src/UINode/PingThread.h  
#)

# *.ui
#set(GUI_UI_FILES        
#   src/UINode/tum_ardrone_gui.ui 
#)

# *.qrc
#set(GUI_RESOURCE_FILES        
#)

# do QT stuff
#ADD_DEFINITIONS( -Wall )
#find_package(Qt4 REQUIRED)
#include(${QT_USE_FILE})
#QT4_ADD_RESOURCES(GUI_RESOURCE_FILES_CPP ${GUI_RESOURCE_FILES})
#QT4_WRAP_UI(GUI_UI_FILES_HPP ${GUI_UI_FILES})
#QT4_WRAP_CPP(GUI_HEADER_FILES_HPP ${GUI_HEADER_FILES})
#include_directories(${CMAKE_CURRENT_BINARY_DIR})

# build!
#add_executable(drone_gui ${GUI_SOURCE_FILES} ${GUI_RESOURCE_FILES_CPP} ${GUI_UI_FILES_HPP} ${GUI_HEADER_FILES_HPP})
#target_link_libraries(drone_gui ${QT_LIBRARIES} cvd ${catkin_LIBRARIES})
#add_dependencies(drone_gui thirdparty ${PROJECT_NAME}_gencpp ${PROJECT_NAME}_gencfg)

Asked by dshimano on 2015-07-06 14:23:21 UTC

Comments

Answers

This happens to me especially when I add a new package and build it, then it could be that it is not in the index.

Try rospack find ptam or roscd ptam ... and then rosrun ptam and double tab

If you want to know if the executable has been built, check the devel/lib/ptam directory in your workspace there you should find the executable drone_stateestimation

Asked by cyborg-x1 on 2015-07-07 07:24:07 UTC

Comments

Hi, Thanks for your answer. I can find the executable in devel/lib/ptam like you said, and it runs fine if I launch it as an executable, but rosrun still doesn't work. I can go to the ptam folder, but when I do rosrun double tab, nothing there, and rosrun ptam drone_stateestimation gets an error...

Asked by dshimano on 2015-07-07 09:28:28 UTC

What you could also try is, deleting devel and build folder and do catkin_make again, sometimes it also got messed up for me somehow. Actually I have my own build command which, always deletes build and devel. Afterwards source /opt/ros/indigo/setup.bash and devel/setup.bash again... and try.

Asked by cyborg-x1 on 2015-07-07 12:41:16 UTC

Oh and I just saw something unusual, maybe try to comment those ...

set_target_properties(drone_stateestimation PROPERTIES COMPILE_FLAGS "-D_LINUX -D_REENTRANT -Wall  -O3 -march=nocona -msse3") 

especially -march could be interesting...

-> https://wiki.gentoo.org/wiki/GCC_optimization

Asked by cyborg-x1 on 2015-07-07 12:44:58 UTC