免费html5中文网站素材,黄山手机网站建设公司排名,wordpress主题在线编辑,wordpress背景偏暗文章目录 前言一、初识ROS21.ROS简介2.ROS系统框架 二、ROS2创建节点(CPP)1.创建工作空间2.创建功能包3.创建节点4.配置CMakeLists5.编译运行节点#x1f353;编译节点#x1f34a;source环境#x1f34e; 运行节点 报错解决 三、ROS2常用指令1.ros2 pkg create2.ros2 pkg l… 文章目录 前言一、初识ROS21.ROS简介2.ROS系统框架 二、ROS2创建节点(CPP)1.创建工作空间2.创建功能包3.创建节点4.配置CMakeLists5.编译运行节点编译节点source环境 运行节点 报错解决 三、ROS2常用指令1.ros2 pkg create2.ros2 pkg list3.ros2 pkg executables4.点运行工具 ros2 run5.ros2 node list6.ros2 node info 结束语 个人主页:风间琉璃 版权: 本文由【风间琉璃】原创、在CSDN首发、需要转载请联系博主 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦 前言 一、初识ROS2
待定…
1.ROS简介 ROSRobot Operating System是一个开源的机器人操作系统框架最初由Willow Garage公司于2007年发起。ROS提供了一套工具和库用于构建和开发机器人应用程序。其特点包括基于消息传递的中间件、通信模型、工具集以及开源的性质。ROS的通信机制采用发布-订阅模型和服务调用使得不同组件节点能够实现信息交流。ROS在学术界和工业界都得到广泛应用但在大规模系统中可能存在通信效率和实时性方面的挑战。
ROS 2是ROS的下一代版本旨在解决ROS的一些限制和缺点。ROS 2保留了ROS的核心思想但进行了一些重大改进。ROS 2的特点包括更灵活的通信机制、更好的实时性能、支持多种中间件、更好的安全性和可扩展性等。ROS 2的发展旨在满足更广泛的应用需求包括工业自动化、军事应用等。它是一个更为先进、适用范围更广泛的机器人操作系统框架。 ROS 2被设计为兼容ROS并提供了平滑的过渡路径使得用户可以逐步迁移到ROS 2同时保留现有的ROS代码。
2.ROS系统框架
二、ROS2创建节点(CPP)
1.创建工作空间
节点需要存在于功能包当中功能包需要存在于工作空间当中因此想要想创建一个节点就必须先创建一个工作空间然后再创建功能包。本质上工作空间就是我们所熟知的文件夹。 mkdir -p node_test/src 2.创建功能包
进入src目录下创建example_cpp功能包使用ament-cmake作为编译类型并为其添加rclcpp依赖。 ros2 pkg create example_cpp --build-type ament_cmake --dependencies rclcpp 使用tree查看目录结构
ros2 pkg create 是用于在ROS 2中创建新包的命令。下面是该命令的主要参数以及它们的作用
ros2 pkg create package_name --build-type build_type --dependencies dependenciespackage_name: 指定功能包名称。替换package_name为你想要的包名称。–build-type build_type: 这个选项指定了包的构建系统类型。ROS 2支持不同的构建系统其中常见的选项包括 ament_cmake: 使用CMake作为构建系统。 ament_python: 使用Python作为构建系统。 ament_cmake_python: 使用CMake和Python混合作为构建系统。 –dependencies : 这个选项指定了新包的依赖项。你可以列出包需要依赖的其他ROS 2包以确保你的包能够使用它们的功能。在前面提到的例子中–dependencies rclcpp 表示新包依赖于 ROS 2 的 C 客户端库 rclcpp。
这些参数一起允许你根据你的项目需求创建具有适当构建系统和依赖项的ROS 2包。创建包后你可以在其中添加节点、服务、话题等ROS 2的组件从而构建你的机器人应用程序。
3.创建节点
接着在example_cpp/src下创建一个node1.cpp文件创建完成后的目录结构如下 编写ROS2节点的一般步骤 1.导入库文件 2. 初始化客户端库 3. 新建节点对象 4. spin循环节点 5. 关闭客户端库 node.cpp文件源程序
#include rclcpp/rclcpp.hpp // 1.导入库文件/*** brief 创建一个类节点名字叫做Node1, 继承自Node。* */
class Node1 : public rclcpp::Node
{
private:/* data */
public:Node1(std::string name) : Node(name){// 打印一句RCLCPP_INFO(this-get_logger(), 大家好我是%s.,name.c_str());}
};int main (int argc , char **argv)
{// 2. 初始化客户端库rclcpp::init(argc, argv);// 3.新建节点对象auto node std::make_sharedNode1(node5);RCLCPP_INFO(node-get_logger(), node5节点已经启动.);// 4.spin循环节点:运行节点并检测退出信号 CtrlCrclcpp::spin(node);// 5.关闭客户端库: 停止运行rclcpp::shutdown();return 0;
}4.配置CMakeLists
设置添加为可执行文件并使用install指令将其安装到install目录。
# 生产可执行程序
add_executable(nodes src/node.cpp)
ament_target_dependencies(nodes rclcpp)# 使用install指令将其安装到install目录
install(TARGETSnodesDESTINATION lib/${PROJECT_NAME}
)
5.编译运行节点
注意以下都是在node_test的工作空间下执行的。
编译节点
colcon build 是一个用于构建ROS 2工作区中所有包的命令。它是ColconCMake-based construction构建工具的一部分用于构建ROS 2项目。 colcon build 这个命令会在当前工作区中构建所有的ROS 2包。Colcon会检测工作区中的所有包解决它们之间的依赖关系并使用适当的构建系统比如CMake或者ament_cmake构建这些包。 在构建过程中Colcon会生成构建系统所需的构建文件编译源代码并生成可执行文件、库和其他构建产物。构建成功后就可以运行你的ROS 2节点或者其他组件。
source环境
当构建ROS 2软件包时构建工具Colcon会将构建输出编译生成的可执行文件、库等安装到一个目录中通常是 install 目录。然后通过运行 source install/setup.bash 命令可以将这些已经安装的软件包的路径添加到当前终端的环境变量中使得 ROS 2 系统能够找到这些软件包。 source install/setup.bash 运行节点
在运行 source install/setup.bash 后可以直接运行ROS 2软件包中的节点、服务等。注意这里的节点是在CMakeLists.txt中添加的可执行程序的名字的即可执行节点。 ros2 run example_cpp nodes 在程序中设置的节点名称是终端打印输出的。 ros2 run 是用于在ROS 2中运行可执行节点的命令。下面是该命令的结构和作用 ros2 run package_name executable_name package_name: 这是包含你要运行的节点的ROS 2功能包的名称。 executable_name: 这是要运行的节点的可执行文件的名称。
报错解决
rclcpp头文件找不到解决办法: 将鼠标放在报错的#include “-------------------” 处出现灯泡则点击灯泡图标或者出现快速修复则点击快速修复并保存然后修改如下文件添加rclcpp的文件路径/opt/*不同的版本第三个名字不同的 No module named catkin_pkg.package 解决文章链接No module named catkin_pkg.package
三、ROS2常用指令
1.ros2 pkg create
命令功能创建功能包指定包名、编译方式、依赖项、节点名等 命令格式ros2 pkg create package_name --build-type build_type --dependencies 具体参数作用参照前文。
2.ros2 pkg list
命令功能查看系统中功能包列表 命令格式ros2 pkg list
3.ros2 pkg executables
命令功能查看包内可执行文件列表 命令格式 ros2 pkg executables package_name
4.点运行工具 ros2 run
命令功能运行包内节点功能 命令格式ros2 run package_name node_name
5.ros2 node list
命令功能 查看当前域内ROS_DOMAIN_ID相同的节点组活动的节点列表 命令格式 ros2 node list
6.ros2 node info
命令功能 查看节点详细信息包括订阅、发布的消息开启的服务和动作等 命令格式ros2 node info node_name
结束语
感谢阅读吾之文章今已至此次旅程之终站 。
吾望斯文献能供尔以宝贵之信息与知识也 。
学习者之途若藏于天际之星辰吾等皆当努力熠熠生辉持续前行。
然而如若斯文献有益于尔何不以三连为礼点赞、留言、收藏 - 此等皆以证尔对作者之支持与鼓励也 。