ROS 学习笔记(一)

2023-11-10

前言:

最近在学习ros,为毕设作准备,和师兄交流过,想了想还是先把A*的路径规划给做完,然后在去做动态无限充电的实验好了。

目前学习的视频还是经典中的经典,古月ros21讲,这个看完之后再去看师兄推荐的文章。

vscode开发ROS1(3)-创建第一个ROS项目 - 穆士凝魂的文章 - 知乎
https://zhuanlan.zhihu.com/p/275654322

长路漫漫,要好好加油!

之所以写博客是因为发现自己不做记录之前所学的真的会忘的一干二净,所以还是得勤作记录。

之前也捣鼓了用github+hexo去发博客,但是还是存在一些问题,这个还要再去解决解决。

文中若有错误恳请大佬指正

正文:

目前学习到了第九讲《创建工作空间和功能包》。

定义:

工作空间:就是keil中的project文件夹,里面分为四个主要的文件夹

第一个文件夹:src:代码空间(source Space) ——用来存放功能包的,包括功能包的代码,配置文件等。

第二个文件夹:build:编译空间(Build Space)——存放编译过程中存放的中间文件。不用太过关心。

第三个文件夹:devel:开发空间(Development Space)——编译生成的文件,脚本等都是在这个文件中进行运行的。

第四个文件夹:install:安装空间(Install Space)——类似于安装路径。

创建工作空间的步骤:

1.创建工作空间:打开主文件夹,点击右键选择在终端打开 (也可以直接ctrl+alt+t),随后依次输入下列代码

也可以输入以下代码。

mkdir carkin_ws
cd carkin_ws/
mkdir src
cd src
atkin_init_workspace

这样弄虽然复杂但对于初学者来说,挺有益的,做完一步可以查看你所建的catkin_ws文件夹中的变化

代码输入完成后,最后产生一个.txt的文件就算成功了。说明当前路径是ros的工作空间了。

ps:画框的为自定义文件名,随意取。但是后面的src必须是scr,以作为 workspace的src(代码空间)

 $catkin_init_workspace用于初始化当前文件夹

 2.编译工作空间:在终端输入以下代码

 

cd ..

是为了返回工作空间的根目录,也就是刚才创建的catkin_ws文件夹的位置,可以使用pwd指令来查看当前位置。

catkin_make

此命令为ros中catkin编译工作器提供的编译工作指令(简单来说就是编译程序的指令)。

ps:该指令会编译src下的所有功能包的源码,结果会放到delve和install中。输入该指令后会发现只会产生devel和build两个文件夹,想要产生install这需要输入这个指令、

catkin_make install 

3.创建功能包:输入指令

cd src
catkin_create_pkg teest_pkg roscpp rospy std_msgs

注:因为是在src文件夹中建立功能包,所以应该要先cd到src这个文件夹的路径下。

创建功能包的代码为

解释:”catkin_create_pkg“为创建功能包指令,<>中为功能包的名称,后面的depend为功能包的依赖,可以理解为C语言里面的调用库 #include<stido.h>。你需要调用什么库就在建立的时候加什么depend。

视频中的代码为:catkin_create_pkg teest_pkg roscpp rospy std_msgs

roscpp——是为了调用ros中的C++接口来写程序;rospy——是为了调用ros中的python接口来写程序;std_msgs——ros中定义的标准的消息结构(如:int等)

成功后会在src文件夹中出现teest_okg文件夹(裂开手抖多打了一个e,写文件才发现)

该文件夹下有这样一些文件

具体的作用:

src文件用于存放功能包代码;include用于存放头文件例如C++中的.h文件;CMakeLists和package文件存在能说明这个文件夹是一个功能包文件夹,它们是每个功能包必须存在的文件。

编译功能包:

 注:要回到工作空间文件夹的根目录来,才能进行编译

编译的效果图如下,能显示多了一个名为teest_pkg的功能包

 如果要运行功能包里面的某一个程序,需要先设置一下工作空间的环境变量

 4.设置环境变量:(作用:上传功能包路径给“总部”)

source devel/setup.bash 

只有这样设置了,系统才能找到我们的工作空间以及工作空间里的对应的一些功能包。

5.检查环境变量:(作用:在“总部”查找刚才自己创建功能包的位置,检查路径是否一致)

echo $ROS_PACKAGE_PATH

使用echo命令打开$ROS_PACKAGE_PATH。$ROS_PACKAGE_PATH为ros本身自带的一个环境变量,他会查找你所有ros功能包的路径。

你只有设置了 source devel/setup.bash之后,$ROS_PACKAGE_PATH中才会包含(找到)你自己所创建的功能包的路径。

运行结果如下

 所显示的 /home/******/carkin_ws/src 即为所建功能包的路径。

6.package文件

此文件主要描述与你功能包相关的一些信息,名字,版本号,开元的许可证等。还会显示你功能包的depend,在运行时会先搜索输入的功能包是否存在(不存在会报错)。当然后续也可以进一步修改,进行库的扩展等功能

7.CMakeLists文件

用来描述功能包的编译规则。使用CMake语言进行编译。

最后 同一个工作空间下,不允许存在同名功能包。不同工作空间下,允许存在同名功能包

 

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

ROS 学习笔记(一) 的相关文章

