ROS2安装与入门——古月居视频学习笔记

这篇具有很好参考价值的文章主要介绍了ROS2安装与入门——古月居视频学习笔记。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ros安装和入门(自己的学习笔记)

双系统安装Ubuntu方法:

在Ubuntu官网下载好https://cn.ubuntu.com/download/desktop

准备一个U盘作为启动盘该过程会对U盘格式化

开始->右键->磁盘管理->选择一个磁盘->右键->压缩卷;压缩出40~60G空白分区

下载Rufus

ROS2安装与入门——古月居视频学习笔记,音视频,笔记

插入U盘开机进入启动项(我的是按F12)选择u盘启动Ubuntu之后进入Ubuntu的安装即可

以下是学习视频内容,来源:【古月居】古月·ROS2入门21讲 | 带你认识一个全新的机器人操作系统_哔哩哔哩_bilibili

0 install

0.1

设置编码

$ sudo apt update && sudo apt install locales

$ sudo locale-gen en_US en_US.UTF-8

$ sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8

$ export LANG=en_US.UTF-8

添加源

$ sudo apt update && sudo apt install curl gnupg lsb-release$ sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

安装$ sudo apt update

$ sudo apt upgrade

$ sudo apt install tos-humble-desktop

环境变量

$ source /opt/ros/humble/setup.bash

$ echo "source /opt/ros/humble/setup.bash">>~/.bashrc

安装ros2包

$ sudo apt update

$ sudo apt install ros-humble-ros1-bridge

0.2开发环境配置

安装git

$ sudo apt install git

课程代码包下载:

$ git clone https://gitee.com/guyuehome/ros2_21_tutorial.git

同时官网安装VsCode,ded版,并安装扩展插件

0.3 workspace

src: Source Space

install: Install Space

build: Build Space

log: Log Space

创建工作空间

$ mkdir -p ~/dev_ws/src

$ cd ~/dev_ws/src

自动安装依赖

$ sudo apt install -y python3-pip

$ sudo pip3 install rosdepc

$ sudo rosdepc init& rosdepc update

(如果不成功使用:$ rosdepc update --include-eol-distros)

$ cd ..

$ rosdepc install -i --from-path src --rosdistro humble -y

编译工作空间

$ sudo apt install python3-colcon-ros

$ cd ~/dev_ws/

$ colcon build

设置环境变量:

$ source install/local_setup.sh

$ echo " source ~/dev_ws/install/local_setup.sh">>~/.bashrc

(创建功能包: ros2 pkg create --build-type <build-type><package_name>

$ cd ~/dev_ws/src

$ ros2 pkg create --build-type ament_cmake learning_pkg_c

$ ros2 pkg create --build-type ament_python learning_pkg_python

编译功能包:

$ colcon build

$ source install/local_setuo.bash)

1.节点:可以比喻成工人独立完成一部分任务

执行具体任务的进程;独立运行的可执行文件;可以使用不用的编程语言;可分布式运行在不同主机;通过节点名称进行管理

先colcon build进行编译,编译成功后才能进行运行

import rclpy #ros2、python接口库
from rclpy.node import Node #ROS2 节点类

#面向过程的编程方法
def main(args=Node):#ROS2节点主入口main函数
    rclpy.init(args=args)#接口初始化
    node=Node(  )#创建ros2节点对象并进行初始化

    ###功能部分

    node.destroy_node()#销毁节点对象
    rclpy.shutdown()#关闭ROS2、python接口

#建议使用面向对象方法
class HelloworldNode(Node):
    def _init_(self,name)#节点父类初始化
   
    ###功能部分
    
def main(args=None):#ROS2节点主入门main函数
    rclpy.init(args=args)#ROS2 python接口初始化
    node = HelloWorldNode(" ")#创建ROS2节点对象并初始化
    rclpy.spin(node)#循环等待ROS2退出
    node.destory_node()#销毁节点对象
    rclpy.shutdown()#关闭接口

#setup配置
    'node_helloworld =learning_node node_helloworld:main()'

