ros入门学习——基于古月居的学习笔记

目录

了解Linux系统是啥,了解Linux系统的简单操作指令(在命令行之中)

c++和python在命令行之中的区别

ros安装(用的小鱼的一键安装)

ros相关概念

ros命令行工具

ros工作空间

话题通信(异步)——发布/订阅

发布者Publisher的编程实现(cpp和py操作不一样)

一劳永逸设置环境变量

订阅者Subscriber的编程实现

话题消息的自定义和使用

服务通信(同步)——请求/应答

客户端client的编程实现

服务端server的编程实现

服务数据的定义和使用

参数的使用与编程方法

ros中的坐标系管理系统

简单的小海龟跟随实验,用ros内的功能包实现

小海龟跟随实验,自己去写功能包

launch启动文件的使用方法

常用可视化工具的使用

ros进阶


了解Linux系统是啥,了解Linux系统的简单操作指令(在命令行之中)

mkdir创建文件夹

cd索引到某个目录

ls显示当前目录下的文件

touch创建一个文件

mv移动一个文件到一个地方

cp复制一个文件到一个地方

rm删除一个文件

rm - r删除一个文件夹

sudo可以提升用户权限,做一些大事

xxx --help可以查看指令操作方法

tab键可以轻松补全命令行代码

多练就会了

c++和python在命令行之中的区别

c++得先通过g++编译器进行编译,-o代表编译成什么名字的可执行文件,再执行。python是一个解析型的语言,不需要编译,直接解析器解析便可运行

./是运行某个程序或者脚本的指令
 

ros安装(用的小鱼的一键安装)

没按照视频内一步步去配置,直接在ubuntu20.04中使用https://fishros.org.cn/forum/topic/20/%E5%B0%8F%E9%B1%BC%E7%9A%84%E4%B8%80%E9%94%AE%E5%AE%89%E8%A3%85%E7%B3%BB%E5%88%97?lang=zh-CN  这个的教程一键安装,挂个梯子去安装,没有梯子就换源

ros相关概念

主要核心就是提高机器人研发之中的软件复用率(ros就相当于安卓操作系统,一种机器人的操作系统,用别人造好的轮子)

 

话题通信是单向不断传输(多次)

服务通信是双向,有请求有应答(通常一次)

文件系统结构

ros命令行工具

常用命令

  • rostopic
  • rosservice
  • rosnode
  • rosparam
  • rosmsg
  • rossrv

都可以使用 xxx list 来查看话题列表

小海龟三步走:

ros工作空间

                                                             工作空间的创建流程

catkin_make 创建devel和build文件

catkin_make install 创建install文件

src用于存放功能包源码/ devel是“开发中” install是“集成后” 的可执行文件 / build是编译过程中二进制文件

                                                              添加依赖的操作

主要文件:package.xml包含了功能包的基本信息  CMakeLists.txt包含功能包的编译规则

核心思路就是:

  1. 创建并且初始化工作空间
  2. 在工作空间内创建功能包,并且得在src里面
  3. 在功能包内完成代码的组织,编译,运行

话题通信(异步)——发布/订阅

                                                                 核心流程图

发布者Publisher的编程实现(cpp和py操作不一样)

