当前位置:   article > 正文

ROS2编译运行节点代码_ros2运行rosnode

ros2运行rosnode

系列文章目录

留空



前言

自用


一、编译的步骤

具体例子

#include "rclcpp/rclcpp.hpp"

class LearningNode : public rclcpp::Node
{

    public:
        LearningNode(std::string name) : Node(name)
        {
            RCLCPP_INFO(this->get_logger(),"节点%s已启动",name.c_str());
        }
    private:
        
};

int main(int argc,char** argv)
{
    rclcpp::init(argc,argv);
    auto node = std::make_shared<LearningNode>("wang2");
    rclcpp::spin(node);
    rclcpp::shutdown();
    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

在这里插入图片描述

1、编译节点

colcon build
  • 1

2、source环境

source install/setup.sh
  • 1

3、运行节点

ros2 run learning_node wang2_node
  • 1

二、扩展理解

1、colcon build

colcon buildROS 2中用来构建工作空间内所有软件包的命令。

为什么在vscode构建了软件包(例如例子中的"learning_node"),还要在ROS2中构建?

VSCode中构建learning_node软件包,就像你在家里用烤箱烤蛋糕一样。你是为了尝试新的配方,或者为了调试蛋糕的味道和质地。在VSCode这样的代码编辑器中,你可以更容易地查看和修改源代码,然后立即重新构建软件包来查看更改的效果。这非常适合开发和测试阶段。

而在终端中运行colcon build --packages-select learning_node,就像在工厂里大规模生产蛋糕一样。你已经有了确定的配方,并且想要批量制作蛋糕来供应给其他人。在ROS 2系统中使用colcon构建,是为了准备软件包,使其能够在实际的ROS 2环境中运行。这通常是在你完成了开发和测试,并准备将你的软件包与其他ROS 2节点或系统一起使用时进行的。

简单来说,VSCode中的构建是为了开发和调试,而终端中的colcon build是为了在实际ROS 2环境中准备和运行你的软件包。

你在VSCode这个编辑器里编写ROS2的C++代码,这个扩展可以让VSCode更好地支持ROS 2的开发,比如它能让你的代码有高亮的颜色,还可以在你打字时自动帮你补全代码。但这并不意味着你的C++代码就变成了ROS2的语言。它们仍然是C++代码,只是VSCode帮你更方便地写这些代码而已。

当你写好代码后,你需要用colcon这样的工具来编译这些代码,把它变成电脑可以运行的程序。colcon就像是一个厨师,把你的C++代码这个“食材”烹饪成一道可以吃的“菜”(也就是可以运行的程序)。

所以,安装VSCode的ROS 2扩展只是让你在编写代码时更方便,而真正的编译工作还是要靠colcon这样的工具来完成。

大概理解之后

我们可以在终端中输入命令行colcon build --help 获取关于colcon和其所有可用选项的完整文档。

colcon build --help
  • 1

常用的构建指令:

(1)colcon build

这个命令会检查你的工作空间(通常是一个文件夹,里面包含了多个ROS2软件包)中的每一个软件包,并尝试构建它们。如果你的工作空间里有很多软件包,而你只需要构建其中的一两个,那么这个命令可能会花费很长时间,因为它会构建工作空间所有的软件包。

(2)colcon build--packages-select <package-name>

这个命令允许你告诉 colcon只构建你指定的那个软件包,而不是整个工作空间中的所有软件包。
比如,如果你只想构建名为learning_node的软件包,你可以运行colcon build --packages-select learning_node。这样colcon就不会去构建其他你不关心的软件包,从而节省时间。

(3)colcon build--packages-up-to <package-name>

这个命令会构建你指定的软件包以及它所有依赖的软件包。
比如,如果你的my_robot_app软件包依赖于my_robot_drivermy_sensor_interface这两个软件包,那么你运行colcon build --packages-up-to my_robot_app时,colcon 会构建my_robot_appmy_robot_drivermy_sensor_interface 这三个软件包,但不会构建其他不相关的软件包。

简单来说,第一个命令构建所有,第二个命令只构建你指定的,第三个命令构建你指定的以及它依赖的所有软件包。这样,你就可以根据自己的需要选择合适的命令来构建ROS 2软件包,从而节省时间和计算资源。

2、source install/setup.sh

当你看到命令source install/setup.sh,这在ROS中是很常见的一个命令,用于设置环境变量,使得你能够在当前终端会话中使用ROS的功能。

用更通俗的话来说,这个命令做了以下几件事情:

加载环境变量: 这个命令让终端知道ROS2软件包安装在哪里,以及它们提供的各种工具、脚本和库文件在哪里。
准备使用ROS: 一旦你运行了这个命令,你就可以在终端里使用ROS的各种命令和工具了。
对当前终端有效: 这个命令只影响你当前打开的终端窗口。如果你打开了一个新的终端窗口,你需要再次运行这个命令,除非你使用了其他方法(比如修改你的shell配置文件)来让这个设置永久生效。
为了使用ROS,你通常需要在每次打开新的终端窗口时都运行这个命令,或者在启动计算机时自动运行它。这样做是为了确保你的终端会话知道如何找到和使用ROS的功能。

简单来说,source install/setup.sh这个命令就是在告诉你的终端:“嘿,我现在要使用ROS2了,帮我准备好环境吧!”

3、ros2 run learning_node wang2_node

这个命令是ROS2中的一个命令,用于运行一个特定的节点。

ros2 run <package_name> <node_name>
  • 1

ros2 run:这是ROS 2的一个命令,用于运行一个ROS 2节点。
learning_node:这是ROS 2软件包的名字。在ROS 2中,相关的代码和功能通常被组织成软件包。在这里,learning_node 可能是一个包含你想要运行的节点的软件包。
wang2_node:这是你想要运行的节点的名字。节点是ROS2中的一个概念,它通常代表了一个可以执行特定任务的进程或程序。在这个例子中,wang2_node 是learning_node软件包中的一个节点。

所以,当你执行ros2 run learning_node wang2_node这个命令时,你实际上是在告诉ROS2:“请在learning_node软件包中找到wang2_node节点,并运行它!”


总结

自用

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/727261
推荐阅读
相关标签
  

闽ICP备14008679号