ROS学习笔记_01:工作空间及功能包

2023-05-16

1. ROS安装:

每个ROS版本对应一个Ubuntu版本

UBUNTUROSEnd of time
14.04 LTSindigo IglooApril,2019
16.04 LTSKinetic KameApril,2021
18.04 LTSMelodic MoreniaApril,2023
20.04 LTSNoetic Ninjemys
(Recommended)
April,2025

下一个ROS长期支持版本Humble Hawksbill将于2022年5月发布,对应Ubuntu 22.04 LTS。
官网:https://www.ros.org/

2. ROS构架:

ROS可以看作是一种中间件,沟通代码和真正的操作系统(如Linux)。
ROS由四部分组成:框架+工具+功能+社区

ROS中把进程或可执行文件称为节点(Node),如上图所示,有5个Node,通过节点管理器(master)进行通信。

3. ROS的工程结构:

一个典型的ROS工程结构如下图,包含 catkin workspace (Catkin 工作空间)package (功能包)
在这里插入图片描述
1. Catkin 工作空间

Catkin是ROS定制的编译构建系统,是对CMake的扩展,负责组织和管理功能包的文件夹,以catkin工具编译。在这里插入图片描述
目标文件包含:生成的头文件、动态链接库、静态链接库、可执行文件

其中,src是写代码的地方,是由我们自己创建的,可以放多个package,没有创建package前是空的。 在这里插入图片描述
2. package(功能包)

package(功能包) 是ROS的基本组织形式,也是Catkin的基本编译单元。一个package可以包含多个Node(节点)。Package的完整结构如下:
在这里插入图片描述

  • CMakeLists.txt(必须): 规定Catkin的编译规则

  • package.xml(必须): 自我描述,定义package的属性信息,如包名、版本、作者等。一般只需要改<build_depend>和<run_depend>就可以了。

  • scripts: 用于存放一些shell或python脚本

  • include: 源代码的头文件

  • src: 源代码,如cpp文件、py文件等

  • msg: 自定义消息格式,*.msg

  • srv: 自定义服务,*.srv

  • action: 自定义动作,*.action

  • config: 参数、设置文件等,如*.yaml

  • launch: 启动规则文件,*.launch,配合roslaunch命令可以一次运行多个可执行文件

3. ROS实践

1.创建工作空间

//打开终端
mkdir -p ~/catkin_ws/src  //创建~/catkin_ws/src目录
cd catkin_ws              //切换到工作空间根目录
catkin_make               //初始化工作空间

//作用:在当前bash环境下读取并执行FileName中的命令。
//这一步不要忘了,也可以添加到~/.bashrc,这样就不用每次打开都输入一遍
source ~/catkin_ws/devel/setup.bash

此时:

  • catkin_ws 目录下build、devel文件夹被创建
  • src 目录下CMakeLists.txt被创建

2.创建功能包 或 下载功能包

  • 创建功能包
cd src //切换到 src 目录下
//用法:catkin_create_pkg package depends
//例如,新建一个package叫做test_pkg,依赖roscpp、rospy、std_msgs(常用依赖)。
catkin_create_pkg test_pkg roscpp rospy std_msgs  //可按照需求加依赖

这样就会在当前路径下新建test_pkg功能包,包括:
├── CMakeLists.txt
├── include
│ └── test_pkg
├── package.xml
└── src
注:若不加依赖,则不会创建 include、src 目录
完成后,你就可以开始代码工作了

  • 代码完成后编译
cd catkin_ws              //切换到工作空间根目录
catkin_make               //编译
  • 下载功能包
    对于从Github上clone或下载下来的代码
 cd ~/catkin_ws/src
git clone https://github.com/DroidAITech/ROS-Academy-for-Beginners.git
cd ~/catkin_ws
// 安装工作空间下所有软件包的依赖项,kinetic要按你的ROS版本修改
// 可能报错,自行百度
rosdep install --from-paths src --ignore-src --rosdistro=kinetic -y 
catkin_make
source ~/catkin_ws/devel/setup.bash    //再次强调,一般添加到~/.bashrc

4. package常用命令

