首页 > 其他分享 >【ROS教程】ROS文件系统和基础架构

【ROS教程】ROS文件系统和基础架构

时间:2024-08-28 13:36:45浏览次数:3  
标签:catkin roscpp -- 文件系统 目录 基础架构 ROS 节点

@

目录


1.工作空间目录

在这里插入图片描述

WorkSpace --- 自定义的工作空间

    |--- build:编译空间,用于存放CMake和catkin的缓存信息、配置信息和其他中间文件。

    |--- devel:开发空间,用于存放编译后生成的目标文件,包括头文件、动态&静态链接库、可执行文件等。

    |--- src:源码

        |-- package:功能包(ROS基本单元)包含多个节点、库与配置文件,包名所有字母小写,只能由字母、数字与下划线组成

            |-- CMakeLists.txt:配置编译规则,比如源文件、依赖项、目标文件

            |-- package.xml:包信息,比如:包名、版本、作者、依赖项...(以前版本是 manifest.xml)

            |-- scripts:存储python文件

            |-- src:存储C++源文件

            |-- include:头文件

            |-- msg:消息通信格式文件

            |-- srv:服务通信格式文件

            |-- action:动作格式文件

            |-- launch:可一次性运行多个节点 

            |-- config:配置信息

            |-- CMakeLists.txt:编译的基本配置

1.1 package.xml

  • 固定格式
<?xml version="1.0"?>
<!-- 格式: 以前是 1,推荐使用格式 2 -->
<package format="2">
  <!-- 包名 -->
  <name><the name of package></name>
  <!-- 版本 -->
  <version>0.0.0</version>
  <!-- 描述信息 -->
  <description>The <the name of package> package</description>

  <!-- One maintainer tag required, multiple allowed, one person per tag -->
  <!-- Example:  -->
  <!-- <maintainer email="[email protected]">Jane Doe</maintainer> -->
  <!-- 维护人员 -->
  <maintainer email="*">XXX</maintainer>


  <!-- One license tag required, multiple allowed, one license per tag -->
  <!-- Commonly used license strings: -->
  <!--   BSD, MIT, Boost Software License, GPLv2, GPLv3, LGPLv2.1, LGPLv3 -->
  <!-- 许可证信息,ROS核心组件默认 BSD -->
  <license>TODO</license>


  <!-- Url tags are optional, but multiple are allowed, one per tag -->
  <!-- Optional attribute type can be: website, bugtracker, or repository -->
  <!-- Example: -->
  <!-- <url type="website">http://wiki.ros.org/demo01_hello_vscode</url> -->


  <!-- Author tags are optional, multiple are allowed, one per tag -->
  <!-- Authors do not have to be maintainers, but could be -->
  <!-- Example: -->
  <!-- <author email="[email protected]">Jane Doe</author> -->


  <!-- The *depend tags are used to specify dependencies -->
  <!-- Dependencies can be catkin packages or system dependencies -->
  <!-- Examples: -->
  <!-- Use depend as a shortcut for packages that are both build and exec dependencies -->
  <!--   <depend>roscpp</depend> -->
  <!--   Note that this is equivalent to the following: -->
  <!--   <build_depend>roscpp</build_depend> -->
  <!--   <exec_depend>roscpp</exec_depend> -->
  <!-- Use build_depend for packages you need at compile time: -->
  <!--   <build_depend>message_generation</build_depend> -->
  <!-- Use build_export_depend for packages you need in order to build against this package: -->
  <!--   <build_export_depend>message_generation</build_export_depend> -->
  <!-- Use buildtool_depend for build tool packages: -->
  <!--   <buildtool_depend>catkin</buildtool_depend> -->
  <!-- Use exec_depend for packages you need at runtime: -->
  <!--   <exec_depend>message_runtime</exec_depend> -->
  <!-- Use test_depend for packages you need only for testing: -->
  <!--   <test_depend>gtest</test_depend> -->
  <!-- Use doc_depend for packages you need only for building documentation: -->
  <!--   <doc_depend>doxygen</doc_depend> -->
  <!-- 依赖的构建工具,这是必须的 -->
  <buildtool_depend>catkin</buildtool_depend>

  <!-- 指定构建此软件包所需的软件包 -->
  <build_depend>roscpp</build_depend>
  <build_depend>rospy</build_depend>
  <build_depend>std_msgs</build_depend>

  <!-- 指定根据这个包构建库所需要的包 -->
  <build_export_depend>roscpp</build_export_depend>
  <build_export_depend>rospy</build_export_depend>
  <build_export_depend>std_msgs</build_export_depend>

  <!-- 运行该程序包中的代码所需的程序包 -->  
  <exec_depend>roscpp</exec_depend>
  <exec_depend>rospy</exec_depend>
  <exec_depend>std_msgs</exec_depend>


  <!-- The export tag contains other, unspecified, tags -->
  <export>
    <!-- Other tools can request additional information be placed here -->

  </export>
