学习ROS2第一天—新手笔记(humble版本)

————今早七点达到实验室,吃了早饭收拾了一下现在07:24开始学习————

1. RO2与ROS1的不同架构:

ROS1架构下,所有节点都是Master进行管理

ROS使用基于DDS的Discovery机制,和Master说再见

API的重新设计

编译系统升级:

ROS1使用rosbuild、catkin管理项目

ROS2使用升级版的ament、colcon

1.2打开终端:

按住Ctrl+Alt+T打开终端

运行乌龟项目:

打开终端:ros2 run turtlesim turtlesim_node

再打开一个终端 ros2 run turtlesim turtle_teleop_key

鼠标要停留在key这个终端里,才有效果 也证明ROS2安装没有问题

指令操作:

pwd:可以查看当前终端是对于什么目录下进行操作的

ls:当前路径下下都有哪些文件夹和文件

ls-A:显示隐藏文件  ctrl+H也可以显示隐藏文件

mkdir+文件名:创建文件夹,名字自己设定的 mkdir flag

cd 文件夹名称/ :进入该文件夹里面   cd flag

touch 名字.格式:在文件夹里面创建文件 touch flag.txt

删除这个文件:rm 文件 例如 rm flag.txt

cd ..回到上级目录

rm -R 文件名 就可以删除   rm _R flag

sudo apt install + 包的名字:安装各种功能包比如ROS功能包 

sudo:提高到管理员权限 apt 应用   install:安装 

Tab补全

ros2 node :可以查看后面可以接哪些节点 参数 ,会有详细的解释

输入一下list 可以查看当前有哪些节点正在运行

想要查看节点信息可以用info

ros2 topic :查看有哪些话题

command哪里都可以查看

ros2  topic echo /turtlesim_pose    (Tab键补全)

theta:表示围绕z轴的角度垂直于片面向外

linear_velocity:线速度

angular_velocity:角速度

有个小插曲,复制粘贴时候大意了,要谨慎要小心更要认真

$ ros2 topic pub --rate 1 /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}"
  解释:ros2发布一个话题,频率为1s,控制速度的+类似数据结构+线速度和角速度的值

$ ros2 service call /spawn turtlesim/srv/Spawn "{x: 2, y: 2, theta: 0.2, name: ''}"

产生另外一只海龟

name后面随意接名字name'abc'也可以

 ros2 topic pub --rate 1 /turtle2/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}

输入上一级这个命令可以让小海龟画圆运动

话题相当于机器人控制接口

如果记录小海龟的移动数据则只需要

 ros2 bag 

ros2 bag record /turtle/cmd_vel

在主目录这个地方可以看到

指令 ros2 bag  play 文件名 即可

2. 工作空间

2.1 工作空间:

是一个存放项目开发相关文件的文件夹;是开发过程的大本营

包括: src(代码空间) install(安装空间) build(编译空间) log(日志空间)

2.1.2 创建功能包:

$ cd ~/dev_ws/src

$ ros2 pkg create --build-type ament_cmake learning_pkg_c # C++

$ ros2 pkg create --build-type ament_python learning_pkg_python # Python

   ros2 pkg create --build-type<build-type><package_name>

2.1.3 编译功能包

$ cd ~/dev_ws
$ colcon build   # 编译工作空间所有功能包
$ source install/local_setup.bash

创建功能包要在这个功能下,选择在终端中打开,把上述命令输入进去,c++或者python都可以,

里面包含的文件内容不一样。

C++文件中有两个空文件 python比C++多两个文件

3. 节点:机器人的工作细胞

先在文件夹里写:colcon build 编译一下工作环境

1.ros2 run 包 节点 

那为什么能打印出hello world这样的信息 可以通过VScode,找到功能包的这个节点的编程,若你自己编程完还需要配置环境,这个节点是源自包节点函数名

实现一个节点,代码的实现流程是这样做的:
编程接口初始化   rclpy

创建节点并初始化   from...import...再 init

实现节点功能   while...

销毁节点并关闭接口  node.destroy_node

节点里面有许多用处,ROS只是一个框架,具体内容还是要编程的 刚才分别做了open_cv的图像识别一个是静态的图片识别,另外一个是动态的摄像机识别 

很神奇,很好玩。

4.话题

4.1 创建发布者的程序流程:

1.编程接口初始化

创建节点并初始化

创建发布者对象

创建并填充话题消息

发布话题消息

销毁节点并关闭接口

4.2 订阅者程序流程

编程接口初始化

创建节点并初始化

创建订阅者对象

回调函数处理话题数据

销毁节点并关闭接口