在这里插入图片描述在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ROS学习笔记_01:工作空间及功能包 的相关文章

  • 欧拉角顺序与转换

    更多转换见 xff1a 基于eigen实现 基于python实现 这里就记录下顺序 xff1a 运算是左乘 xff0c 下面方式记作Z Y X顺序 xff0c 先绕x轴roll 再绕y轴pitch 最后绕z轴yaw xff0c 即为RPY
  • ubuntu20.04 python pycharm使用cv_bridge的问题

    1 终端python运行下面会报错 xff1a from cv bridge boost cv bridge boost import getCvType ImportError lib libgdal so 26 undefined sy
  • demo:图像处理 matlab实现迭代法全局阈值分割和局部自适应阈值分割

    全局阈值分割 迭代法阈值获取方法 xff1a 1 xff09 选取一个的初始估计值T xff08 128 xff1b 2 xff09 用T分割图像 这样便会生成两组像素集合 xff1a G1由所有灰度值大于T的像素组成 xff0c 而G2由
  • Ubuntu 实用内核更新实录

    1 更新软件及内核源码 xff1a sudo apt get install gcc make libncurses5 dev openssl libssl dev sudo apt get install build essential
  • matlab工具箱下载权限受限:您的管理员限制了您对此mathworks产品的下载权限

    我也不知道我为啥安装的时候audio toolbox没安 xff0c 可能有的同学安装matlab时也没有全选所有组件 xff0c 后来用的时候发现下载不了 xff1a 在附加功能管理器中 xff0c MathWorks 工具箱和产品这一部
  • demo:用matlab app designer做一个简易app

    GUI xff08 guide xff09 的教程挺多 xff0c 但app designer是matlab后续版本中才添加的 xff0c 界面更友好但度娘资源比较少 1 点击新建 APP设计工具 xff0c 或者直接在命令行输入appde
  • matlab 数值计算课 二阶微分方程-龙格库塔方法 & ODE45

    详见mathworks 龙格库塔方法 写成矩阵 xff08 状态方程 xff09 的形式更简洁一点 xff08 其实这两种方法结果是一样的 xff0c 如果C是 1 0 0 的话 xff0c 就很明显了 xff09 例如 xff1a 求系统
  • 第一篇simulink电路仿真

    连接一个最基本的二阶RLC震荡电阻 元器件的位置如图 xff1a RLC和电流表电压表在Simscape Foundation Library Electrical下可以找到 xff0c 如图 xff1a 单纯利用这些基本电路元件连接运行会
  • 阿里云Linux系统图形化界面

    https help aliyun com knowledge detail 41227 html
  • source devel/setup.bash bash: devel/setup.bash: No such file or directory解决方法

    看到网上一些解决方法是进入 bashrc把source opt ros kinetic setup bash这句话去掉之类的 xff0c 真是感到欲哭无泪 把这句话去掉只是让这个错误不再显示而已 xff0c 根本不能解决问题 根据报错信息很
  • 基于LQR的倒立摆控制——python代码——dlqr步骤推导

    推荐一个自动控制小车开源项目 xff1a 本文结合老王自动驾驶控制算法第五讲的离散LQR进行学习复盘 Inverted Pendulum Control PythonRobotics documentation dlqr原理 xff08 老
  • 【OpenMV小车——第1.2篇】OpenMV主控板的简介与入门使用

    前言 xff1a 视觉小车最重要的是视觉功能 xff0c 其实现方式主要有 xff1a Opencv 43 外置计算机摄像头 需要计算机作为上位机 Stm32 43 OV7670 较难 xff0c 大师级 OpenMV摄像头 较简单 xff
  • Windows 配置 C/C++ 开发环境

    文章目录 1 安装 MinGW w641 1 下载1 2 解压到合适的目录下1 3 添加到环境变量1 4 测试是否安装成功 2 安装 CMake2 1 下载2 2 解压到合适的目录下2 3 添加到环境变量2 4 测试是否安装成功 3 编译运
  • I.MX6ULL的SPI通信

    简述 SPI是串行外设接口 xff08 Serial Peripheral Interface xff09 的缩写 xff0c 相比于I2C最高400bps的传输速度 xff0c SPI每秒可以传输的数据可以高达几十M甚至上百Mbit 1
  • 信号量与互斥量的区别

    信号量 xff1a 那是多线程同步用的 xff0c 一个线程完成了某一个动作就通过信号告诉别的线程 xff0c 别的线程再进行某些动作 互斥量 xff1a 这是多线程互斥用的 xff0c 比如说 xff0c 一个线程占用了某一个资源 xff
  • C语言常用转义字符表

    C语言常用转义字符表 转义字符 xff1a 转义字符分为一般转义字符 八进制转义字符 十六进制转义字符 一般转义字符 xff1a 背诵 0 n 八进制转义字符 xff1a 141 是合法的 xff0c 前导的0是不能写的 十六进制转义字符
  • 2018年App测试流程及要点梳理

    先说说 xff0c 为什么要给大家梳理App测试流程和要点呢 xff1f 主要是缘于有太多同学咨询相关App测试的问题 xff0c 回答的次数多了 xff0c 就不想打字了 xff0c 还不如这样全部帮你们整理好 xff0c 希望各位看到的
  • 毕业设计--球上自平衡机器人

    目录 前言 一 机器人原理分析 二 控制器设计 三 程序部分 四 硬件清单 五 电路设计 六 结构设计 七 总结与展望 总结 展望 2021 8 18更新 xff1a 看到评论区很多人对这个机器人比较感兴趣 xff0c 把之前挖好的坑填一下
  • ROS入门之CmakeList.txt详讲

    本文为进来学习的总结 xff0c 记录了学习CmakeList txt文档的各个步骤 xff0c 适合从零开始理解CmakeList txt xff0c 可能存在错误之处 xff0c 望批评指正 0 Cmake的起源 为什么有CmakeLi
  • 2 如何给Gazebo中的仿真机械臂添加一个力传感器?

    1 你得有一个仿真机械臂 简单地说你首先的拥有一个能够在Gazebo当中使用的机械臂的URDF文件 xff0c 必须要包含visual collision和inertial三大标签 出于个人习惯 xff0c 这里直接使用UR官方提供的UR5

随机推荐