Error while compiling a program to publish a string in a custom topic.
I'm trying to publish a string under the topic, name. But I'm getting compile error and I can't figure out where exactly the problem lies also. Could someone help me out. This is my pubname.cpp file.
#include <ros/ros.h>
#include <std_msgs/String.h>
int main(int argc, char **argv)
{
ros::init(argc,argv,"pubname"); //node name is pubname
ros::NodeHandle nh;
ros::Publisher pub = nh.advertise<std_msgs::String>("name",1000); //topic is name
ros::Rate rate(2);
while(ros::ok())
{
std_msgs::String msg("Patrick");
pub.publish(msg);
ROS_INFO_STREAM("Sending Name ");
rate.sleep();
}
}
This is my CMakeLists.txt,
cmake_minimum_required(VERSION 2.8.3)
project(assignment2)
find_package(catkin REQUIRED COMPONENTS roscpp std_msgs)
catkin_package()
include_directories(include ${catkin_INCLUDE_DIRS})
add_executable(pubname pubname.cpp)
target_link_libraries(pubname ${catkin_LIBRARIES})
Error:
Scanning dependencies of target pubname
[100%] Building CXX object assignment2/CMakeFiles/pubname.dir/pubname.cpp.o
/home/Patrick/ROSthings/Auro2/src/assignment2/pubname.cpp: In function ‘int main(int, char**)’:
/home/Patrick/ROSthings/Auro2/src/assignment2/pubname.cpp:16:39: error: no matching function for call to ‘std_msgs::String_<std::allocator<void> >::String_(const char [16])’
std_msgs::String msg("Patrick");
^
/home/Patrick/ROSthings/Auro2/src/assignment2/pubname.cpp:16:39: note: candidates are:
In file included from /home/Patrick/ROSthings/Auro2/src/assignment2/pubname.cpp:2:0:
/opt/ros/indigo/include/std_msgs/String.h:62:3: note: std_msgs::String_<ContainerAllocator>::String_(const ContainerAllocator&) [with ContainerAllocator = std::allocator<void>]
String_(const ContainerAllocator& _alloc)
^
/opt/ros/indigo/include/std_msgs/String.h:62:3: note: no known conversion for argument 1 from ‘const char [16]’ to ‘const std::allocator<void>&’
/opt/ros/indigo/include/std_msgs/String.h:59:3: note: std_msgs::String_<ContainerAllocator>::String_() [with ContainerAllocator = std::allocator<void>]
String_()
^
/opt/ros/indigo/include/std_msgs/String.h:59:3: note: candidate expects 0 arguments, 1 provided
/opt/ros/indigo/include/std_msgs/String.h:55:8: note: std_msgs::String_<std::allocator<void> >::String_(const std_msgs::String_<std::allocator<void> >&)
struct String_
^
/opt/ros/indigo/include/std_msgs/String.h:55:8: note: no known conversion for argument 1 from ‘const char [16]’ to ‘const std_msgs::String_<std::allocator<void> >&’
make[2]: *** [assignment2/CMakeFiles/pubname.dir/pubname.cpp.o] Error 1
make[1]: *** [assignment2/CMakeFiles/pubname.dir/all] Error 2
make: *** [all] Error 2
Invoking "make" failed
please post error message
hello, edited.