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

news2024/9/20 5:15:51

————今早七点达到实验室,吃了早饭收拾了一下现在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.coloradmin.cn/o/2147983.html

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

相关文章

查看ip地址的方法有几种?探索多样方法

在当今数字化时代&#xff0c;IP地址作为网络设备的唯一标识符&#xff0c;在网络连接、数据传输、网络安全等方面扮演着至关重要的角色。无论是普通用户进行网络设置&#xff0c;还是网络管理员进行故障排查&#xff0c;了解如何查看IP地址都是一项基础且必备的技能。本文将深…

2-99 基于matlab多尺度形态学提取眼前节组织

基于matlab多尺度形态学提取眼前节组织&#xff0c;通过应用不同尺度的结构元素进行边缘检测&#xff0c;再通过加权融合的思想来整合检测到的边缘&#xff0c;降低图像噪声的影响&#xff0c;提高边缘检测的精度。程序已调通&#xff0c;可直接运行。 下载源程序请点链接&…

18.DHT11编程案例

温湿度传感器 产品概述 DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器&#xff0c;应用领域&#xff1a;暖通 空调&#xff1b;汽车&#xff1b;消费品&#xff1b;气象站&#xff1b;湿度调节器&#xff1b;除湿器&#xff1b;家电&#xff1b;医疗…

傅里叶变换的基本性质和有关定理

一、傅里叶变换的基本性质 1.1 线性性质 若 则 其中:a,b是常数 函数线性组合的傅里叶变换等于歌函数傅里叶变换的相应组合。 1.2 对称性 若 则 关于傅里叶变换的对称性还有 虚、实、奇、偶函数的傅里叶变换性质: 1.3 迭次傅里叶变换 对f(x,y)连续两次做二维傅里叶变换…

shell指令及笔试题

一&#xff1a;linux基本指令考察 创建文件&#xff0c;直接在本目录的上级目录下创建一个名为dir1的文件夹&#xff0c;并在dir1文件夹下创建一个名为file1的文件 答&#xff1a;本目录的上级目录下创建一个名为dir1的文件:mkdir ../dir1 在dir1文件夹下创建一个名为file1的…

【CSS in Depth 2 精译_034】5.4 Grid 网格布局的显示网格与隐式网格(下)

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第一章 层叠、优先级与继承&#xff08;已完结&#xff09; 1.1 层叠1.2 继承1.3 特殊值1.4 简写属性1.5 CSS 渐进式增强技术1.6 本章小结 第二章 相对单位&#xff08;已完结&#xff09; 2.1 相对…

美容美发会员查看源码--———未来之窗行业应用跨平台架构

