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补全)
消息类型

地址