ROS 介绍iotrosrobot发布时间: 2023-10-01 更新时间: 2024-09-22 总字数:1765 阅读时间:4m 作者:谢先斌 IP上海 分享 网址 Robot Operating System (ROS, 机器人操作系统) 是专为机器人软件开发所设计出来的一套电脑操作系统架构。介绍ROS 是一个开源的元级操作系统,2007 年 11 月,提供类似于操作系统的服务,包括硬件抽象描述、底层驱动程序管理、共用功能的执行、程序间消息传递、程序发行包管理,它也提供一些工具和库用于获取、建立、编写和执行多机融合的程序ROS1 架构中,所有节点需要使用 Master 进行管理ROS2 使用基于 DDS 的 Discovery 机制,解除了 Master 的中心化相关技术OpenCVAMCLTFMoveItDWAPlannerGlobaIPlannerLocalPlannerBahaviorTreePointCloudLibrarySMACHNavigationCostMapGazeboOMPL安装部署:http://wiki.ros.org/noetic/Installationros2 相关代码:ros2_21_tutorialsros1 wpr_simulation命令行 ros2 --help核心概念workspace 工作空间是存放项目开发文件的目录src source spacebuild build spaceinstall install spacelog log spacenode 节点是机器人的工作细胞支持使用不同语言开发分布式运行执行具体任务的进程,独立的可执行文件通过节点名称管理:ros2 run <xxx> <xxx>常见的节点超声波 Node:sensor_package/ssr_pkg底盘 Nodetopic 话题是节点间传递数据的桥梁发布/订阅模型订阅者或发布者可以不唯一:一对一、一对多、多对多异步通信机制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:OccupancyGridrqt_graph 命令绘制关系 UIservicebag开发环境vscode插件:URDF客户端pip3 install rosdepc 或使用 apt install python3-rosdeprosdepc init && rosdepc updaterosdepc install -i --from-path src --rosdistro humble -ybuild: apt install python3-colcon-ros && colcon buildenv 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-ignRviz(The Robot Visualization Tool):是一款 三维可视化显示平台,可以兼容基于 ROS 框架的机器人平台(作用:显示数据)使用 xml 对机器人、周围物体等进行描述,包括尺寸、质量、位置、关节、材质等命令:ros2 run rviz rviz [-d <xxx>.rviz]RQT:模块化可视化工具apt install ros-humble-rqtSLAM(Simultaneous Localization And Mapping, 同时定位于地图构建) 通过参照物、电子标签等实现数据流:/scan -> SLAM节点 -> /map -> Rviz 显示实现Hector_Mappingapt install ros-humble-hector-mappingslam_gmapping相关硬件IMU 是附着在机器人身上的,实时发布机器人的旋转倾斜等姿态信息的单元模块雷达单线雷达多线雷达三角测距雷达TOF 雷达机械旋转雷达固态雷达ROS 使用https://autoware.org/https://github.com/autowarefoundationhttps://moveit.ros.org/图片参考扩展:OpenDriveLabhttps://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/Tutorialshttps://index.ros.org/iotrosrobot最近更新Continue 开源人工智能代码助手使用cursor: AI代码编辑器Cline: vscode AI 智能编程插件介绍AI 智能体(agent)介绍golang 日志库:uber-go/zapGolang lodash 库使用Go asynq 异步任务队列Go Ent 数据库 GROM 框架Docker 运行 GUI 软件start-stop-daemon 管理后台程序最新评论