4.3 话题:

有pub还有sub   做了一个摄像头检测识别苹果的例子

5.服务:

你问我答的一种机制

5.1 创建服务客户端的程序流程:

编程接口初始化

创建节点并初始化

创建客户端对象

创建并发送请求数据

等待服务器端应答数据

销毁节点并关闭接口

5.2 创建服务服务端的程序流程:

编程接口初始化

创建节点并初始化

创建服务端对象

通过回调函数处进行服务

向客户端反馈应答结果

销毁节点并关闭接口

————学的好慢 回寝室 21:38————


 


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1539299.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

数集相等的定义凸显初等数学几百年重大错误:将无穷多各异数集误为同一集

黄小宁 创造型人才的突出特征&#xff1a;敢于独立思考&#xff0c;不愿人云亦云随大流做分数的奴隶。初数中定义域为R的一次函数ykx&#xff08;正常数k≠1&#xff09;的值域问题是师生们不屑一顾的初数中的初数&#xff0c;然而数集相等的定义凸显初数一直搞错了y的值域而将…

MD5、SHA256哈希值生成验证工具-生成文件的“指纹ID”-调用了微软.Net Framework里的加密工具来生成哈希值

MD5、SHA256等哈希值生成工具通常用来验证文件的完整性&#xff0c;或者说是生成文件的“指纹ID”。 Windows系统下调用哈希工具&#xff0c;要用命令提示符cmd调用&#xff0c;生成和比较不太方便。我编写了一个小工具&#xff0c;将文件拖拽到软件界面即可生成比较。 下载地址…

前端——表格、列表标签

今天我们来学习一下web开发里面的表格标签、列表标签 常用快捷键&#xff1a; shift alt 下 复制粘贴选中内容 表格标签 table HTML 表格由 <table> 标签来定义。 HTML 表格是一种用于展示结构化数据的标记语言元素。 每个表格均有若干行&#xff08;由 <tr>…

Qt实战案例(60)——利用QTimer类实现实时时间功能

目录 一、项目介绍二、项目基本配置三、UI界面设置四、主程序实现4.1 widget.h头文件4.2 widget.cpp源文件 五、效果演示 一、项目介绍 本文介绍利用QTimer类实现实时时间功能并在状态栏中进行显示。 二、项目基本配置 新建一个Qt案例&#xff0c;项目名称为“TimeTest”&am…

【北京迅为】《STM32MP157开发板使用手册》- 第三十八章 任务管理实验

iTOP-STM32MP157开发板采用ST推出的双核cortex-A7单核cortex-M4异构处理器&#xff0c;既可用Linux、又可以用于STM32单片机开发。开发板采用核心板底板结构&#xff0c;主频650M、1G内存、8G存储&#xff0c;核心板采用工业级板对板连接器&#xff0c;高可靠&#xff0c;牢固耐…

解决【WVP服务+ZLMediaKit媒体服务】加入海康摄像头后,能发现设备,播放/点播失败,提示推流超时!

环境介绍 每人搭建的环境不一样&#xff0c;情况不一样&#xff0c;但是原因都是下面几种&#xff1a; wvp配置不当网络端口未放开网络不通 我搭建的环境&#xff1a; WVP服务&#xff1a;windows下&#xff0c;用idea运行的源码 ZLM服务&#xff1a;虚拟机里 问题描述 1.…

训练加速和推理加速

1. 训练加速 训练加速指的是通过优化技术、硬件加速等方式&#xff0c;减少训练模型的时间&#xff0c;尤其是对于大规模数据集和复杂模型。 训练的特点&#xff1a; 计算量大&#xff1a;模型训练时需要执行前向传播和反向传播&#xff0c;并在多个迭代&#xff08;epoch&a…

Java 23 的12 个新特性!!

Java 23 来啦&#xff01;和 Java 22 一样&#xff0c;这也是一个非 LTS&#xff08;长期支持&#xff09;版本&#xff0c;Oracle 仅提供六个月的支持。下一个长期支持版是 Java 25&#xff0c;预计明年 9 月份发布。 Java 23 一共有 12 个新特性&#xff01; 有同学表示&…

【Java】网络编程-地址管理-IP协议后序-NAT机制-以太网MAC机制

&#x1f308;个人主页&#xff1a;努力学编程’ ⛅个人推荐&#xff1a; c语言从初阶到进阶 JavaEE详解 数据结构 ⚡学好数据结构&#xff0c;刷题刻不容缓&#xff1a;点击一起刷题 &#x1f319;心灵鸡汤&#xff1a;总有人要赢&#xff0c;为什么不能是我呢 &#x1f434…

