huazai5201995

个性签名:

stay hungry stay foolish

  • 2025-03-02
  • 发表了主题帖: 《ROS2智能机器人开发实践》阅读分享三之ROS2常用工具

    本帖最后由 huazai5201995 于 2025-3-2 22:15 编辑  ROS2的常用工具 TF TF(Transform Library)是一个用于管理坐标系变换的工具。它允许你在不同的坐标系之间进行转换,并跟踪这些坐标系之间的关系。TF2是TF的升级版,提供了更好的性能和更多的功能。 对于开发机械臂来说这个是个很不错的工具,可以帮助开发者管理机械臂各个关节和末端执行器的坐标系关系。通过TF,也以轻松地在不同坐标系之间进行转换,并实现机械臂的运动规划和控制,将运动学计算做了很好的。 其次TF对于多节点机器人之间的协同功能的开发,也很有帮助,比如机器人可以动态监听其他终端传回的信息,这使得像移动舰载上的着陆和特殊目标跟随的任务更容易实现。 Gazebo sim(虚拟机环境需要关闭加速3D加速功能) Gazebo是ROS2开发中最为常用的的仿真工具,不仅能够能够模拟复杂的物理环境、传感器和机器人行为,还可以用于开发、测试和验证机器人算法。 由于在设计阶段和测试阶段,硬件、结构、电机和测试环境这些实体并不是我们一个念头就可以准备就绪的,所以仿真先行,在验证算法有眉目之后,在去样机上测试,可以有效加速开发进度。 仿真开发流程 创建机器人模型:使用 URDF 或 SDF 文件定义机器人。 搭建仿真环境:创建 Gazebo 世界文件(World File)。 加载机器人到 Gazebo:在仿真环境中加载机器人模型。 添加传感器和控制器:为机器人配置传感器(如摄像头、激光雷达)和控制器(如关节控制器)。 运行仿真:启动 Gazebo 并观察机器人行为。 与 ROS 2 集成:通过 ROS 2 控制机器人并处理传感器数据。 调试和优化:根据仿真结果调整机器人模型或算法。 由于ROS 2 节点配置、机器人模型和Gazebo 世界文件都是通过XML文件描述的,学习 XML 文件的使用是掌握 ROS 2 开发的重要一步。 XML(eXtensible Markup Language)是一种标记语言,用于存储和传输数据。   URDF(Unified Robot Description Format)用于定义机器人模型,包括连杆(link)和关节(joint)。 示例:URDF 文件 <robot name="my_robot"> <link name="base_link"> <visual> <geometry> <box size="1 1 1"/> </geometry> </visual> </link> <link name="wheel_link"> <visual> <geometry> <cylinder radius="0.2" length="0.1"/> </geometry> </visual> </link> <joint name="base_to_wheel" type="continuous"> <parent link="base_link"/> <child link="wheel_link"/> <origin xyz="0 0.5 0" rpy="0 0 0"/> </joint> </robot> 关键标签:         <robot>:定义机器人模型。         <link>:定义机器人连杆。         <joint>:定义连杆之间的关节。         <visual>:定义连杆的可视化属性。         <geometry>:定义连杆的几何形状(如盒子、圆柱体等)。   SDF(Simulation Description Format)用于定义 Gazebo 仿真环境中的模型和世界。 示例:SDF 文件 <sdf version="1.6"> <model name="my_robot"> <link name="base_link"> <collision name="collision"> <geometry> <box> <size>1 1 1</size> </box> </geometry> </collision> <visual name="visual"> <geometry> <box> <size>1 1 1</size> </box> </geometry> </visual> </link> </model> </sdf> 关键标签:         <sdf>:定义 SDF 文件的版本。         <model>:定义仿真模型。         <link>:定义模型的连杆。         <collision>:定义碰撞属性。         <visual>:定义可视化属性。 Launch 文件用于启动 ROS 2 节点和配置参数。 示例:Launch 文件 <launch> <node name="talker" pkg="demo_nodes_cpp" exec="talker" output="screen"/> <node name="listener" pkg="demo_nodes_cpp" exec="listener" output="screen"/> </launch> 关键标签:         <launch>:定义 Launch 文件。         <node>:定义要启动的 ROS 2 节点。             name:节点名称。             pkg:节点所属的包。             exec:可执行文件名称。             output:输出方式(如 screen 或 log)。   RViz(ROS Visualization Tool) RViz是 ROS 和 ROS 2 中用于可视化机器人数据的强大工具。它支持显示传感器数据、机器人模型、路径规划结果、点云、图像等多种数据类型。RViz 是机器人开发中不可或缺的工具,用于调试和验证算法。 主要功能包括: 显示机器人模型:加载和显示 URDF 或 Xacro 文件定义的机器人模型。 可视化传感器数据:显示激光雷达、摄像头、IMU 等传感器的数据。 显示 TF 坐标系:查看机器人各个坐标系之间的变换关系。 路径规划和导航:显示地图、路径规划结果和导航目标。 调试工具:提供交互式标记(Interactive Markers)和工具插件。 RViz 的基本使用 (1) 显示机器人模型 在显示面板中点击 Add 按钮。 选择 RobotModel 插件。 在 Robot Description 参数中填写 /robot_description。 如果机器人模型正确加载,RViz 中将显示机器人。 (2) 显示 TF 坐标系 在显示面板中点击 Add 按钮。 选择 TF 插件。 启用插件后,RViz 中将显示机器人各个坐标系之间的变换关系。 (3) 显示激光雷达数据 在显示面板中点击 Add 按钮。 选择 LaserScan 插件。 在 Topic 参数中填写激光雷达数据的话题(如 /scan)。 如果激光雷达数据正确发布,RViz 中将显示扫描结果。 (4) 显示点云数据 在显示面板中点击 Add 按钮。 选择 PointCloud2 插件。 在 Topic 参数中填写点云数据的话题(如 /point_cloud)。 如果点云数据正确发布,RViz 中将显示点云。 (5) 显示地图 在显示面板中点击 Add 按钮。 选择 Map 插件。 在 Topic 参数中填写地图数据的话题(如 /map)。 如果地图数据正确发布,RViz 中将显示地图。             ROS2 的工具非常丰富,借助这些工具可以,让我们在没有硬件的情况下,也实现自己的机器人设计,也能在实际开发中避免前期设计中成本的浪费,也可以在设计过程检验结构设计的合理性和可实现性,《ROS2智能机器人开发实践》对各个工具的描述非常详细,推荐给每一个对机器人感兴趣的同学,你真会收获惊喜。  

  • 2025-02-23
  • 发表了主题帖: 《ROS2智能机器人开发实践》阅读分享二之ROS2开发环境搭建及基础知识

    本帖最后由 huazai5201995 于 2025-2-23 00:26 编辑    ROS2开发环境搭建及基础知识 在《ROS2智能机器人开发实践》中第二章使用了100页的篇幅来详细讲述ROS2的开发环境搭建、基础操作和ROS2的具体使用,用详尽的步骤帮助新手小白可以成功上手Linux环境下的ROS2开发。对于初次搭建环境的小白,可以先以简单粗暴的脚本指令来安装,避免研究搭建环境遇到各种问题消磨自己高涨的热情,书每读一遍都会增加自己不同深度的体会,在持续的开发中,再细细钻研问题。   1. ROS开发环境搭建 工欲善其事必先利其器,作为开发ROS2的第一步,我们简单快速搭建好开发环境可以方便我们更好的学习ROS2开发。 1.1 获取Ubuntu 24.04系统 1.1.1 虚拟机安装Ubuntu 24.04桌面操作系统 使用VirtualBox7来安装虚拟桌面环境,如何安装虚拟机和参考(How to run an Ubuntu Desktop virtual machine using VirtualBox 7 | [Ubuntu]()) [Ubuntu 24.04.1 LTS系统镜像下载]https://releases.ubuntu.com/24.04/ubuntu-24.04.1-desktop-amd64.iso) 1.1.2 安装WINDOWS WSL环境(默认无GUI) 直接在microsoft store选择Ubuntu 24.04进行下载安装;Ubuntu - Windows官方下载 | 微软应用商店 | Microsoft [Store]() 1.2 安装ROS开发环境 1.2.1终端一行代码安装 推荐使用古月居一键安装指令`wget oss.guyuehome.com/upload/2024/11/111120478121/install.txt -O install_ros && . install_ros` 鱼香ROS一键安装指令`wget http://fishros.com/install -O fishros && . fishros` 1.2.2安装完成后测试 发布者发送消息 $ `ros2 run demo_nodes_cpp talker` 接收订阅者消息 $`ros2 run demo_nodes_py listener`     至此我们的ROS2环境已经搭建完成,可以开始我们的学习了。 2. 基础知识 2.1工作空间 ROS 2 工作空间(Workspace)是开发 ROS 2 项目的核心概念,它是一个包含 ROS 2 包(packages)和依赖项的目录结构。工作空间为开发者提供了一个组织代码、构建和测试 ROS 2 应用程序的环境。 我们可以下载书籍配套的代码进行学习 # 创建功能包 $mkdir -p ~/dev_ws/src # 拉取代码仓库 $ git clone https://gitee.com/guyuehome/originbot_desktop.git #打开工作空间目录 $ cd ~/dev_ws ROS2的工作空间下包含如下目录 workspace_folder/           # 工作空间根目录 src/             # 源代码目录,存放 ROS 2 包 package_1/       # 第一个 ROS 2 包 CMakeLists.txt   # CMake 配置文件 package.xml     # 包的元数据文件 src/             # 包的源代码 include/         # 包的头文件 package_2/       # 第二个 ROS 2 包           ...   build/           # 构建过程中生成的中间文件 install/         # 安装目录,包含构建后的可执行文件和库   log/             # 日志文件,记录构建和运行时的信息   接下来安装好依赖项和编译工具就能编译我们的工作空间了 2.2节点 节点 是一个独立的可执行文件,通常用 C++ 或 Python 编写。 每个节点可以发布(Publish)或订阅(Subscribe)话题(Topic),提供(Provide)或调用(Call)服务(Service),以及执行动作(Action)。 节点之间通过 ROS 2 的中间件(如 DDS)进行通信,可以动态启动和停止,具有良好的模块化和可扩展性。 通过节点,我们可以实现数据采集:例如从传感器读取数据;数据处理:例如对传感器数据进行滤波或分析;控制:例如发送控制指令给执行器;通信:与其他节点交换信息。 我们可以通过如下命令运行代码中的节点 $ ros2 run learning_node node_helloworld_class # Python $ ros2 run learning_node_cpp node_helloworld_class # C++   节点在ROS2中的生命周期分为三个阶段:创建:节点被实例化并注册到 ROS 2 系统中,运行:节点执行其逻辑代码,例如发布或订阅话题,销毁:节点完成任务后被销毁,释放资源。 2.3话题 话题(Topic) 是节点之间进行异步通信的主要机制。话题基于发布/订阅模型(Publish/Subscribe),允许一个节点发布消息,而其他节点可以订阅并接收这些消息。话题是 ROS 2 中实现数据交换的核心方式之一,广泛应用于传感器数据传递、控制指令发送等场景 我们可以通过简单的实例就可以实现话题的发布和订阅. $ ros2 run learning_topic topic_helloworld_pub $ ros2 run learning_topic topic_helloworld_sub 2.4 服务 服务(Service) 是一种基于请求/响应模型的同步通信机制。与话题(Topic)的发布/订阅模型不同,服务允许一个节点(客户端)向另一个节点(服务端)发送请求,并等待响应。服务机制适用于需要即时反馈的场景,例如任务执行、状态查询等。   特性 服务(Service) 话题(Topic) 通信模型 请求/响应模型 发布/订阅模型 同步性 同步通信 异步通信 适用场景 即时任务、状态查询 数据流、持续通信 QoS 配置 有限的 QoS 配置 丰富的 QoS 配置   2.5通信接口 ,通信接口 是节点之间交换数据的核心机制。ROS 2 提供了多种通信接口,包括 话题(Topic)、服务(Service)、动作(Action) 和 参数(Parameter)。每种接口适用于不同的场景,能够满足机器人系统中多样化的通信需求。   2.6通信接口对比 特性 话题(Topic) 服务(Service) 动作(Action) 参数(Parameter) 通信模型 发布/订阅 请求/响应 目标/反馈/结果 键值对存储 通信方式 异步 同步 异步 同步 数据流向 单向 双向 双向 双向 适用场景 持续数据流(如传感器数据) 即时任务(如状态查询) 长时间任务(如导航) 配置管理(如参数调整) QoS 支持 丰富 有限 丰富 无 典型应用 传感器数据发布、控制指令传递 任务执行、状态查询 复杂任务执行(如路径规划) 节点配置、运行时参数调整   通过第二章的学习,我对于ROS2的基础知识有了初步的了解,掌握了基本的环境搭建,书里面对于操作步骤和操作结果的演示写的比较详细,对于初次学习者非常友好,按图索骥,进步很快。

  • 2025-01-28
  • 发表了主题帖: 《ROS2智能机器人开发实践》阅读分享一之ROS2初识

    本帖最后由 huazai5201995 于 2025-2-5 22:41 编辑         当前机器人行业随着自然语言大模型和人工智能的崛起也焕发了往日的荣光,让机械设备充满了无限可能。在2000年之前,机器人主要用于工业生产,智能化程度不高,人们主要集中于电气结构,伺服电机和减速电机等方向发力,在2000到2015年之间,机器人通过融合MEMS传感器获得了强大的感知能力,促进了各类型无人机和AGV的蓬勃发展,现在处于机器人的智能时代,机器人在尽可能独立处理任务,服务型机器人 、自动驾驶机器人和仿生类机器人正在通过强化学习和大语言模型消除自然语言与机器指令之间的鸿沟。        ROS的起源可以追溯到2007年,一群来自斯坦福大学的才华横溢的学生,他们为了解决日渐复杂的机器人开发工作,打造了这样一个开源且能支持无限创意的平台,经历前几年野蛮而快速的增长,ROS逐渐迭代稳定,2014年起,ROS跟随Ubuntu系统,每两年推出一个长期支持版,每个版本支持五年时间,这标志着ROS的成熟,也让ROS加快了普及的步伐。        如下是ROS主要版本的发布和终止时间:   Ubuntu ROS1 Release date End of Life 14.04 LTS Indigo lgloo July 22nd, 2014 April, 2019 16.04 LTS Kinetic Kame May 23rd, 2016 April, 2021 18.04 LTS Melodic Morenia May 23rd, 2018 May, 2023 20.04 LTS Noetic Ninjemys May 23rd, 2020 May, 2025   Ubuntu ROS2 Release date End of Life 20.04 LTS Foxy Fitzroy June 5th, 2020 2025/5 20.04 LTS Galactic Geochelone May 23rd, 2021 2022/11 20.04 LTS Humble Hawksbill May 23rd, 2022 2027/5 22.04 LTS Iron Irwini May 23rd, 2023 2024/11 24.04 LTS Jazzy Jalisco May 23rd, 2024 2029/11   ROS1与ROS2的特性对比 1. 系统架构 ROS1:采用中心化架构,依赖 Master 节点 管理所有节点的通信。如果 Master 节点崩溃,整个系统将无法正常运行。 ROS2:采用 去中心化架构,取消了 Master 节点,节点之间通过 DDS(Data Distribution Service) 实现自发现和通信,系统更加稳定和灵活。 2. 操作系统支持 ROS1:仅支持 Linux 系统,限制了其在其他平台上的应用。 ROS2:支持多平台,包括 Linux、Windows、macOS 和嵌入式实时操作系统(RTOS),适用性更广。 3. 通信机制 ROS1:基于 TCP/UDP 协议,通信依赖 Master 节点,缺乏实时性和安全性,网络不稳定时容易丢包。 ROS2:采用 DDS 作为通信协议,支持多播、加密和认证,通信更可靠,适用于复杂网络环境。 4. 节点管理 ROS1:节点与可执行文件一一对应,一个可执行文件只能运行一个节点。 ROS2:支持 生命周期节点(Lifecycle Node),节点状态可管理(如配置、激活、去激活等),且一个可执行文件可运行多个节点。 5. 编译系统 ROS1:使用 catkin 作为编译系统,适合小型项目,但在大型项目中容易出现编译问题。 ROS2:引入 colcon 作为编译工具,支持多种构建系统(如 ament),编译更高效,适合大型项目。 6. 实时性与安全性 ROS1:缺乏实时性支持,安全性较低,通信数据未加密。 ROS2:支持实时性操作,通信数据可加密,更适合工业级应用和产品化场景。 7. 开发语言与 API ROS1:主要基于 C++98 和 Python 2,API 设计较为陈旧。 ROS2:支持 C++11/14/17 和 Python 3,API 设计更现代化,代码可读性和可移植性更强。 8. 工具与生态 ROS1:工具链较为分散,命令行工具如 rosrun、rostopic 等独立存在。 ROS2:工具链更集成,命令行统一为 ros2 前缀(如 ros2 run、ros2 topic),使用更方便。 9. 适用场景 ROS1:适合学术研究和小型机器人项目,但对多机器人系统、实时性和安全性要求高的场景支持不足。 ROS2:适合工业应用、多机器人系统、自动驾驶等复杂场景,支持产品化部署。           为了更好的学习ROS,可以选择更为友好的ROS2 Jazzy版本来作为入门和精进,正好赶上这次活动 把手里的RDK X3开发板跑起来,配合上《ROS2智能机器人开发实践》好好学学习一下ROS2的开发流程。         此外我国的机器人产业也在蓬勃发展,国产化实时操作系统领域百花齐放,不少已经在机器人、AGV、无人机、无人船领域获得广泛应用。下面是国内实时操作系统的特性介绍: 1. 道系统(Delta OS):主要应用于军工装备领域,具有微秒级的响应时间和基于优先级抢占的实时任务调度策略。它已经在多兵种的装备上得到了广泛应用,并成为了东土科技防务业务的重要组成部分。 2. 翼辉(Sylix OS):一个功能全面、稳定可靠的实时操作系统平台,面向轨道交通、智能电网、航空航天等多个领域。它以其强大的实时性能和稳定性,在民用工业领域占据了重要地位。 3. 天脉系统(ACore OS):起源于航空工业计算所,主要用于机载电子设备。它突破了多项关键技术,具有应用能力强、结构简洁高效等优点,并已经向多家用户单位成功交付。 4.  望获onewos实时Linux系统不同于传统的微内核实时操作系统,望获实时Linux系统具备硬实时能力的同时,兼容丰富的Linux生态环境,并且提供Posix1003.13-2003、VxWorks、GJB7714接口兼容层。在这些环境中开发的应用,可快速移植至望获实时Linux系统。 5. 赛睿德(RT-Thread):一个集实时操作系统内核、中间件组件和开发者社区于一体的技术平台。它以组件完整丰富、高度可伸缩、简易开发等特点著称,并被广泛应用于能源、车载、医疗等多个行业。       参考资料:       1.https://wiki.ros.org/       2.引言 - 图书资源       3.全国大学生智能车竞赛(智慧医疗机器人创意赛)_免费高速下载|百度网盘-分享无限制       4. ORIGINBOT - 乐享机器人开发    

  • 2025-01-24
  • 加入了学习《现代机器人学》,观看 概述kinematics

  • 回复了主题帖: 一个能走的人形机器人5w+贵吗?

    AlexBot是一款开源的双足机器人,设计上性能增强,结构更加合理。我们已经为机器人开发了一套完整的开源硬件,包括驱动系统,它可以让机器人动态行走。虽然它的性能可能无法与Unitree H1等商用机器人相媲美,但我们的设计是开源且具有成本效益的。 Alexhuge1/Alexbot: 一个全开源低成本的双足机器人(2万元($3000))A Fully Opensourced Humanoid Robot with only $3000 --- Alexhuge1/Alexbot: 一个全开源低成本的双足机器人(2万元($3000))A Fully Opensourced Humanoid Robot with only $3000

  • 2025-01-20
  • 回复了主题帖: 读书活动入围名单:《ROS2智能机器人开发实践》

    个人信息无误,确认可以完成阅读分享计划

  • 2024-03-12
  • 加入了学习《深入浅出玩转FPGA视频教程2020版(特权同学)》,观看 FPGA基本概念

最近访客

< 1/2 >

统计信息

已有12人来访过

  • 芯积分:32
  • 好友:1
  • 主题:3
  • 回复:13

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言