工作空间中的功能包依赖别配少了!!!!!!!!!!!!!!!!!!!

  • 初始化ros节点(初始化
  • 向ros master注册节点信息,包括发布的话题名和话题中的消息类型(注册
  • 创建消息数据(创建
  • 按照一定的频率循环发布消息(发布

cpp是要生成可执行文件,并且链接到ros库,继而在终端编译

add_executable(velocity_publisher src/velocity_publisher.cpp)#将程序文件生成可执行文件
target_link_libraries(velocity_publisher ${catkin_LIBRARIES})#将可执行文件与ros库链接
catkin_make # 编译

python只需要勾选选现让他具有可执行权限就行

右键py文件,点击属性,找到权限,把执行那一栏点成对勾

!!!!一定一定要注意,下面这个一般默认是找python2,ros要的是python3!!!!!

要在这句话后面加上个“3”,就是在源代码之中加,不然跑不了python代码!!!

不想每次都加3还有两种办法

  • 去.bashrc文件把python对应的版本号更改成python3
  • 直接删除系统自带的python2,重新配置python环境
#!/usr/bin/env python

ROS基础(二)——发布者Publisher的编程实现_ros的publisher-CSDN博客

一劳永逸设置环境变量

主文件夹ctrl+h显示隐藏文件,在.bashrc文件的最后一行添加环境变量的声明

只有工作空间的环境变量在当前环境中生效,才能找到文件
 

source ~/catkin_ws/devel/setup.bash

订阅者Subscriber的编程实现
 

  • 初始化ros节点
  • 订阅需要的话题
  • 循环等待话题消息,接收到消息后进入回调函数
  • 在回调函数中完成消息处理

话题消息的自定义和使用

编译生成语言相关文件与上文发布者和订阅者的编程实现一样

下面是cpp的编译规则

代码放置于此处

服务通信(同步)——请求/应答

客户端client的编程实现

  • 初始化ros节点
  • 创建一个client实例
  • 发布服务请求数据
  • 等待server处理之后的应答结果

流程类似,注重代码理解

注意代码使用的python版本,教程之中是python2,要做相应修改(print的括号,以及函数名)

服务端server的编程实现

  • 初始化ros节点
  • 创建server实例
  • 循环等待服务请求,进入回调函数
  • 在回调函数中完成服务功能的处理,并反馈应答数据

此处python比cpp多了一个“多线程”的步骤,因为python中没有spinOnce这个函数

服务数据的定义和使用

                                                        自定义服务数据所处位置

如何配置CMakeLists.txt中的编译规则

  • 设置需要编译的代码和生成的可执行文件
  • 设置连接库
  • 添加依赖项

在如上图所在位置,上面介绍了如何配置编译规则

三个横线进行区分,以上为request数据,以下为respond数据

每次运行新的程序之前,先把roscore关掉,因为里面可能会存有很多之前保存好的参数,需要清掉

参数的使用与编程方法

parameter server相当于定义了一个全局变量

使用一些命令的时候,按照list里面的格式走,要把路径改成自己的

rosparam set /turtlesim/background_b 255
  • 初始化ros节点
  • get函数获取参数
  • set函数设置参数

获取/设置参数有很多操作,见wiki

Parameter Server - ROS Wiki

ros中的坐标系管理系统

简单理解机器人中的坐标变换可以看这篇文章

机器人位姿描述与坐标变换 - 知乎

简单的小海龟跟随实验,用ros内的功能包实现

运行view_frames可能会报错,解决如下:

view_frames中错误: cannot use a string pattern on a bytes-like object_b'dot - graphviz version 2.43.0 (0)\n' traceback (-CSDN博客

小海龟跟随实验,自己去写功能包

如何实现一个tf广播器

  • 定义tf广播器
  • 创建坐标变换值
  • 发布坐标变换

如何实现一个tf监听器

  • 定义tf监听器
  • 查找坐标变换

配置cmakelists.txt中的编译规则

launch启动文件的使用方法

ROS的launch文件是用XML格式编写的,用于描述如何启动一个或多个ROS节点。以下是launch文件的基础结构和语法:

  1. 基础结构:
    <launch>
        <!-- launch file contents -->
    </launch>
    

    每个launch文件都以<launch>标签开始并以</launch>标签结束。

  2. 启动节点:
     

    <node pkg="package_name" type="node_type" name="node_name" />
    

    pkg:ROS包的名称,该节点在其中定义
    type: 可执行文件的名称
    name:运行时ROS节点的名称

    1. output:

      1. 指定节点日志的输出位置
      2. 可能的值包括 "screen" (将日志输出到屏幕/终端) 和 "log" (将日志写入文件)
        <node pkg="package_name" type="node_type" name="node_name" output="screen" />
        
    2. respawn:

      • 如果此属性设置为 "true",当节点因任何原因终止时,ROS会尝试重新启动它
      • 默认值为 "false"
        <node pkg="package_name" type="node_type" name="node_name" respawn="true" />
        
    3. required:

      • 如果此属性设置为 "true",当该节点终止时,它会导致roslaunch也终止所有其他节点。
      • 默认值为 "false"。
        <node pkg="package_name" type="node_type" name="node_name" required="true" />
        
    4. ns:

      • 为节点指定一个命名空间。
      • 如果设置,节点的所有话题、服务等都会在这个命名空间下。
        <node pkg="package_name" type="node_type" name="node_name" ns="namespace" />
        
    5. args:

      • 为节点指定命令行参数。
        <node pkg="package_name" type="node_type" name="node_name" args="arg1 arg2" />
        


更多标签可去

roslaunch/XML - ROS Wiki

常用可视化工具的使用

rqt工具箱——非常综合的工具

rviz——三维可视化工具(数据可视化平台)   只要按照ros的数据结构发布信息,rviz就都可以进行可视化展示,而且可扩展二次开发

gazebo——三维物理仿真平台

ros进阶

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 古月 ROS2 课件是一套关于ROS2框架的教育教学材料。ROS(Robot Operating System)是一个开放源代码的机器人操作系统,用于实现机器人软件开发的一种框架。ROS2是ROS的下一代版本,具有更强大的功能和更高的性能。 古月ROS2课件主要包括以下内容: 1. ROS2概述:介绍ROS2的起源、发展和应用领域,让学习者了解ROS2的基本概念和优势。 2. ROS2架构:详细介绍ROS2的架构和组件,包括节点(Node)、话题(Topic)、服务(Service)、行为(Action)等,帮助学习者理解ROS2的基本工作原理。 3. ROS2通信:讲解ROS2中的通信机制,包括发布/订阅模型、服务调用等,让学习者掌握ROS2消息传递的方法。 4. ROS2工具:介绍ROS2常用工具的使用方法,如rqt、rviz等,帮助学习者进行ROS2程序的开发和调试。 5. ROS2开发:引导学习者使用ROS2进行实际开发,包括创建ROS2包、编写节点、发布和订阅消息、调用服务等,让学习者具备实际应用ROS2的能力。 通过学习古月ROS2课件,学习者可以系统地学习ROS2的理论知识和实践技能,掌握ROS2的基本概念、架构和通信机制,能够使用ROS2进行机器人软件开发和相关研究。这对于想要从事机器人领域的学生、工程师以及科研人员来说,是一份非常有价值的教材。 ### 回答2: 古月 ROS2课件是一个针对ROS2使用的教学资料。ROS(机器人操作系统)是一种用于开发机器人软件的开源框架。而ROS2是ROS的第二代版本,相较于ROS1有许多改进和优化。 古月ROS2课件内容丰富,从入门到进阶,涵盖了ROS2的各个方面。首先,课件会介绍ROS2的概念和优势。相比ROS1,ROS2在分布式计算、实时性、可靠性和安全性等方面有所提升,这些优势将被详细讲解和说明。 其次,课件会介绍ROS2的基本操作和常用工具。学习者将了解如何创建ROS2的工作空间,如何使用ROS2的包管理工具来安装和管理软件包,以及如何编译和运行ROS2程序。此外,课件还会介绍ROS2中常用的调试工具和可视化工具,帮助学习者更好地理解和调试他们自己的ROS2应用程序。 然后,课件会详细介绍ROS2的通信机制和节点之间的交互。学习者将了解ROS2中的发布/订阅模式和客户端/服务器模式,并学习如何通过ROS2的通信机制来实现节点之间的数据传输和服务调用。 最后,课件还会涵盖一些高级主题,如ROS2的参数服务器、消息定义、时间同步和ROS2与其他框架的集成等。这些主题将帮助学习者更全面地了解ROS2的功能和扩展性,为他们在实际的机器人项目中应用ROS2提供更多的思路和指导。 总的来说,古月ROS2课件是一个系统全面的教学资料,适用于对ROS2感兴趣的初学者和有一定ROS1基础的开发者。通过学习该课件,学习者将掌握ROS2的基本概念和操作技能,能够使用ROS2开发和运行自己的机器人应用程序。 ### 回答3: 古月ros2课件是一套关于使用ROS2进行软件开发的教学资料。ROS2(Robot Operating System 2)是一个开放源代码的机器人操作系统,它提供了一套工具和库,用于帮助开发者构建和控制机器人系统。 这套课件旨在为学习ROS2的人员提供详细的指导和教学材料。它包括了ROS2的基础知识、安装和配置ROS2环境的步骤,以及ROS2使用的常见工具和一些示例项目的介绍。 课件首先介绍了ROS2的概念和架构,使学习者对ROS2的整体框架有一个清晰的理解。然后,课件详细讲解了如何在不同的操作系统上安装和配置ROS2,包括Linux和Windows。 接着,课件介绍了ROS2中常用的一些工具,例如ROS2包管理工具(colcon),ROS2消息通信库(rclcpp),ROS2消息调试工具(rqt)等。它们是开发ROS2应用程序所必需的工具,通过学习它们的使用方法,学习者可以更好地理解和应用ROS2的功能。 此外,课件还包含了一些基于ROS2的示例项目,如机器人导航、目标检测和路径规划等。这些示例项目帮助学习者将所学知识应用到实际的机器人开发中,提升他们的实践能力。 总的来说,古月ROS2课件是一份全面而易于理解的ROS2教学资料,对于想要学习和应用ROS2的开发者来说,它将提供很大的帮助和指导。无论是初学者还是有一定ROS经验的开发者,都可以通过这份课件快速入门和深入了解ROS2的开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值