rosrun Error even when package compiles successfully

Hi all! As seen from my previous posts, its been only about a month since I started using ROS. So pardon me if I am making any newbie error here.

I am trying to run a node on ros, but I am unable to do so. Here are the details:

package name: robot_node

ros version: ROS electric

Ubuntu version: Ubuntu Oneiric 32-bit

1) I opened a terminal and said

roscore

2) I went to the folder of the package and said rosmake

roscd robot_node

rosmake

This works perfectly fine. I am able to compile with 0 failures.

3) My executable is called 'robot_node.cpp' so I do the following

rosrun robot_node robot_node

And then, I get this 'error':

[rosrun] Couldn't find executable named robot_node below ~/ros_workspace/ROS/robot_node [rosrun] Found the following, but they're either not files, [rosrun] or not executable: [rosrun] ~/ros_workspace/ROS/robot_node

There are a few things you should know that I already tried. These are

1) I checked the CMakeLists.txt for the package, and it does have the add_executable line.

2)I compiled all the first dependencies of the package separately, and they all compiled perfectly with 0 failures.

3) robot_node.cpp does have a int main() routine. :P

Any kind of help is greatly appreciated. Thanks for your time!

edit retag close merge delete

( 2012-06-20 09:44:10 -0500 )edit

Sort by » oldest newest most voted

The output of make obviously shows an error, that's why no binary file is generated. The problem probably is your call to ADD_CUSTOM_COMMAND where you depend on another library. Did you check that the file libABBInterpreter.a really exists?

more

Hey dornhege, here are your answers: 1) This is the output when I say make

mkdir -p bin
cd build && cmake -Wdev -DCMAKE_TOOLCHAIN_FILE=rospack find rosbuild/rostoolchain.cmake  ..
[rosbuild] Building package robot_node
[rosbuild] Including /opt/ros/electric/stacks/ros_comm/clients/roslisp/cmake/roslisp.cmake
[rosbuild] Including /opt/ros/electric/stacks/ros_comm/clients/rospy/cmake/rospy.cmake
[rosbuild] Including /opt/ros/electric/stacks/ros_comm/clients/cpp/roscpp/cmake/roscpp.cmake
-- Configuring done
-- Generating done
CMake Warning:
Manually-specified variables were not used by the project:

CMAKE_TOOLCHAIN_FILE

-- Build files have been written to: /home/nishantabb/ros_workspace/ROS/robot_node/build
cd build && make
make[1]: Entering directory /home/nishantabb/ros_workspace/ROS/robot_node/build'
make[2]: Entering directory /home/nishantabb/ros_workspace/ROS/robot_node/build'
make[3]: Entering directory /home/nishantabb/ros_workspace/ROS/robot_node/build'
make[3]: Leaving directory /home/nishantabb/ros_workspace/ROS/robot_node/build'
make[3]: Entering directory /home/nishantabb/ros_workspace/ROS/robot_node/build'
make[3]: * No rule to make target ../../../ABBInterpreter/lib/libABBInterpreter.a', needed by libABBInterpreter.a'.  Stop.
make[3]: Leaving directory /home/nishantabb/ros_workspace/ROS/robot_node/build'
make[2]: * [CMakeFiles/makeABBLIB.dir/all] Error 2
make[2]: Leaving directory /home/nishantabb/ros_workspace/ROS/robot_node/build'
make[1]: * [all] Error 2
make[1]: Leaving directory /home/nishantabb/ros_workspace/ROS/robot_node/build'
make: * [all] Error 2


2) This is the CMakeLists.txt

cmake_minimum_required(VERSION 2.4.6)
include($ENV{ROS_ROOT}/core/rosbuild/rosbuild.cmake) rosbuild_init() #set the default path for built executables to the "bin" directory set(EXECUTABLE_OUTPUT_PATH${PROJECT_SOURCE_DIR}/bin)
#set the default path for built libraries to the "lib" directory
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib) set(ABB_PATH${PROJECT_SOURCE_DIR}/../../ABBInterpreter)

OUTPUT libABBInterpreter.a
COMMAND make -C ${ABB_PATH} DEPENDS${ABB_PATH}/lib/libABBInterpreter.a
)

#common commands for building c++ executables and libraries
#rosbuild_add_library(${PROJECT_NAME} src/example.cpp) #target_link_libraries(${PROJECT_NAME} another_library)
#rosbuild_link_boost(${PROJECT_NAME} thread) #rosbuild_add_executable(example examples/example.cpp) #target_link_libraries(example${PROJECT_NAME})

include_directories(${ABB_PATH}/include) link_directories(${ABB_PATH}/lib)



3) I checked the bin/ folder of the robot_node package. There seems to be nothing in it.

Question: How can I comment on your answer on this forum? It would be much easier than just creating a new answer altogether. Thanks!

more

2

You can update your original post by editing it. Regarding your problem check Lorenz' answer. There is a compilation error and thus no binary.

( 2012-06-20 10:13:03 -0500 )edit

Hey dornhege and Lorenz, So I was able to solve the problem. The primary error, as you guys pointed out, lied in this one line

It should have been

( 2012-06-21 10:44:12 -0500 )edit

Thanks for all your inputs! Also, just to make sure, I navigated to the ABBInterpreter folder and manually typed 'make' in the terminal just to make sure I had the libABBInterpreter.a file. Thank you guys once again :)

( 2012-06-21 10:46:50 -0500 )edit

My suspicion is that you are not compiling the program at all or as you think you do. So, answer the following questions:

• What is the output when you compile with rosmake and make?
• Is there a binary robot_node in your package (possibly in bin/)?
more