</package>

2.启动节点的方式

2.1 一次启动一个

rosrun <the name of package> <the name of executable file>
  • executable file:对于C语言,这个文件就是CMakeLists.txt中用add_executable生成的可执行文件;对于python,这个文件就是CMakeLists.txt中用catkin_install_python指向的文件

对应语法:

add_executable(<the name of executable file>
               src/<the name of the source>.cpp
              )
catkin_install_python(PROGRAMS scripts/<the name of the source>.py
                      DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
                     )

2.2 一次启动多个

如果想要一次性启动一个包里的多个节点,而不是一行行地输入rosrun指令...

  • 我们需要一个launch文件,它的固定格式是这样的:
<launch>
    <node pkg="helloworld" type="demo_hello" name="hello" output="screen" />
    <node pkg="turtlesim" type="turtlesim_node" name="t1"/>
    <node pkg="turtlesim" type="turtle_teleop_key" name="key1" />
</launch>
  • node:包含的某个节点
  • pkg:功能包
  • type:被运行的节点文件
  • name:为节点命名
  • output:设置日志的输出目标

然后,在终端输入:

roslaunch <the name of package> <the name of launch file>

3.ROS常用命令

3.1 增

创建新的ROS功能包:

catkin_create_pkg 自定义包名 依赖包

3.2 查

列出所有功能包:

rospack list

查找某个功能包是否存在,如果存在返回安装路径:

rospack find 包名

3.3 执行

3.3.1 加载环境变量

先进入工作目录,然后:

source ./devel/setup.bash

3.3.2 运行节点

roscore:ROS的系统先决条件节点和程序的集合,必须运行 roscore 才能使 ROS 节点进行通信。新开一个终端并输入

roscore #用法一
roscore -p xxxx #用法二,指定端口号

roscore 将启动:

  • ros master
  • ros 参数服务器
  • rosout 日志节点

3.4 查看计算图

在节点正在运行的情况下,终端输入:

rosrun rqt_graph rqt_graph

在这里插入图片描述

4.创建功能包

4.1 选择工作目录

首先,选择一个路径作为工作目录。这里我选择了如下路径作为工作目录
在这里插入图片描述

4.2 创建功能包目录

mkdir src

然后,在工作空间目录下

catkin_make

src目录下会多出一个锁定的CMakeLists.txt文件,不用管它。

4.3 建立功能包

先进入src目录

cd src

然后使用ROS提供的指令直接创建功能包即可:

catkin_create_pkg <the name of your package> roscpp rospy std_msgs message_generatio

roscpp、rospy、std_msgs、message_generatio是你所需要的依赖,你可以自由决定想要哪些依赖

本文由博客一文多发平台 OpenWrite 发布!

标签:catkin,roscpp,--,文件系统,目录,基础架构,ROS,节点
From: https://www.cnblogs.com/UnderTurrets/p/18384493

