Robotics StackExchange | Archived questions

rosmake error when writing a teleoperation node for a joystick?

Hi,

I am writing a teleoperation node for my joystick following http://www.ros.org/wiki/joy/Tutorials/WritingTeleopNode. When I rosmake the package, I got the errors:

tony@ubuntu:~/project/p3atjoy$ make [ 0%] Built target rospackgenmsglibexe [ 0%] Built target rosbuildpremsgsrvgen [ 0%] Built target ROSBUILDgenmsgcpp [ 0%] Built target ROSBUILDgenmsglisp [ 0%] Built target rospackgenmsg [ 0%] Built target rosbuildprecompile [100%] Building CXX object CMakeFiles/p3atjoy.dir/src/p3atjoystick.o In file included from /home/tony/project/p3atjoy/src/p3atjoystick.cpp:5: /opt/ros/cturtle/stacks/joystickdrivers/joy/msggen/cpp/include/joy/Joy.h:40: error: ‘ROSCPPDEPRECATED’ does not name a type /opt/ros/cturtle/stacks/joystickdrivers/joy/msggen/cpp/include/joy/Joy.h:41: error: ISO C++ forbids declaration of ‘ROSCPPDEPRECATED’ with no type /opt/ros/cturtle/stacks/joystickdrivers/joy/msggen/cpp/include/joy/Joy.h:41: error: expected ‘;’ before ‘void’ /opt/ros/cturtle/stacks/joystickdrivers/joy/msggen/cpp/include/joy/Joy.h:42: error: expected ‘;’ before ‘ROSCPPDEPRECATED’ /opt/ros/cturtle/stacks/joystickdrivers/joy/msggen/cpp/include/joy/Joy.h:42: error: ISO C++ forbids declaration of ‘ROSCPPDEPRECATED’ with no type /opt/ros/cturtle/stacks/joystickdrivers/joy/msggen/cpp/include/joy/Joy.h:42: error: expected ‘;’ before ‘void’ /opt/ros/cturtle/stacks/joystickdrivers/joy/msggen/cpp/include/joy/Joy.h:43: error: expected ‘;’ before ‘ROSCPPDEPRECATED’ /opt/ros/cturtle/stacks/joystickdrivers/joy/msggen/cpp/include/joy/Joy.h:43: error: ISO C++ forbids declaration of ‘ROSCPPDEPRECATED’ with no type /opt/ros/cturtle/stacks/joystickdrivers/joy/msggen/cpp/include/joy/Joy.h:43: error: expected ‘;’ before ‘void’ /opt/ros/cturtle/stacks/joystickdrivers/joy/msggen/cpp/include/joy/Joy.h:44: error: expected ‘;’ before ‘ROSCPPDEPRECATED’ /opt/ros/cturtle/stacks/joystickdrivers/joy/msggen/cpp/include/joy/Joy.h:44: error: ‘ROSCPPDEPRECATED’ does not name a type /opt/ros/cturtle/stacks/joystickdrivers/joy/msggen/cpp/include/joy/Joy.h:45: error: ISO C++ forbids declaration of ‘ROSCPPDEPRECATED’ with no type /opt/ros/cturtle/stacks/joystickdrivers/joy/msggen/cpp/include/joy/Joy.h:45: error: expected ‘;’ before ‘void’ /opt/ros/cturtle/stacks/joystickdrivers/joy/msggen/cpp/include/joy/Joy.h:46: error: expected ‘;’ before ‘ROSCPPDEPRECATED’ /opt/ros/cturtle/stacks/joystickdrivers/joy/msggen/cpp/include/joy/Joy.h:46: error: ISO C++ forbids declaration of ‘ROSCPPDEPRECATED’ with no type /opt/ros/cturtle/stacks/joystickdrivers/joy/msggen/cpp/include/joy/Joy.h:46: error: expected ‘;’ before ‘void’ /opt/ros/cturtle/stacks/joystickdrivers/joy/msggen/cpp/include/joy/Joy.h:47: error: expected ‘;’ before ‘ROSCPPDEPRECATED’ /opt/ros/cturtle/stacks/joystickdrivers/joy/msggen/cpp/include/joy/Joy.h:47: error: ISO C++ forbids declaration of ‘ROSCPPDEPRECATED’ with no type /opt/ros/cturtle/stacks/joystickdrivers/joy/msggen/cpp/include/joy/Joy.h:47: error: expected ‘;’ before ‘void’ /opt/ros/cturtle/stacks/joystickdrivers/joy/msggen/cpp/include/joy/Joy.h:48: error: expected ‘;’ before ‘private’ /opt/ros/cturtle/stacks/joystickdrivers/joy/msggen/cpp/include/joy/Joy.h:51: error: ISO C++ forbids declaration of ‘ROSCPPDEPRECATED’ with no type /opt/ros/cturtle/stacks/joystickdrivers/joy/msggen/cpp/include/joy/Joy.h:51: error: expected ‘;’ before ‘static’ /opt/ros/cturtle/stacks/joystickdrivers/joy/msggen/cpp/include/joy/Joy.h:53: error: expected ‘;’ before ‘ROSCPPDEPRECATED’ /opt/ros/cturtle/stacks/joystickdrivers/joy/msggen/cpp/include/joy/Joy.h:53: error: ISO C++ forbids declaration of ‘ROSCPPDEPRECATED’ with no type /opt/ros/cturtle/stacks/joystickdrivers/joy/msggen/cpp/include/joy/Joy.h:53: error: expected ‘;’ before ‘const’ /opt/ros/cturtle/stacks/joystickdrivers/joy/msggen/cpp/include/joy/Joy.h:55: error: expected ‘;’ before ‘private’ /opt/ros/cturtle/stacks/joystickdrivers/joy/msggen/cpp/include/joy/Joy.h:58: error: ISO C++ forbids declaration of ‘ROSCPPDEPRECATED’ with no type /opt/ros/cturtle/stacks/joystickdrivers/joy/msggen/cpp/include/joy/Joy.h:58: error: expected ‘;’ before ‘static’ /opt/ros/cturtle/stacks/joystickdrivers/joy/msggen/cpp/include/joy/Joy.h:60: error: expected ‘;’ before ‘ROSCPPDEPRECATED’ /opt/ros/cturtle/stacks/joystickdrivers/joy/msggen/cpp/include/joy/Joy.h:60: error: ISO C++ forbids declaration of ‘ROSCPPDEPRECATED’ with no type /opt/ros/cturtle/stacks/joystickdrivers/joy/msggen/cpp/include/joy/Joy.h:60: error: expected ‘;’ before ‘const’ /opt/ros/cturtle/stacks/joystickdrivers/joy/msggen/cpp/include/joy/Joy.h:62: error: expected ‘;’ before ‘private’ /opt/ros/cturtle/stacks/joystickdrivers/joy/msggen/cpp/include/joy/Joy.h:68: error: ISO C++ forbids declaration of ‘ROSCPPDEPRECATED’ with no type /opt/ros/cturtle/stacks/joystickdrivers/joy/msggen/cpp/include/joy/Joy.h:68: error: expected ‘;’ before ‘static’ /opt/ros/cturtle/stacks/joystickdrivers/joy/msggen/cpp/include/joy/Joy.h:70: error: expected ‘;’ before ‘ROSCPPDEPRECATED’ /opt/ros/cturtle/stacks/joystickdrivers/joy/msggen/cpp/include/joy/Joy.h:70: error: ISO C++ forbids declaration of ‘ROSCPPDEPRECATED’ with no type /opt/ros/cturtle/stacks/joystickdrivers/joy/msggen/cpp/include/joy/Joy.h:70: error: expected ‘;’ before ‘const’ /opt/ros/cturtle/stacks/joystickdrivers/joy/msggen/cpp/include/joy/Joy.h:72: error: expected ‘;’ before ‘ROSCPPDEPRECATED’ /opt/ros/cturtle/stacks/joystickdrivers/joy/msggen/cpp/include/joy/Joy.h:72: error: ISO C++ forbids declaration of ‘ROSCPPDEPRECATED’ with no type /opt/ros/cturtle/stacks/joystickdrivers/joy/msggen/cpp/include/joy/Joy.h:72: error: expected ‘;’ before ‘virtual’ /opt/ros/cturtle/stacks/joystickdrivers/joy/msggen/cpp/include/joy/Joy.h:80: error: expected ‘;’ before ‘ROSCPPDEPRECATED’ /opt/ros/cturtle/stacks/joystickdrivers/joy/msggen/cpp/include/joy/Joy.h:80: error: ISO C++ forbids declaration of ‘ROSCPPDEPRECATED’ with no type /opt/ros/cturtle/stacks/joystickdrivers/joy/msggen/cpp/include/joy/Joy.h:80: error: expected ‘;’ before ‘virtual’ /opt/ros/cturtle/stacks/joystickdrivers/joy/msggen/cpp/include/joy/Joy.h:88: error: expected ‘;’ before ‘ROSCPPDEPRECATED’ /opt/ros/cturtle/stacks/joystickdrivers/joy/msggen/cpp/include/joy/Joy.h:88: error: ISO C++ forbids declaration of ‘ROSCPPDEPRECATED’ with no type /opt/ros/cturtle/stacks/joystickdrivers/joy/msggen/cpp/include/joy/Joy.h:88: error: expected ‘;’ before ‘virtual’ /opt/ros/cturtle/stacks/joystickdrivers/joy/msggen/cpp/include/joy/Joy.h:96: error: expected ‘;’ before ‘typedef’ In file included from /usr/include/boost/function/functionbase.hpp:32, from /usr/include/boost/function/detail/prologue.hpp:17, from /usr/include/boost/function.hpp:24, from /opt/ros/diamondback/stacks/roscomm/clients/cpp/roscpp/include/ros/forwards.h:39, from /opt/ros/diamondback/stacks/roscomm/clients/cpp/roscpp/include/ros/common.h:37, from /opt/ros/diamondback/stacks/roscomm/clients/cpp/roscpp/include/ros/ros.h:43, from /home/tony/project/p3atjoy/src/p3atjoystick.cpp:3: /usr/include/boost/typetraits/alignmentof.hpp: In instantiation of ‘boost::detail::alignmentofhackjoy::Joy_<std::allocator<void > >’: /usr/include/boost/typetraits/alignmentof.hpp:71: instantiated from ‘const sizet boost::detail::alignmentofimpl<joy::Joystd::allocator<void > >::value’ /usr/include/boost/typetraits/alignmentof.hpp:89: instantiated from ‘boost::alignmentof<joy::Joystd::allocator<void > >’ /usr/include/boost/smartptr/makeshared.hpp:41: instantiated from ‘boost::detail::spmsdeleterjoy::Joy_<std::allocator<void > >’ /usr/include/boost/smartptr/makeshared.hpp:102: instantiated from ‘boost::sharedptr boost::makeshared() [with T = joy::Joystd::allocator<void >]’ /opt/ros/diamondback/stacks/roscomm/clients/cpp/roscpp/include/ros/messageevent.h:54: instantiated from ‘boost::sharedptr ros::DefaultMessageCreator::operator()() [with M = joy::Joystd::allocator<void >]’ /usr/include/boost/function/functiontemplate.hpp:132: instantiated from ‘static R boost::detail::function::functionobjinvoker0::invoke(boost::detail::function::functionbuffer&) [with FunctionObj = ros::DefaultMessageCreator<joy::Joystd::allocator<void > >, R = boost::sharedptr<joy::Joystd::allocator<void > >]’ /usr/include/boost/function/functiontemplate.hpp:913: instantiated from ‘void boost::function0::assignto(Functor) [with Functor = ros::DefaultMessageCreatorjoy::Joy_<std::allocator<void > >, R = boost::sharedptr<joy::Joystd::allocator<void > >]’ /usr/include/boost/function/functiontemplate.hpp:722: instantiated from ‘boost::function0::function0(Functor, typename boost::enableifc<boost::typetraits::icenot::value, int>::type) [with Functor = ros::DefaultMessageCreator<joy::Joystd::allocator<void > >, R = boost::sharedptr<joy::Joystd::allocator<void > >]’ /usr/include/boost/function/functiontemplate.hpp:1064: instantiated from ‘boost::function::function(Functor, typename boost::enableifc<boost::typetraits::icenot::value, int>::type) [with Functor = ros::DefaultMessageCreator<joy::Joystd::allocator<void > >, R = boost::sharedptr<joy::Joystd::allocator<void > >]’ /opt/ros/diamondback/stacks/roscomm/clients/cpp/roscpp/include/ros/nodehandle.h:391: instantiated from ‘ros::Subscriber ros::NodeHandle::subscribe(const std::string&, uint32t, void (T::*)(const boost::sharedptr&), T, const ros::TransportHints&) [with M = joy::Joystd::allocator<void >, T = TeleopTurtle]’ /home/tony/project/p3atjoy/src/p3atjoystick.cpp:40: instantiated from here /usr/include/boost/typetraits/alignmentof.hpp:42: error: cannot declare field ‘boost::detail::alignmentofhack<joy::Joystd::allocator<void > >::t’ to be of abstract type ‘joy::Joystd::allocator<void >’ /opt/ros/cturtle/stacks/joystickdrivers/joy/msggen/cpp/include/joy/Joy.h:18: note: because the following virtual functions are pure within ‘joy::Joystd::allocator<void >’: /opt/ros/diamondback/stacks/roscomm/clients/cpp/roscpp/include/ros/message.h:60: note: virtual const std::string ros::Message::getDataType() const /opt/ros/diamondback/stacks/roscomm/clients/cpp/roscpp/include/ros/message.h:61: note: virtual const std::string ros::Message::getMD5Sum() const /opt/ros/diamondback/stacks/ros_comm/clients/cpp/roscpp/include/ros/message.h:62: note: virtual const std::string ros::Message::getMessageDefinition() const /opt/ros/diamondback/stacks/roscomm/clients/cpp/roscpp/include/ros/message.h:66: note: virtual uint32t ros::Message::serializationLength() const /opt/ros/diamondback/stacks/roscomm/clients/cpp/roscpp/include/ros/message.h:67: note: virtual uint8t ros::Message::serialize(uint8t*, uint32t) const /opt/ros/diamondback/stacks/roscomm/clients/cpp/roscpp/include/ros/message.h:68: note: virtual uint8t* ros::Message::deserialize(uint8t*) In file included from /usr/include/boost/makeshared.hpp:15, from /opt/ros/diamondback/stacks/roscomm/clients/cpp/roscpp/include/ros/messageevent.h:44, from /opt/ros/diamondback/stacks/roscomm/clients/cpp/roscpp/include/ros/parameteradapter.h:32, from /opt/ros/diamondback/stacks/roscomm/clients/cpp/roscpp/include/ros/subscriptioncallbackhelper.h:34, from /opt/ros/diamondback/stacks/roscomm/clients/cpp/roscpp/include/ros/subscriber.h:32, from /opt/ros/diamondback/stacks/roscomm/clients/cpp/roscpp/include/ros/nodehandle.h:33, from /opt/ros/diamondback/stacks/roscomm/clients/cpp/roscpp/include/ros/ros.h:45, from /home/tony/project/p3atjoy/src/p3atjoystick.cpp:3: /usr/include/boost/smartptr/makeshared.hpp: In function ‘boost::sharedptr boost::makeshared() [with T = joy::Joystd::allocator<void >]’: /opt/ros/diamondback/stacks/roscomm/clients/cpp/roscpp/include/ros/messageevent.h:54: instantiated from ‘boost::sharedptr ros::DefaultMessageCreator::operator()() [with M = joy::Joystd::allocator<void >]’ /usr/include/boost/function/functiontemplate.hpp:132: instantiated from ‘static R boost::detail::function::functionobjinvoker0::invoke(boost::detail::function::functionbuffer&) [with FunctionObj = ros::DefaultMessageCreatorjoy::Joy_<std::allocator<void > >, R = boost::sharedptr<joy::Joystd::allocator<void > >]’ /usr/include/boost/function/functiontemplate.hpp:913: instantiated from ‘void boost::function0::assignto(Functor) [with Functor = ros::DefaultMessageCreatorjoy::Joy_<std::allocator<void > >, R = boost::sharedptr<joy::Joystd::allocator<void > >]’ /usr/include/boost/function/functiontemplate.hpp:722: instantiated from ‘boost::function0::function0(Functor, typename boost::enableifc<boost::typetraits::icenot::value, int>::type) [with Functor = ros::DefaultMessageCreator<joy::Joystd::allocator<void > >, R = boost::sharedptr<joy::Joystd::allocator<void > >]’ /usr/include/boost/function/functiontemplate.hpp:1064: instantiated from ‘boost::function::function(Functor, typename boost::enableifc<boost::typetraits::icenot::value, int>::type) [with Functor = ros::DefaultMessageCreator<joy::Joystd::allocator<void > >, R = boost::sharedptr<joy::Joystd::allocator<void > >]’ /opt/ros/diamondback/stacks/roscomm/clients/cpp/roscpp/include/ros/nodehandle.h:391: instantiated from ‘ros::Subscriber ros::NodeHandle::subscribe(const std::string&, uint32t, void (T::*)(const boost::sharedptr&), T, const ros::TransportHints&) [with M = joy::Joystd::allocator<void >, T = TeleopTurtle]’ /home/tony/project/p3atjoy/src/p3atjoystick.cpp:40: instantiated from here /usr/include/boost/smartptr/makeshared.hpp:108: error: cannot allocate an object of abstract type ‘joy::Joystd::allocator<void >’ /opt/ros/cturtle/stacks/joystickdrivers/joy/msggen/cpp/include/joy/Joy.h:18: note: since type ‘joy::Joy_std::allocator<void >’ has pure virtual functions make[2]: ** [CMakeFiles/p3atjoy.dir/src/p3atjoystick.o] Error 1 make[1]: *** [CMakeFiles/p3at_joy.dir/all] Error 2 make: *** [all] Error 2

I cannot figure out where the errors are coming from. Any idea on this problem? The Ubuntu version is 10.04 and the ROS version is cturtle.

Asked by tony on 2012-04-09 01:28:32 UTC

Comments

The tutorial assumes you are using diamondback or electric. Is there a particular reason why you are using a seriously outdated ROS version?

Asked by roehling on 2012-04-09 02:44:15 UTC

Answers