随机推荐

  • 定义列表

    dl dt 槟榔 dt dd 湖南 海南产 dd dd 有提神作用 dd dd 吃多了不好 dd dd 有点贵 dd dl
  • JAVA 关键字介绍 strictfp

    JAVA虽然具有跨平台性 但是各个平台对浮点数的运算操作是不相同的 所以在不同平台上进行的浮点数操作所得到的结果可能不同 strictfp 强制规定各个平台上进行一套标准的浮点数操作 浮点规范IEEE 754 以降低性能为代价 当一个类被s
  • Latex中如何实现图并列/表并列/以及混合并列排版以及双列变单列

    一 图并列2 2排版 两外的1 2都可以参考下列代码 begin figure htbp centering begin minipage 0 49 linewidth 表示图片的占用那一列的宽度 centering vspace 0 6c
  • java8 32位和64位资源分享 Windows 版本:8u311

    阿里云盘 Java8u311 点击链接保存 或者复制本段内容 打开 阿里云盘 APP 无需下载极速在线查看 视频原画倍速播放 链接 https www aliyundrive com s RK8wK2m41bv 百度云盘 链接 https
  • 每个前端人都应该看看的Vue3开源项目

    从目前的一线面试经验来看 八股文跟吃饭一样已经麻了 而项目题 场景题才是面试官考察的重点和加分项 正好我之前整理过一份全网爆火且值得学习的前端实战资料 这里无偿分享出来以便大家突击提升技术 另外还有前端必备基础资料 可帮助大家实战 理论双重
  • LeetCode(Python)—— 最后一个单词的长度(简单)

    最后一个单词的长度 概述 给你一个字符串 s 由若干单词组成 单词前后用一些空格字符隔开 返回字符串中最后一个单词的长度 单词是指仅由字母组成 不包含任何空格字符的最大子字符串 输入 s Hello World 输出 5 输入 s fly
  • on project rocketmq-dashboard: Failed to run task: ‘yarn install’ failed. org.

    最新Windows环境下搭建RocketMQ及其控制台环境 1 搭建RocketMQ 1 1 下载RocketMQ 官网下载地址 https rocketmq apache org release notes 选择合适的版本下载Binary
  • 黄平书-线接触热弹流润滑 Fortran+Matlab转译代码

    原Fortran代码有错误 进行了修改 数值上差别不大 根据Fortran代码转的Matlab 可以完美运行 但是因为精度问题有差异 只能说趋势是一致的 需要私我 资源里只是Fortran运行结果
  • 2023华为OD机试真题【恢复数字序列】

    题目内容 对于一个连续正整数组成的序列 可以将其拼接成一个字符串 再将字符串里的部分字符打乱顺序 如序列8 9 10 11 12 拼接成的字符串为89101112 打乱一部分字符后得到90811211 原来的正整数10就被拆成了0和1 现给
  • 程序员Linux学到什么程度,Linux学到什么程度,才可以找到合适的工作?

    首先我说一下我的学习路线吧 我是学习java出生的 懂编程的人都知道 一般我们程序员用开发系统 大多数都是在linux系统上开发的 在最开始的时候把我哥给了我一本书 我名字就叫鸟哥的私房菜 这本书非常不错 非常适合刚入门的新手看学习 里面讲
  • python中定时执行脚本

    python中定时执行脚本 引入time os sched 这三个是必备的 import time os sched def ll num print 123123456 with open tt txt ab as txt txt wri
  • Spring Cloud Edgware新特性之九:Sleuth使用MQ方式整合Zipkin

    原文 http www itmuch com spring cloud edgware new sleuth zipkin mq 众所周知 Spring Cloud Sleuth有两种方式整合Zipkin HTTP直连Zipkin方式 MQ
  • 微众银行蝉联入选《福布斯》全球区块链50强

    美东时间2023年2月7日 福布斯 杂志公布2023年全球区块链50强榜单 微众银行蝉联入选 微众银行因联合多方共建开源联盟链生态圈 以及基于DDTP Distributed Data Transfer Protocol 分布式数据传输协议
  • 腾讯云存储上传头像、文件功能(超详细保姆级)

    创建腾讯云 并实名认证 地址 申请腾讯云账号 腾讯云 产业智变 云启未来 腾讯 在官网搜索对象存储 点击立即使用 创建存储桶 无脑下一步 唯一注意点就是可以选择共有读写 以及取一个存储桶的名称 查看存储桶列表 点击进某个存储桶后 可以上传文
  • 【Qt Quick】用Qt编辑器书写C++项目、解决输出中文问题

    系统 Win10 IDE Qt 1 简介 我想直接用qt的编辑器写c 的项目 不再重新下载vs2019等 2 创建项目 创建好以后 默认会有如下代码 include
  • JDK源码汇总

    JDK源码汇总 持续更新中 Appendable
  • 关于Android中的api、implementation、compile理解

    1 compile在3 0及以上的gradle版本已弃用 2 api可以完全代替compile 利用api导入的包可以被下级引用 3 implementation只是编译时引用 并不把引入的包打包进项目 4 java library项目依然
  • 操作系统真象还原实验记录之实验十五:多线程调度

    操作系统真象还原实验记录之实验十五 多线程调度 对应书P428 9 4节 1 相关基础知识 2 实验记录 2 1 实验流程 上次实验中 实现了一个线程的运行 具体是 1 申请了一页物理页作为PCB 2 init thread填写了位于PCB
  • 攻防世界--MISC题之坚持60s

    问题描述 难度系数 四颗星 题目来源 08067CTF 题目描述 菜狗发现最近菜猫不爱理他 反而迷上了菜鸡 题目场景 暂无 题目附件 附件1 题目分析 文件是一个jar文件 于是就想到了java 其实 在我看来 它就是一个压缩包 所以 大致
  • ROS 学习笔记(一)

    前言 最近在学习ros 为毕设作准备 和师兄交流过 想了想还是先把A 的路径规划给做完 然后在去做动态无限充电的实验好了 目前学习的视频还是经典中的经典 古月ros21讲 这个看完之后再去看师兄推荐的文章 vscode开发ROS1 3 创建