ROS 介绍 iot ros robot 发布时间: 2023-10-01 更新时间: 2024-09-22 总字数:1765 阅读时间:4m 作者:谢先斌 IP上海 分享 网址 Robot Operating System (ROS, 机器人操作系统) 是专为机器人软件开发所设计出来的一套电脑操作系统架构。 介绍 ROS 是一个开源的元级操作系统,2007 年 11 月,提供类似于操作系统的服务,包括硬件抽象描述、底层驱动程序管理、共用功能的执行、程序间消息传递、程序发行包管理,它也提供一些工具和库用于获取、建立、编写和执行多机融合的程序 ROS1 架构中,所有节点需要使用 Master 进行管理 ROS2 使用基于 DDS 的 Discovery 机制,解除了 Master 的中心化 相关技术 OpenCV AMCL TF MoveIt DWAPlanner GlobaIPlanner LocalPlanner BahaviorTree PointCloudLibrary SMACH Navigation CostMap Gazebo OMPL 安装部署:http://wiki.ros.org/noetic/Installation ros2 相关代码:ros2_21_tutorials ros1 wpr_simulation 命令行 ros2 --help 核心概念 workspace 工作空间是存放项目开发文件的目录 src source space build build space install install space log log space node 节点是机器人的工作细胞 支持使用不同语言开发 分布式运行 执行具体任务的进程,独立的可执行文件 通过节点名称管理:ros2 run <xxx> <xxx> 常见的节点 超声波 Node:sensor_package/ssr_pkg 底盘 Node topic 话题是节点间传递数据的桥梁 发布/订阅模型 订阅者或发布者可以不唯一:一对一、一对多、多对多 异步通信机制 topic 发送的内容称为 message,使用 .msg 文件定义通信的消息结构 ros2 topic --help、ros2 topic list、ros2 topic pub <topic> <content> 常见的话题 /scan 雷达数据话题,雷达节点发送,sensor_msgs:LaserScan /cmd_vel 速度控制话题,雷达避障节点发出,指导机器人底盘节点 /imu/data IMU 数据话题 IMU(Inertial Measurement Unit, 惯性测量单元),获取空间姿态,sensor_msgs:Imu.msg 通过 /cmd_vel 控制底盘 /map 地图使用栅格划分 nav_msgs:OccupancyGrid rqt_graph 命令绘制关系 UI service bag 开发环境 vscode 插件:URDF 客户端 pip3 install rosdepc 或使用 apt install python3-rosdep rosdepc init && rosdepc update rosdepc install -i --from-path src --rosdistro humble -y build: apt install python3-colcon-ros && colcon build env setup: source install/local_setup.sh 创建功能包:ros2 pkg create --build-type <build-type> <package-name> 服务:节点间的你问我答 客户端/服务器(C/S)模型 同步通信机制 服务器唯一,客户端可以不唯一 .srv 文件定义请求和应答数据结构 通信接口:数据传递的标准结构 .msg 话题文件 .srv 服务文件 .action 动作文件 在 https://index.ros.org 搜索消息包: std_msgs 标准消息包 common_msgs 常规消息包 sensor_msgs 传感器消息包 geometry_msgs 几何消息包 nav_msgs 导航消息包 动作:完整行为的流程管理 机器人运动 矢量运动:由 X/Y/Z 轴分量组成 旋转运动:由 X/Y/Z 轴分量组成,angular 表示角度 使用 topic: /cmd_vel 控制 command_velocity 参数:机器人系统的全局字典 全局共享字典 有键与值组成 可实现动态监控 ros2 param list 分布式通信:多计算平台任务分配 DDS(Data Distribution Service, 数据分发服务):机器人的神经网络,2004 年由对象管理组织(OMG, Object Management Group)发布 专门为实时系统设计的数据分发/订阅标准,DDS 强调以数据为中心 常见的通信模式:点对点、Broker 模式、广播模式、数据为中心模式 Launch:多节点启动与配置脚本,参考 支持多节点多服务的启动 TF(TransForm):机器人坐标管理系统,主要描述两个坐标系的空间关系,即坐标系变换 /tf 话题 静态 TF 广播 URDF(Unified Robot Description Format, 统一机器人描述格式):ROS 机器人建模方法 XML 格式 包括:robot、link 和 join 自身及相关属性的描述信息。XACRO 格式支持宏定义和调用 Gazebo:是一款三维物理仿真平台,是用来模拟真实机器人发出传感器数据的工具(作用:创造数据) 强大的物理引擎,高质量的图形渲染 方便的编程与图形接口 开源免费 使用场景:测试机器人算法、机器人设计、现实场景下的回溯测试 RGB-D 摄像头仿真(kinect) 激光雷达仿真 apt install ros-humble-gazebo-* 扩展 Logsim 提取 log 来做仿真,是由路测数据提取的场景,真实反映了实际交通环境中复杂多变的障碍物和交通状况,其场景相对固定 Worldsim 是由人为预设的道路和障碍物构成的场景,可以作为单元测试简单高效的测试自动驾驶车辆 Ignition 新一代 Gazebo,官网 apt install ros-humble-ros-ign Rviz(The Robot Visualization Tool):是一款 三维可视化显示平台,可以兼容基于 ROS 框架的机器人平台(作用:显示数据) 使用 xml 对机器人、周围物体等进行描述,包括尺寸、质量、位置、关节、材质等 命令:ros2 run rviz rviz [-d <xxx>.rviz] RQT:模块化可视化工具 apt install ros-humble-rqt SLAM(Simultaneous Localization And Mapping, 同时定位于地图构建) 通过参照物、电子标签等实现 数据流:/scan -> SLAM节点 -> /map -> Rviz 显示 实现 Hector_Mapping apt install ros-humble-hector-mapping slam_gmapping 相关硬件 IMU 是附着在机器人身上的,实时发布机器人的旋转倾斜等姿态信息的单元模块 雷达 单线雷达 多线雷达 三角测距雷达 TOF 雷达 机械旋转雷达 固态雷达 ROS 使用 https://autoware.org/ https://github.com/autowarefoundation https://moveit.ros.org/ 图片参考 扩展:OpenDriveLab https://shawnharris.com/week-3-building-an-ai-company/ 扩展 Apollo 是一个开放、完整、安全的自动驾驶平台,助力开发者快速搭建自动驾驶系统,由百度开发 https://www.apollo.auto/ ros_motion_planning 参考 https://www.ros.org/ https://wiki.ros.org/ROS/Tutorials https://index.ros.org/ iot ros robot 最近更新 FastAPI: Python Web 框架 Pydantic: Python 验证库 Stainless:基于 OpenAPI spec 生成API SDK(Python、Nodejs等) AI Prompts 介绍 ollama 本地运行大型语言模型 开发中常见的数据格式 open webui: AICHAT 前端 brotli 压缩算法介绍 ptcpdump: 基于 eBPF 的抓包神器,支持抓取进程、容器或 Pod 的网络流量 Cloudflare R2 对象存储 最新评论