ROS基础_1_什么是ROS?

ROS是什么

使用古月居课件参考 详情https://github.com/guyuehome/ros_21_tutorials
目的:提高机器人研发中的软件复用率
请添加图片描述请添加图片描述

ROS中的核心概念

ROS的通信机制

请添加图片描述

不同Node的功能是不同的(语言 依赖 环境都有不同) 通过特殊的通信方法(松耦合分布式通信)进行通信 因此ROS起到关键的连接作用 提供分布式的框架
请添加图片描述
请添加图片描述
请添加图片描述

话题通信:从发布端到订阅端(单向)
消息即通过话题通讯所含的数据,具有一定的数据结构,图中Message为内容,/image_data为话题名称
请添加图片描述
请添加图片描述

服务通信(双向):我认为其区别于话题通信的点是具有一种反馈机制:在通信中需要保持时效性与有效性时 因此订阅方需要对发布方进行反馈以对整个ROS系统进一步协调
客户端与服务器:先发布,处理完成后给出Response

个人理解:即为全局变量(保存在ROS MASTER里)注意静态动态

ROS命令行工具的使用

常用命令

1. roscore

  • 启动ROS主节点(Master),运行ROS所需的核心服务。
  • 示例
  roscore

2. rosrun

  • 运行ROS包中的可执行文件(节点)。
  • 示例
  rosrun turtlesim turtlesim_node

3. roslaunch

  • 启动多个ROS节点,并加载参数文件。
  • 示例
  roslaunch turtlesim turtlesim.launch

4. rostopic

  • 操作和调试ROS中的话题(Topic)。
  • 常见用法
  rostopic list        # 列出所有话题
  rostopic echo /chatter  # 监听某个话题
  rostopic pub /chatter std_msgs/String "hello"  # 发布消息
  rostopic info /chatter  # 获取话题信息

5. rosnode

  • 操作和查看ROS中的节点(Node)。
  • 常见用法
  rosnode list    # 列出所有节点
  rosnode info /node_name  # 获取某个节点的信息
  rosnode kill /node_name  # 关闭某个节点

6. rosservice

  • 操作和调用ROS的服务(Service)。
  • 常见用法
  rosservice list  # 列出所有服务
  rosservice call /clear "{}"  # 调用服务
  rosservice info /service_name  # 获取服务信息

7. rosparam

  • 操作ROS参数服务器中的参数。
  • 常见用法
  rosparam list  # 列出所有参数
  rosparam get /turtlesim/background_r  # 获取参数值
  rosparam set /turtlesim/background_r 255  # 设置参数值

8. rosbag

  • 录制和回放ROS消息数据(日志)。
  • 常见用法
  rosbag record -a  # 录制所有话题
  rosbag play example.bag  # 回放ROS日志文件

9. rqt_graph

  • 可视化ROS系统的节点和话题关系。
  • 示例
  rqt_graph

10. rviz

  • 启动ROS的3D可视化工具。
  • 示例
  rviz

11. catkin_make

  • 编译ROS工作空间。
  • 示例
  catkin_make

12. rosmsg

  • 查看ROS的消息类型(Message)。
  • 示例
  rosmsg show std_msgs/String

13. rossrv

  • 查看ROS的服务类型(Service)。
  • 示例
  rossrv show std_srvs/Empty

14. roscd

  • 跳转到某个ROS包的路径。
  • 示例
  roscd turtlesim

15. rosls

  • 列出某个ROS包的文件。
  • 示例
  rosls turtlesim

实例:小乌龟

第一步:

roscore
rosrun turtlesim
请添加图片描述
请添加图片描述

rosrun后接需要用到的软件包 这里使用turtlesim

  • 技巧:在包(例如turtlesim)后先空格 再双击tab 会显示包里节点内容(多用tab以避免输入错误)
    turtle_teleop_key用于键盘控制乌龟
    请添加图片描述

新建终端 输入rqt_graph(用来显示计算图的工具)
请添加图片描述

通过该工具 我们很明显找到了通信的方式与路径:键盘控制节点(发布)前往仿真小乌龟节点(订阅)

rostopic pub /chatter std_msgs/String "hello" # 发布消息
例如 通过rostopic对小乌龟发布消息 代替前面的/teleop_turtle对小乌龟进行指令
‘rostopic pub /turtle1(消息)/cmd_vel geometry_msgs(类型)/Twist “linear:(通过tab补全)
请添加图片描述

消息类型

发表回复

Your email address will not be published. Required fields are marked *.

*
*

Who Am I?

SDU Statistics –> WHU DS

张敬老师课题组研究生

主要对具身智能、ML、DRL相关工作有兴趣,现在在进行Digital Human相关工作,欢迎合作指导。

热爱🎸、⚽、📕,永远热爱生活

联系我

地址
B103,计算机学院,武汉大学

联系方式

cdj_wh@126.com