跳到主要内容

001.第一个Node节点

1.1 包和结点

简单地说, 一个包里面就含有一个或多个节点

1.2 创建包

命令格式

catkin_create_pkg <包名> <依赖项>
sh

示例:

~/catkin_ws/src$ catkin_create_pkg ssr_pkg rospy roscpp std_msgs
sh

可以看到, 创建了一个文件夹和 cmake 和 包信息.xml(类似于java的Maven)

loli@HengXin-ROG-PRIME:~/catkin_ws/src/ssr_pkg$ ll
total 28
drwxr-xr-x 3 loli loli 4096 Sep 19 15:27 include/
drwxr-xr-x 2 loli loli 4096 Sep 19 15:27 src/
-rw-r--r-- 1 loli loli 7052 Sep 19 15:27 CMakeLists.txt
-rw-r--r-- 1 loli loli 2860 Sep 19 15:27 package.xml
C++
  • 注: 我们可以使用
roscd <包名>
sh

跳转到系统安装的该ROS包的位置, 例如:

~/catkin_ws/src/ssr_pkg$ roscd roscpp
/opt/ros/noetic/share/roscpp$
sh

1.3 第一个ROS程序

在 src 里面 创建 chao_node.cpp 写入:

#include <ros/ros.h>

int main(int argc, char const *argv[]) {
printf("Hello 世界!\n");
return 0;
}
C++

然后在cmake末尾添加:

add_executable(chao_node src/chao_node.cpp)
cmake

编译后, 启动roscore, 就可以通过

rosrun <包名> <节点>
sh

如:

rosrun ssr_pkg chao_node

# 输出
Hello 世界!
sh

1.4 升级一下

#include <ros/ros.h>

int main(int argc, char *argv[]) {
ros::init(argc, argv, "chao_node");
printf("Hello 世界!\n");
int i = 0;
while (true) { // 如果 ctrl + c 无法退出, 就换成 ros::ok()
printf("输出 %d\n", ++i);
}
return 0;
}
C++

cmake 需要链接:

add_executable(chao_node src/chao_node.cpp)
target_link_libraries(chao_node
${catkin_LIBRARIES}
)
cmake
请作者喝奶茶:
Alipay IconQR Code
Alipay IconQR Code
本文遵循 CC CC 4.0 BY-SA 版权协议, 转载请标明出处
Loading Comments...