int64 b int64 sum 1.3msg和srv都需要的步骤 接下来,在CMakeLists.txt中找到如下部分: generate messages( DEPENDENCIES #std msgs or other packages containing msgs #) 去掉注释并附加上所有你消息文件所依赖的那些含有.msg文件的package(这个例子 是依赖std_msgs,,不要添加roscpp,,rospy)),结果如下: generate messages( DEPENDENCIES std msgs 由于增加了新的消息,所以我们需要重新编译我们的package: In your catkin workspace $cd../.. catkin make $cd- 所有在msg路径下的.msg文件都将转换为ROS所支持语言的源代码。生成的C++ 头文件会放置在~/catkin ws/devel./include/topic service/。Python脚本语言会 ~/catkin ws/devel/lib/python2.7/dist-packages/topic_service/msg 录下创建。Iisp文件会出现在~/catkin ws/devel/share./common-lisp /ros/topic service./msg/路径下. 2. Topick的使用 2.1编写发布器节点 节点(Node)是指ROS网络中可执行文件。接下来,我们将会创建一个发布器节点 ('talker"),它将不断的在ROS网络中广播消息。 切换到之前创建的topic_.service package路径下: cd ~/catkin_ws/src/topic_service 源代码 在topic_.service package路径下创建一个src文件夹: -6-
- 6 - int64 b --- int64 sum 1.3msg 和 srv 都需要的步骤 接下来,在 CMakeLists.txt 中找到如下部分: # generate_messages( # DEPENDENCIES # # std_msgs # Or other packages containing msgs # ) 去掉注释并附加上所有你消息文件所依赖的那些含有.msg 文件的 package(这个例子 是依赖 std_msgs,不要添加 roscpp,rospy),结果如下: generate_messages( DEPENDENCIES std_msgs ) 由于增加了新的消息,所以我们需要重新编译我们的 package: # In your catkin workspace $ cd ../.. $ catkin_make $ cd - 所有在 msg 路径下的.msg 文件都将转换为 ROS 所支持语言的源代码。生成的 C++ 头文件会放置在~/catkin_ws/devel/include/topic_service/。Python 脚本语言会 在 ~/catkin_ws/devel/lib/python2.7/dist-packages/topic_service/msg 目 录下创建。 lisp 文件会出现在 ~/catkin_ws/devel/share/common-lisp /ros/topic_service/msg/ 路径下. 2. Topic的使用 2.1 编写发布器节点 节点(Node) 是指 ROS 网络中可执行文件。接下来,我们将会创建一个发布器节点 ("talker"),它将不断的在 ROS 网络中广播消息。 切换到之前创建的 topic_service package 路径下: cd ~/catkin_ws/src/topic_service 源代码 在 topic_service package 路径下创建一个 src 文件夹:
mkdir -p ~/catkin ws/src/topic service/src 这个文件夹将会用来放置topic_service package的所有源代码。 在topic_.service package里创建src/talker.cpp文件,并将如下代码粘贴到文件内: #include "ros/ros.h" #include "std msgs/string.h" #include <sstream> int main(int argc,char **argv) ros:init (argc,argv,"talker"); ros::NodeHandle n; ros:Publisher chatter pub=n.advertise<std msgs:String>("chatter", 1000): ros:Rate loop_rate(10); int count =0; while (ros:ok()) std_msgs:String msg; std:stringstream ssi ss <"hello world "<count; msg.data ss.str(); ROS INFO("&s",msg.data.c_str()); chatter pub.publish(msg); ros:spinonce(); loop_rate.sleep(); ++count; return 0; 分段解释代码。 #include "ros/ros.h" ros/xos.h是一个实用的头文件,它引用了ROS系统中大部分常用的头文件。 -7-
- 7 - mkdir -p ~/catkin_ws/src/topic_service/src 这个文件夹将会用来放置 topic_service package 的所有源代码。 在 topic_service package 里创建 src/talker.cpp 文件,并将如下代码粘贴到文件内: #include "ros/ros.h" #include "std_msgs/String.h" #include <sstream> int main(int argc, char **argv) { ros::init(argc, argv, "talker"); ros::NodeHandle n; ros::Publisher chatter_pub = n.advertise<std_msgs::String>("chatter", 1000); ros::Rate loop_rate(10); / int count = 0; while (ros::ok()) { std_msgs::String msg; std::stringstream ss; ss << "hello world " << count; msg.data = ss.str(); ROS_INFO("%s", msg.data.c_str()); chatter_pub.publish(msg); ros::spinOnce(); loop_rate.sleep(); ++count; } return 0; } 分段解释代码。 #include "ros/ros.h" ros/ros.h 是一个实用的头文件,它引用了 ROS 系统中大部分常用的头文件