ROS简单节点demo(C++)
下面是一个简单的 ROS 1 demo,包括创建一个 Catkin 工作空间、创建一个 ROS 节点以发布一个字符串消息到一个话题上,并创建一个订阅器来接收并打印这个消息。这个 demo 包含两个文件:CMakeLists.txt 和 talker_listener_demo.cpp。
首先,创建一个 Catkin 工作空间:
- 打开终端。
- 运行以下命令,创建一个名为
catkin_ws的 Catkin 工作空间:1
2
3mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace
接下来,创建 ROS 节点和订阅器的源文件:
在
~/catkin_ws/src目录下创建一个名为talker_listener_demo的包,并进入该目录:1
2
3cd ~/catkin_ws/src
catkin_create_pkg talker_listener_demo roscpp std_msgs
cd talker_listener_demo在
talker_listener_demo包中创建一个名为talker_listener_demo.cpp的 C++ 源文件,并在其中添加以下代码:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
// 回调函数,用于处理接收到的消息
void chatterCallback(const std_msgs::String::ConstPtr& msg)
{
ROS_INFO("I heard: [%s]", msg->data.c_str());
}
int main(int argc, char **argv)
{
// 初始化 ROS 节点
ros::init(argc, argv, "talker_listener_demo");
// 创建节点句柄
ros::NodeHandle n;
// 创建一个发布者,用于向 "chatter" 话题发布字符串消息
ros::Publisher chatter_pub = n.advertise<std_msgs::String>("chatter", 1000);
// 创建一个订阅器,用于订阅 "chatter" 话题的消息,并调用回调函数进行处理
ros::Subscriber sub = n.subscribe("chatter", 1000, chatterCallback);
// 定义一个循环,发布消息并休眠一段时间
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;
}确保
CMakeLists.txt文件包含以下内容:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23cmake_minimum_required(VERSION 2.8.3)
project(talker_listener_demo)
## 找到 catkin 并包含设置好的功能
find_package(catkin REQUIRED COMPONENTS
roscpp
std_msgs
)
## 包含 catkin 工程设置的头文件和库
catkin_package(
CATKIN_DEPENDS roscpp std_msgs
)
## 添加包含目录
include_directories(
${catkin_INCLUDE_DIRS}
)
## 添加可执行文件
add_executable(talker_listener_demo src/talker_listener_demo.cpp)
## 链接库
target_link_libraries(talker_listener_demo ${catkin_LIBRARIES})构建 Catkin 工作空间:
1
2cd ~/catkin_ws
catkin_make
现在,您已经成功创建了一个简单的 ROS 节点和订阅器的 demo。要运行它,请执行以下步骤:
在一个终端中启动 ROS Master:
1
roscore
在另一个终端中运行
talker_listener_demo:1
2source ~/catkin_ws/devel/setup.bash
rosrun talker_listener_demo talker_listener_demo
您将会看到一个发布者不断地发布 “hello world” 消息,并且一个订阅器接收并打印这些消息。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Clang's Blog!
评论