编程接口初始化

创建节点并初始化

实现节点功能

销毁节点并关闭接口

$ ros2 run learning_node node_helloworld/node_helloworld_class

$ ros2 run learning_node node_object (识别苹果)

可以更改图片路径去识别自己加载的图片

$ ros2 run learning_node node_object_webcam(识别摄像头中的画面)

2.话题topic:节点之间传递数据的桥梁

DDS的发布/订阅模型;订阅者或发布者可以不唯一,多对多;异步通信机制;.msg文件通信的消息结构

适合单项传输

import rclpy #ros2、python接口库
from rclpy.node import Node #ROS2 节点类
from std_msgs.msg import String
'''
创建一个发布者节点
'''
class PubishNode(Node):
    def _init_(self,name)#节点父类初始化
    self.pub =self.create_pubisher(String,'chatter',10)#创建发布者(消息类型,话题名,队列)
    self.timer=self.create_timer(0.5,self.timer_callback)#创建一个定时器(单位为秒的周期,定时执行的回调函数)
    def###功能部分

def main(args=None):#ROS2节点主入门main函数
    rclpy.init(args=args)#ROS2 python接口初始化
    node = PublisherNode("  ")#创建ROS2节点对象并初始化
    rclpy.spin(node)#循环等待ROS2退出
    node.destory_node()#销毁节点对象
    rclpy.shutdown()#关闭接口

#SubscribeNode相似
#setup配置
    'topic_helloworld_pub =learning_topic.topic_helloworld_pub:main()

编程接口初始化

创建节点并初始化

创建订阅者对象

回调函数处理话题数据

销毁节点并关闭接口

$ros2 run learning_topic topic_webcam_pub/sub(摄像头发布和订阅图像识别)

话题通信:

$sudo apt install ros-humble-usb-cam#针对相机的标准驱动

$ros2 run usb_cam usb_cam_node_exe#相机驱动节点

$ros2 run learning_topic topic_webcam_sub#订阅者节点

不同点:之前是使用opencv的相机驱动改成了ros2中的标准相机驱动

状态查看:

$ ros2 topic list

$ ros2 topic info /image_raw#查看该话题详细信息

$ ros2 topic bw /image_raw#查看该话题带宽

3.服务:节点间的你问我答(请求和反馈)

客户端/服务端(C/S)模型;同步通信机制;服务器端唯一,客户端可以不唯一,一对多;.srv文件定义请求和应答数据结构

适合一问一答双向,同步性要求较高的

服务通信:

$ros2 run learning_service service_adder_server

$ros2 run learning_service service_adder_client 2 3(加法求和器)

###主要函数
##创建服务器
from learning_interface.srv import AddTwoInts

class adderServer(Node):
    def _init_(self, name):
        super()._init_(name)
        self.srv = self.create_service(AddTwoInts,'add_two_ints',self.adder_callback)
    #功能
def main(args=None):#同上
    
##创建客户端
from learning_interface.srv import AddTwoInts

