ROS源代码阅读(1):找切入点

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()出发

  • 4
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值