一、 会员详情查看源码 var obj_未来之窗数据 ;var 未来之窗传送id "这几个举个中文";CyberWin_ClientRender(模板).render(obj_未来之窗数据, function(未来之窗response){CyberWin_Dialog.layer(未来之窗response,{type:"frame",title:"会员详情&q…

C:字符串函数(完)-学习笔记

目录 前言&#xff1a; 1、strstr 1.1 strstr的使用 4.2 strstr的模拟实现 5、strtok 5.1 strtok函数的介绍 5.2 strtok函数的使用 6、strerror 前言&#xff1a; 这篇文章将介绍strstr函数&#xff0c;strtok函数&#xff0c;strerror函数 1、strstr 1.1 strstr的使用…

基于51单片机的温度电流电压检测系统(压力、电压、温度、电流、LCD1602)

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于51单片机&#xff0c;通过DS18B20检测温度&#xff0c;滑动变阻器连接数模转换器模拟电流、电压&#xff0c;通过LCD1602显示&#xff0c;程序里设置温度阈值为40&#xff0c;电流阈值为60&am…

使用Python免费将pdf转为docx

刚刚想将pdf转换为docx文档时&#xff0c;居然要收费 还好我学过编程&#xff0c;这不得露两手 将pdf 转换为 docx 文档 的操作步骤 我这里使用的是Python语言 &#xff08;1&#xff09;在终端上安装 pdf2docx 是一个 Python 库&#xff0c;它可以将 PDF 文件转换为 Word (…

CS61C 2020计算机组成原理Lab03

Exercise 1: Familiarizing yourself with Venus .data .word 2, 4, 6, 8 n: .word 9.text main: # add t0, x0, x0# addi 是 "add immediate"&#xff08;立即数加法&#xff09;的缩写&#xff0c;表示这是一个加法指令&#xff0c;其中一个加数是一个立即数&am…

try语句块和异常处理

throw直接报错 int main() {if (true) throw std::runtime_error("Error!"); } runtime_error(或者其他错误类型)是一个类, 必须初始化, 需使用string或者c风格字符串初始化. throw放try里, catch会接住throw的error 大概就是[catch]-->{[throw]-->[try]}的关…

数据结构——二叉树堆的专题

1.堆的概念及结构 如果有一个关键码的集合K {K0 &#xff0c;K1 &#xff0c;K2 &#xff0c;K3…&#xff0c;K(N-1) }&#xff0c;把它的所有元素按完全二叉树的顺序存储方式存储 在一个一维数组中&#xff0c;并满足&#xff1a;Ki < K2*i1且 Ki<K2*i2 ) i 0&#…

Java语言程序设计基础篇_编程练习题**18.30 (找出单词)

题目&#xff1a;**18.30 (找出单词) 编写一个程序&#xff0c;递归地找出某个目录下的所有文件中某个单词出现的次数。从命令行如下传递参数&#xff1a; java Exercise18_30 dirName word 习题思路 &#xff08;读取路径方法&#xff09;和18.28题差不多&#xff0c;把找…

电子元件制造5G智能工厂物联数字孪生平台,推进制造业数字化转型

5G智能工厂与物联数字孪生平台的融合应用&#xff0c;不仅为电容器制造业注入了新的活力&#xff0c;更为整个制造业的数字化转型树立了新的标杆。电子元件制造过程中&#xff0c;数字孪生平台通过实时监测生产线的各个环节&#xff0c;实现了生产流程的可视化监控。管理人员可…

vue中的slot插槽,彻底搞懂及使用

1、使用slot站位&#xff0c;不传内容&#xff0c;显示默认值 //父组件 import SlotChild from ./projectConstruction-child/SlotChild.vue <div><SlotChild></SlotChild> </div>//子组件 <template><div>下面是插槽内容</div><…

【爆炸】BB机,BP机,寻呼系统基础知识,物理层讲解

本页介绍寻呼系统基础知识。其中提到了寻呼机使用的数字协议并描述了数字寻呼接收器。 寻呼是一种单向通信系统。寻呼系统向携带小型电池供电设备&#xff08;称为寻呼机&#xff09;的个人广播信号或消息。这是与员工和/或客户沟通的非常重要的方式。让我们看看寻呼系统的工作…

新发布的OpenAI o1生成式AI模型在强化学习方面迈出了重要的一步

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

Xv6驱动(四):CLINT

阅读材料 Xv6代码&#xff1a;memlayout.h、start.c、kernelvec.S教材5.4节 CLINT内存映射 实际上&#xff0c;CLINT还包括若干个MSIP寄存器&#xff0c;用来触发软件中断&#xff0c;但是在Xv6中不考虑软件中断&#xff0c;因此这些寄存器也不用考虑 // core local interr…

python 运行其他命令行工具,实时打印输出内容

起因&#xff0c; 目的: python 运行一个命令&#xff0c;最简洁的写法是: import os # 转换视频格式。 cmd "ffmpeg -i a1.ts -c copy a1.mp4"os.system(cmd)问题&#xff1a; 如果上面的视频比较大&#xff0c;需要运行很长时间&#xff0c;那么感觉就像是卡住…