class adderClient(Node):
    def _init_(self, name):
        super()._init_(name)
        self.client = self.create_client(AddTwoInts,'add_two_ints')#创建客户端对象(服务器类型、服务名)
        while not self.client.wait_for_service(timeout_sec=1.0):#循环等待服务器成功启动
            self.get_logger().info(service not available,awiting again...')
        self.request = AddTwoInts.Request()#创建服务请求的数据对象

    def send_request(self):#创建一个发送服务请求的函数
        #...
        #...
        self.future = self.client.call_async(self.request)#异步方式发送服务请求
    def main(args=None):
        rclpy.spin_once(node)
        if node.futuew.done():  #数据是否处理完成
            try:
                response = node.future.result()  #接收服务器的反馈数据
            except Exception as e:
                node.get_logger().info(
                    'Service call failed %r' % (e,))
            else:
                node.get_logger().info(  #接收到的反馈信息打印输出
                    'Result of add_two_ints: for %d +%d = %d' % (node.request.a, node.request.b, response.sum))
            break
    node.destroy_node()
    rclpy.shutdown()

编辑接口初始化

创建节点并初始化

创建服务器端对象

通过回调函数处进行服务

向客户端反馈应答结果

销毁节点并关闭接口

创建接口初始化

创建节点并初始化

创建客户端对象

创建并发送请求数据

等待服务器端应答数据

销毁节点并关闭接口

服务通信:

$ ros2 run usb_cam usb_cam_node_exe #相机驱动节点,发布图像数据

$ ros2 run learning_service service_object_server#视觉识别节点,订阅图像数据,并且集成一个服务器端,随时提供目标的位置

$ ros2 run learning_service service_object_client#客户端节点,机器人目标跟踪的节点

4.通信接口:数据传递的标准结构

ROS2安装与入门——古月居视频学习笔记,音视频,笔记

5.动作:完整行为的流程管理

客户端/服务器(C/S)模型;服务器端唯一,客户端可以不唯一;同步通信机制;.action文件定义通信接口的数据结构

小海龟仿真旋转动作:

$ ros2 run turtlesim turtlesim_node

$ ros2 run turtlesim turtle_teleop_key

$ ros2 action info /turtle1/rotate_absolute

$ ros2 action send_goal /turtle1/rotate_absolute turtlesim/action/RotateAbsolute "{theta: -1.57}"

$ ros2 action send_goal /turtle1/rotate_absolute turtlesim/action/RotateAbsolute "{theta: -1.57}" --feedback

ROS2安装与入门——古月居视频学习笔记,音视频,笔记

动作通信:(机器人完成360度旋转)

$ ros2 run learning_action action_move_server

$ ros2 run learning_action action_move_client

6.参数:机器人系统的全局字典

全局共享字典;由键和值组成;可实现动态监控

小海龟仿真

$ ros2 run turtlesim turtlesim_node

$ ros2 run turtlesim turtle_teleop_key

$ ros2 param list (/get 节点名 某个参数 : 来得到详细信息; /set 节点名 某个参数 数值 : 来更改参数; /dump 节点名 >> 某个文件 : 来转移其中所有参数的具体值 ;/load 节点名 文件名 : 更新为文件中的所有参数)

参数应用:

$ ros2 run usb_cam usb_cam_node_exe

$ ros2 run learning_parameter param_object_detect

$ ros2 param set param_object_detect red_h_upper 180  #(更改参数)

7.分布式通信:多计算平台的任务分配

如使用树莓派安装ros系统连接各个装置如驱动、电动机、传感器等,收集数据,电脑PC端接收数据并发布指令。

树莓派和电脑只需要连接如同一个网络即可实现通信

ROS2安装与入门——古月居视频学习笔记,音视频,笔记

8.通信模式DDS:机器人的神经网络 Data Distribution Service

是数据为中心的模式,通信间包含很多并行的通路,每个节点可以只关注到需要的东西,而忽略不需要关注的东西。专门为实时系统设计的数据分发/订阅标准

ROS2中DDS的特性:质量服务策略如deadline、history、reliability(beat effoet/reliable)、durability。

在命令行中配置DDS:

ros2 topic pub /chatter std_msgs/msg/Int32 "data: 42" --qos-reliability best_effort#发布数据

ros2 topic echo /chatter --qos-reliability reliable

ros2 topic echo /chatter --qos-reliability best_effort #(qos设置必须一致才能产生通讯连接)

ros2 topic info/chatter --verbose    #(查看该话题的详细信息)

9.Launch:多节点启动与配置脚本

可以通过launch对节点进行重命名,避免不能同时启动同一个模型

可以对参数进行配置

10.TF:机器人坐标系管理

Base Frame、World Frame、Tool Frame

查看两个小海龟坐标系的变动

sudo apt install ros-humble-turtle-tf2-py (ros-humble-tf2-tools)

sudo pip3 install transforms3d

ros2 launch turtle_tf2_py turtle_tf2_demo.launch.py #打开两个小海龟的launch,其中一个小海龟会追着另一个小海龟走

ros2 run turtlesim turtle_teleop_key文章来源地址https://www.toymoban.com/news/detail-855093.html

ros2 run tf2_tools view_frames #订阅5秒钟内的坐标系结构并绘制保存tf结果

ros2 run tf2_ros tf2_echo turtle2 turtle1 #得到任意两个坐标系相对变化的具体数值

ros2 run rviz2 rviz2 #可视化

相对位置不会发生变化:

静态TF(变化)广播:ros2 run learning_tf static_tf_broadcaster

ros2 run tf2_tools view_frames

TF监听:ros2 run learning_tf tf_listener

11.URDF:统一机器人描述格式

解析URDF中使用XML格式描述的机器人模型,包括link和joint子深深及相关属性的描述信息

<link>

描述机器人的某个刚体部分的外观和物理属性;描述连杆尺寸、颜色,形状,惯性矩阵,碰撞参数等

每个link会成为一个坐标系

其中<visual>部分描述机器人的外观视觉效果,<collision>描述碰撞,运动中的状态

<joint>

描述两个link之间的关系,分为六种类型

ROS2安装与入门——古月居视频学习笔记,音视频,笔记

包括关节运动的位置和速度限制;描述机器人的关节运动学和动力学属性

最后全都放在<robot>中

模型示例:

ros2 launch learning_urdf display.launch.py

查看模型结构:

在模型文件夹下 $ urdf_to_graphviz mbot_base.urdf

12.Gazebo:三维物理仿真平台

具备强大的物理引擎

高质量的图形渲染

可以测试机器人算法、机器人设计、现实情景下的回溯测试

 file: .bashrc *** source /usr/share/gazebo/setup.bash

sudo apt install ros-humble-gazebo-*

ros2 launch gazebo_ros gazebo.launch.py

通过宏定义的方式把各个模块组合到一起

配置模型中的仿真参数:

为link添加惯性参数和碰撞属性;为link添加gazebo标签;为joint添加传动装置;添加gazebo控制器插件

运动仿真:

ros2 launch learning_gazebo load_urdf_into_gazebo.launch.py #启动仿真文件

ros2 run teleop_twist_keyboard teleop_twist_keyboard #启动键盘控制

13.Rviz 三维可视化工具

可以使用可扩展标记语言XML对机器人、周围物体等任何实物进行尺寸、质量、位置、材质、关节等属性的描述并在界面中呈现

通过图形化方式实时显示机器人传感器的信息、运动状态、周围环境的变化等

也可以在Rviz的控制界面下,通过按钮、滑动条、数值等方式控制机器人的行为

启动Rviz ros2 run rviz2 rviz2

14.RQT:模块化可视化工具

logging-console对日志信息进行管理和搜索;topic-massager pubulisher可视化的话题发布和服务调用;对数据订阅并直接画成曲线图

$ sudo apt install ros-humble-rqt

$ rqt

小海龟仿真:

ros2 run turtlesim turtlesim_node

ros2 run turtlesim turtle_teleop_key

到了这里,关于ROS2安装与入门——古月居视频学习笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【ROS2 入门】虚拟机环境 ubuntu 18.04 ROS2 安装

             大家好,我是虎哥,从今天开始,我将花一段时间,开始将自己从ROS1切换到ROS2,做为有别于ROS1的版本,做了很多更新和改变,我还是很期待自己逐步去探索ROS2中的惊喜。在安装过程中我也遇到的一些坑,我自己也尝试填了一部分,未必是全部,但是相信集合大

    2024年01月17日
    浏览(58)
  • ROS2学习笔记三:话题Topic

    目录 前言 1 话题简介 2 常用指令 3 RCLCPP实现实现话题 3.1 创建工作空间 3.2 代码编写 3.2.1 发布端编写 3.2.2 发布端编写 ROS2中的一个重要概念是话题(Topic)。话题是一种通过发布者和订阅者之间进行异步通信的机制。发布者(Publisher)将消息发布到特定的话题上,而订阅者(

    2024年01月20日
    浏览(42)
  • ros2官方文档(基于humble版本)学习笔记

    由于市面上专门讲ROS 2开发的书籍不多,近期看完了《ROS机器人开发实践》其中大部分内容还是基于ROS 1写的,涉及topic,service,action等一些重要的概念,常用组件,建模与仿真,应用(机器视觉,机器语音,SLAM,机械臂),最后一章写了ROS 2的安装,话题通信和服务通信的示

    2024年02月11日
    浏览(39)
  • ROS2学习(一):Ubuntu 22.04 安装 ROS2(Iron Irwini)

    一、ROS2(Iron Irwini)介绍 官方文档 Iron Irwini版本支持的平台如下: 二、ROS2(Iron Irwini)安装 1.设置编码 2.使能代码库 现在用apt添加带ROS 2 GPG 将存储库添加到源列表中 3.安装ROS2 Iron 三、ROS2测试 在terminal 1 运行下面的指令: 在terminal 2 运行下面的指令: 四、ROS2卸载 删除RO

    2024年02月10日
    浏览(41)
  • ROS2 Navigation 进阶教程学习笔记 第一章

    Nav2提供了新的拱你和工具,使创建机器人应用程序变得更容易 在本单元中,将学习 1. 通过simple Commander API进行基本Nav2操作 2. 通过followwaypoints使用waypoint follower和task executor插件 3. 禁区和限速区简介 然后您将基于Nav2创建一个基本的自主机器人demo。您将经常在一个仿真仓库中

    2024年02月08日
    浏览(43)
  • ros2学习笔记-CLI工具,记录命令对应操作。

    启动前要检查环境变量: ROS_DOMAIN_ID 和 ROS_LOCALHOST_ONLY 。如果通信时PIN不同,应该首先考虑是不是环境变量设置错误。 Configuring environment 记得source一下ros2。 Turtlesim 是一款用于学习 ROS2 的轻量级模拟器。 它说明了 ROS 2 在最基本的层面上做了什么,让您了解以后将如何处理真

    2024年01月21日
    浏览(41)
  • 【ROS2机器人入门到实战】Cartographer介绍与安装

    当前平台文章汇总地址:ROS2机器人从入门到实战 获取完整教程及配套资料代码,请关注公众号鱼香ROS获取 教程配套机器人开发平台:两驱版| 四驱版 为方便交流,搭建了机器人技术问答社区:地址 fishros.org.cn Cartographer是Google开源的一个可跨多个平台和传感器配置以2D和3D形

    2024年02月02日
    浏览(43)
  • 【ROS2机器人入门到实战】Nav2导航框架介绍与安装

    当前平台文章汇总地址:ROS2机器人从入门到实战 获取完整教程及配套资料代码,请关注公众号鱼香ROS获取 教程配套机器人开发平台:两驱版| 四驱版 为方便交流,搭建了机器人技术问答社区:地址 fishros.org.cn 上一节我们对机器人导航过程中所用到的2D地图进行了介绍,本节

    2024年02月04日
    浏览(35)
  • 【ROS2机器人入门到实战】ROS2服务入门

    当前平台文章汇总地址:ROS2机器人从入门到实战 获取完整教程及配套资料代码,请关注公众号鱼香ROS获取 教程配套机器人开发平台:两驱版| 四驱版 为方便交流,搭建了机器人技术问答社区:地址 fishros.org.cn 大家好,帅鱼又蹬蹬蹬的游回来了。本节小鱼将要带大家一起了解

    2024年02月07日
    浏览(54)
  • 【ROS2机器人入门到实战】ROS2话题入门

    当前平台文章汇总地址:ROS2机器人从入门到实战 获取完整教程及配套资料代码,请关注公众号鱼香ROS获取 教程配套机器人开发平台:两驱版| 四驱版 为方便交流,搭建了机器人技术问答社区:地址 fishros.org.cn 话题是ROS2中最常用的通信方式之一,话题通信采取的是订阅发布

    2024年02月04日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包