11.初学ROS,年轻人的第一个Node节点

第一个note节点🎉

【11.初学ROS,年轻人的第一个Node节点】

创建package软件包📦

  • cd catkin_ws/src

  • catkin_create_pkg ssr_pkg rospy ropcpp std_msgs
    image.png|600
    输出内容
    image.png|600|600
    前两个是文件,后两个是目录

  • 什么是依赖项?

    • 在管理节点时,关系紧密的节点会被放在一个 package 中,就像一个家庭 👨‍👩‍👧。
    • 但有些“万能选手”节点(比如消息类型、工具库)会被多个 package 使用,这些就是依赖项 🌟。

    image.png|600

一些文件和包名解释 :

  • 解释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的配置文件,加载我们的包。
    image.png|600

创建 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
    image.png|600

运行节点🚀

  • 在终端中输入:
    • 启动 ROS 核心:roscore
    • 设置环境变量(建议加到 .bashrc 中)
      • source ~/catkin_ws/devel/setup. bash
    • 打开一个新终端,运行节点:
      • rosrun ssr_pkg chao_node
        image.png|600

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 停止 ⏹️

总结

image.png|600

posted @ 2025-04-03 10:32  边走边唱如诗如理想  阅读(40)  评论(0)    收藏  举报