ROS源代码阅读(1):找切入点
来源:互联网 发布:淘宝店铺运营助手在哪 编辑:程序博客网 时间:2024/06/08 07:35
ROS机器人操作系统是一个机器人软件平台,它能为异质计算机集群提供类似操作系统的功能。
其源代码可以按照网页kinetic/Installation/Source中的步骤下载。
阅读ROS操作系统源代码,将代码下载下来后,需要找到一个切入点,层层深入阅读。
在ROS官网教程中,第一段示例应用代码如下,想以此为依据,找到解析ROS的切入点。
#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;}
上述代码一开始首先进行ROS环境的初始化,调用了ros::init()函数和创建了ros::NodeHandle类的对象。
ros::init(argc, argv, "talker"); ros::NodeHandle n;
从ROS官网教程中的示例代码可以看到,无论是创建消息发布/订阅者(publisher/subscriber)还是创建服务/客户节点(service and client),都需要使用这两行代码。因此,计划从这两行代码切入,对ROS进行解析。
经查看源代码,ros::init()函数和ros::NodeHandle类的定义,包括创建消息发布/订阅者(publisher/subscriber),还有创建服务/客户节点(service and client)相关的函数和类,都在源代码的
src/ros_comm/roscpp
目录下。文件夹结构如下:
.├── include│ └── ros│ └── transport├── msg├── rosbuild│ └── scripts├── src│ ├── libros│ │ └── transport│ └── roscpp└── srv
其中,include/ros目录下是关键的头文件,src/libros目录下是关键的.cpp文件。
后续,我将以ros::init()函数和ros::NodeHandle类为切入,逐步解析src/ros_comm/roscpp下的代码。
ros::init()的解析请关注下一篇博客ROS程序的初始化——从ros:init()出发
阅读全文
1 0
- ROS源代码阅读(1):找切入点
- ROS源代码阅读(2):ROS程序的初始化——从ros:init()出发
- ROS源代码阅读(5):ROS程序的初始化——对ros:init()的总结
- ROS源代码阅读(3):ROS程序的初始化——this_node::init()
- ROS源代码阅读(4):ROS程序的初始化——file_log::init()和param::init()
- Tomcat9源代码分析(一)-源码切入点
- 如何阅读源代码(1)
- Apache 源代码阅读(1)
- TLD matlab 源代码阅读(1)
- Lua-5.3.0源代码阅读(1)
- OS161 源代码阅读-1
- 源代码阅读技巧1
- quake源代码阅读分析(1)
- 阅读go语言源代码1
- ROHC源代码阅读日志(1)
- qlwm源代码阅读(一)
- Apache 源代码阅读(2)
- wpa_supplicant 2.0版源代码阅读(1) ---- wpa_supplicant简介
- list.set.map 补充说明
- 用链表实现栈(Java版)
- Centos7.3 搭建LAMP环境
- 婚纱照选场地
- java等各种语言数组排序方法
- ROS源代码阅读(1):找切入点
- C++中优先队列的使用
- P2746 [USACO5.3]校园网Network of Schools
- webpack(1):什么是webpack模块
- azure 最佳实践 -- 尽量使用托管服务
- 第三周项目1(3)
- win10 +ubuntu 16.0.4.3 双系统
- SpringCloud(第 006 篇)电影微服务,使用 Ribbon 在客户端进行负载均衡
- 追捕游戏 LCA