11.初学ROS,年轻人的第一个Node节点
第一个note节点🎉
创建package软件包📦
-
cd catkin_ws/src
-
catkin_create_pkg ssr_pkg rospy ropcpp std_msgs
输出内容
前两个是文件,后两个是目录 -
什么是依赖项?
- 在管理节点时,关系紧密的节点会被放在一个 package 中,就像一个家庭 👨👩👧。
- 但有些“万能选手”节点(比如消息类型、工具库)会被多个 package 使用,这些就是依赖项 🌟。
一些文件和包名解释 :
-
解释rospy ropcpp std_msgs
-
rospy:Python 的 ROS 接口 🐍,适合快速开发。
-
roscpp:C++ 的 ROS 接口 💻,性能更强。
-
std_msgs:标准消息类型,用于节点间传递数据 📨,比如传递速度或坐标。
-
package.xml:描述 package 的“身份证”(名称、版本、依赖项等) 🖋️。
-
CMakeLists.txt:编译的“说明书” 📖。
-
include 和 src 目录:存放头文件和源代码的“工具箱” 🗃️。
-
运行程序:roscd ssr_pkg ,进入ssr_pkg目录
对于 /opt/ros/noetic/share 中的包,都是执行文件,我们可以直接使用。不需要安装。
而对于工作空间中 catkin_ws/src 中的包,都是源码文件,我们需要编译。
对于. bashrc 中 我们设置的source setup.bash文件, 是ros的配置文件,加载我们的包。
创建 Node节点🛠️
- 在 src 目录下创建 chao_node.cpp 文件。
- 编写一个简单的 C++ 节点代码:
#include "ros/ros.h" //如果误报,删除 .vscode文件夹中c_cpp_properties.json文件中的includePath,然后重新打开vscode
int main(int argc, char **argv)
{
printf("hello world");
return 0;
}
编译 🔨
- 在 CMakeLists.txt 中添加:
add_executable(chao_node src/chao_node.cpp)
- 编译工作空间
- 快捷键:Ctrl + Shift + B(如果已设置) ⚡。
- 或终端命令
cd catkin_ws
catkin_make
运行节点🚀
- 在终端中输入:
- 启动 ROS 核心:roscore
- 设置环境变量(建议加到 .bashrc 中)
- source ~/catkin_ws/devel/setup. bash
- 打开一个新终端,运行节点:
- rosrun ssr_pkg chao_node
- rosrun ssr_pkg chao_node
ros节点的完善✨
- 节点初始化
在main函数中添加代码
ros::init(argc, argv, "chao_node");
在 CMakeLists.txt 中链接库
target_link_libraries(chao_node ${catkin_LIBRARIES})
- 思考🤔
- 节点运行后,去哪里了?
可以在main函数中添加while循环,让节点一直运行
- 节点运行后,去哪里了?
while (ros::ok())
{
printf("节点正在运行\n");
}
- 运行效果:
- 输入 rosrun ssr_pkg chao_node,节点会每秒打印 "节点正在运行",直到按 Ctrl + C 停止 ⏹️