当前位置: 首页 > article >正文

学习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.kler.cn/news/311175.html

相关文章:

  • 关于Redis
  • Mamba YOLO World
  • 集合是什么
  • 金手指设计
  • CefSharp_Vue交互(Element UI)_WinFormWeb应用(3)---通过页面锁屏和关机(含示例代码)
  • 新的突破,如何让AI与人类对话变得“顺滑”:Moshi背后的黑科技
  • 【Webpack--011】配置开发和生产模式的webpack.config.js
  • 【算法】滑动窗口—找所有字母异位词
  • 解决使用nvm ls命令没有出现*的问题
  • 华为OD机试 - 打印机队列 - 优先队列(Python/JS/C/C++ 2024 E卷 200分)
  • 【分立元件】案例:新人加了个TVS管为什么可能导致系统不能正常工作
  • 【Unity】URP Rendering总结
  • 【C++STL简介】——我与C++的不解之缘(八)
  • 【PyTorch】深入浅出PyTorch
  • 模版进阶(template)
  • Java项目: 基于SpringBoot+mybatis+maven洗衣店订单管理系统(含源码+数据库+开题报告+任务书+毕业论文)
  • 【Flink Flick CDC】学习笔记
  • 架构设计 - 常用日志收集方案选型对比与推荐
  • 【java面试每日五题之基础篇一】(仅个人理解)
  • ACL 2024:交叉领域情感分析——论文阅读笔记
  • Kotlin cancel CoroutineScope.launch的任务后仍运行
  • PDF标准详解(五)——图形状态
  • 104. 二叉树的最大深度【 力扣(LeetCode) 】
  • VIM使用技巧
  • 从openAI最新模型GPT-o1再谈思维链(Cot)技术,大模型该怎么提升其逻辑推理能力?
  • 在 pika.SelectConnection 和 gevent 中实现高效异步:事件驱动与协程模型的冲突与优化
  • linux入门到实操-2 linux桌面、终端基本操作,文件系统、目录结构、挂载点
  • [数据集][目标检测]车窗状态检测车窗开关检测数据集VOC+YOLO格式299张3类别
  • CSS入门笔记
  • 【AI大模型-提示词的技巧】