vscode关闭git的提交提示

问题描述&#xff1a; vscode中光标停留在每一行都会有出现git仓库的提交信息&#xff0c;影响代码阅读。 解决方法&#xff1a; 左下角设置齿轮&#xff1a; 输入关键词commit input 取消勾选&#xff0c;即可解决。

Apache subversion 编译流程

目录 1. 概述2. 依赖库简介2.1 Expat2.2 Apache apr2.3 Apache apr-iconv2.4 Apache apr-util2.5 Zlib2.6 OpenSSL2.7 Sqlite2.8 Apache Serf2.9 Apache subversion3. 编译3.1 Expat编译3.1.1 源码信息3.1.2 CMake-GUI3.1.3 编译步骤3.2 APR编译3.2.1 源码信息3.2.2 编译步骤3.…

2024年【中级消防设施操作员(考前冲刺)】及中级消防设施操作员(考前冲刺)模拟考试题库

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 中级消防设施操作员&#xff08;考前冲刺&#xff09;根据新中级消防设施操作员&#xff08;考前冲刺&#xff09;考试大纲要求&#xff0c;安全生产模拟考试一点通将中级消防设施操作员&#xff08;考前冲刺&#xf…

mp4转换成mp3,八个超简单视频转换方法

怎么将mp4转换成mp3&#xff1f;在现代数字媒体的世界中&#xff0c;视频和音频的转换变得尤为重要。许多人在观看视频时&#xff0c;常常会被其中的声音吸引&#xff0c;想要单独保存下来。这时&#xff0c;将MP4格式的视频转换为MP3格式的音频就显得尤为必要。MP4是一种常用的…

长时间认知任务中的大脑补偿机制:fNIRS和眼动追踪研究

摘要 在需要高度集中和高效完成关键任务的领域&#xff0c;如何在疲劳状态下维持认知表现是一个非常重要的问题。在这种情况下&#xff0c;帮助大脑克服疲劳的补偿机制研究就显得尤为重要。本研究探讨了生理、行为和主观测量之间的相关性&#xff0c;同时考虑了疲劳对工作记忆…

yolov5/8/9/10模型在VOC数据集上的应用【代码+数据集+python环境+GUI系统】

yolov5/8/9/10模型在VOC数据集上的应用【代码数据集python环境GUI系统】 1.背景意义 VOC数据集被广泛应用于计算机视觉领域的研究和实验中&#xff0c;特别是目标检测和图像识别任务。许多知名的目标检测算法都使用VOC数据集进行训练和测试。VOC挑战赛&#xff08;VOC Challeng…

maxwell 输出消息到 kafka

文章目录 1、kafka-producer2、运行一个Docker容器&#xff0c;该容器内运行的是Zendesk的Maxwell工具&#xff0c;一个用于实时捕获MySQL数据库变更并将其发布到Kafka或其他消息系统的应用3、进入kafka容器内部4、tingshu_album 数据库中 新增数据5、tingshu_album 数据库中 更…

[Unity Demo]从零开始制作空洞骑士Hollow Knight第四集:制作更多的敌人

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、制作敌人僵尸虫Zombie 1.公式化导入制作僵尸虫Zombie素材2.制作僵尸虫Zombie的Walker.cs状态机3.制作敌人僵尸虫的playmaker状态机二、制作敌人爬虫Climber…

Gradio 自定义组件

如何使用 Gradio 自定义组件&#xff0c;Gradio 前端使用 Svelte&#xff0c;后端使用的 Python。如何自定义一个组件呢&#xff1f;Gadio 提供了类似于脚手架的命令&#xff0c;可以生成需要开发组件的前后和后端代码。 创建组件 运行如下命令&#xff0c;gradio 会自动生成…

鹏鼎控股社招校招入职SHL综合能力测评:高分攻略及真题题库解析答疑

鹏鼎控股&#xff08;深圳&#xff09;股份有限公司&#xff0c;成立于1999年4月29日&#xff0c;是一家专注于印制电路板&#xff08;PCB&#xff09;的设计、研发、制造与销售的高新技术企业。公司总部位于中国广东省深圳市&#xff0c;并在全球多个地区设有生产基地和服务中…

FinGPT金融大模型

FinGPT仓库https://github.com/AI4Finance-Foundation/FinGPT 功能&#xff1a; Adviser。根据新闻判断市场情绪&#xff08;积极、消极、中性&#xff09;&#xff0c;给出投资建议。Quantitative Trading。定制属于自己的金融助手。叫它关注某几个股票、监测消息等。可以直…