相关文章

  • CrossEntropy Loss 计算实例讲解
    CrossEntropyLoss整个计算过程前提条件:分类标签labels和模型输出结果outputs=model(inputs)outputs为一个未经过softmax的logits向量......
  • C# reflection pros and cons
    Copyfrom https://www.erikzhou.com/blogs/reflection_in_csharp/ ProsandConsofReflectionReflectionisapowerfultool,butitcomeswithitsownsetofadvantagesanddisadvantages.Let’sexploretheprosandconsofusingreflectioninC#.ProsDy......
  • 【数字时序】SI(信号完整性分析)/Cross talk(串扰)/Delta delay/噪声/消除delay和噪声
    之前分享的那一篇感觉理论太多了这一篇感觉更好,数字后端的带概念带数据还带经验指导,转过来收藏一哈。目录一、Crosstalk1.CrosstalkDelayEffects​编辑2.CrosstalkNoiseEffects​编辑二、CrosstalkAnalysis​编辑1.CrosstalkDelayAnalysis2.CrosstalkNois......
  • 【ROS教程】ROS常用命令
    @目录1.rosnode1.1rosnodeping1.1.1测试所有节点的连接状态1.1.2测试到某个节点的连接状态1.2rosnodelist1.3rosnodeinfo1.4rosnodemachine1.4.1列出所有设备1.4.2查看指定设备上的运行节点1.5rosnodekill1.5.1结束所有节点进程1.5.2列出所有节点并选择要结束进程......
  • C# COM interact with Excel via Com Microsoft.Office.Interop.Excel,write content
    1.AddComReference,Microsoft.Office.Interop.Excel  2.usingMicrosoft.Office.Interop.Excel;usingSystem;usingSystem.IO;usingSystem.Runtime.CompilerServices;usingExcel=Microsoft.Office.Interop.Excel;usingSystem.Reflection;namespaceConsol......
  • [1047] AWS S3 bucket owner granting cross-account bucket permissions
    ref:Bucketownergrantingcross-accountbucketpermissionsPreparingforthewalkthroughStep1:DotheAccountAtasksStep2:DotheAccountBtasksStep3:(Optional)TryexplicitdenyStep4:Cleanup......
  • 【ROS教程】ROS常用API讲解
    @目录1.节点初始化2.话题通信2.1创建发布者对象2.2消息发布2.3创建订阅者对象3.服务通信3.1创建服务对象3.2创建客户对象3.3客户发送请求3.4客户对象等待服务4.回旋函数4.1spin4.2spinOnce5.时间5.1时刻5.1.1获取当前时刻5.1.2设置时刻5.2时间间隔5.2.1设置时间间......
  • AI工业ros机械臂
    1、基本介绍该产品是一款面向于人工智能、机器人工程等专业的实验平台,能够学习基于人工智能技术的智能机器臂相关知识。主要由工业六轴机械臂、机械臂控制器、边缘计算主机、安全防护工作台四部分构成。该产品可完成的课程:机器视觉、机器人操作系统ROS等,同时也能够完成智能机......
  • (五)焊缝检测之--测量间距并用ROS消息包发送
    前言在上一小节记录了矩形参照物的检测。这一小节将介绍基于识别到的圆形焊缝和矩形参照物的坐标,读出两点之间在x和y方向上的间距,并通过话题通信的方式发送初期一、测量圆心和焊缝间距在之前小节中已经分别通过霍夫圆检测拿到了圆心坐标和矩形参照物角点坐标,分别将其记......
  • Microsoft Word使用公式字体Latin Modern Math时导出pdf显示异常
    MicrosoftWord使用公式字体LatinModernMath时导出pdf显示异常参考资料1问题描述将Word公式字体修改为LatinModernMath,另存为pdf,导出的pdf文件中公式字体为位图而非矢量图,且部分符号可能缺失。2问题原因安装的字体LatinModernMath为otf文件而非ttf文件,Word无法将字体......