ros学习(1):基本概念与基础指令

一些基本概念

  • ros功能包(package)
  • ros功能包清单(package manifest):package.xml
  • ros消息(message):在ros框架中,节点(node)之间通过将消息发布到话题(topic)中实现彼此的异步通信,话题是一种简单的数据结构。消息文件的扩展名为.msg,位于功能包的msg文件夹中,其中的内容是一些类型字段
  • ros服务(service):ros节点通过系统服务的调用来同步交换请求(request)和响应(response)消息。这些请求和响应消息位于SRV文件夹中,扩展名为.srv
  • ros元功能包清单(metapackage manifest)
  • ros元功能包(metapackage)

工作空间

# ros正在使用的工作空间
echo $ROS_PACKAGE_PATH

# 初始化工作空间(在catkin_ws/src文件夹下)
catkin_init_workspace

# 编译工作空间(在catkin_ws文件夹下)
catkin_make

# 编译功能包
catkin_make --pkg <package name>

# 配置,激活工作空间
source devel/setup.bash

# 对全局进行配置,在~/.bashrc脚本末尾添加一下命令
echo "source /opt/ros/melodic/setuo.bash" >>~/.bashrc
echo "source /home/username/catkin_ws/devel/setup.bash" >>~/.bashrc

在文件系统中导航的命令行工具

  • rospack profile:向我们提供新添加都ros中功能包的信息(在安装新功能包时非常有用)
  • rospack find [功能包]:找到某条功能包路径
  • rospack depends [功能包]:检索某个功能包的依赖项
  • rosls [功能包]:用来显示功能包的内容
  • roscd [功能包]:更改工作目录

例如:

# 查找turtlesim功能包位置
rospack find turtlesim

# 查找已安装的元功能包
rosstack find ros_comm

# 列出功能包或元功能包中的文件
rosls turtlesim

# 进入其他工作目录
roscd turtlesim
pwd

创建功能包

可以在ros中手动创建功能包,但是推荐使用 catkin_creat_pkg 在命令行中完成。
该命令语法如下:

catkin_creat_pkg [packgage_name] [dependency1] [dependency2]

例如:

cd ~/catkin_ws/src
catkin_creat_pkg chapter2_tutorials std_msgs roscpp
# std_msgs 功能包:公共消息类型和其他基本消息类型
# roscpp 功能包:ros的c++实现,提供客户端库

ros各功能的工作方式

节点管理

  • rosbash:用于ros节点进行自检

  • rosnode:显示关于节点的信息,例如列出当前正在运行的节点

例如:

# 打印有关节点的信息
rosnode info [node]

# 结束一个正在运行的节点或发送一个给定的信号
rosnode kill [node]

# 列出所有的活动节点
rosnode list

# 列出在特定机器上运行的节点或列出机器
rosnode machine hostname

# 用来测试节点的连通性
rosnode ping [node]

# 清除不可达节点的注册信息
rosnode cleanup

话题管理

  • 一个话题可以有多个订阅者和多个发布者,但是多个不同节点发布相同主题时,有可能冲突
  • ros节点默认使用基于tcp/ip的TCPROS传输方法。另一种传输方式是UDPROS
  • rostopic:处理话题工具

例如:

# 显示话题使用的带宽
rostopic bw /topic

# 将消息打印到屏幕上
rostopic echo /topic

# 根据类型查找话题
rostopic find message_type

# 显示话题的发布频率
rostopic hz /topic

# 打印有关话题的信息,如消息类型、发布者和订阅者
rostopic info /topic

# 打印有关话题的列表信息
rostopic list

# 向一个话题发布指定类型的消息
rostopic pub /topic type args

# 显示给定话题的消息类型
rostopic type /topic

消息管理

  • ros节点通过向话题发布消息来实现相互之前的通信
  • 消息类型遵循标准ros命名约定:包的名称,然后是.msg文件的名称。
  • rosmsg用来获取ros消息的信息

例如:

# 显示消息描述
rosmsg show [message]

# 列出所有消息
rosmsg list

# 显示消息的MD5校验和
rosmsg md5 [message]

# 列出功能包中的消息
rosmsg package [package_name]

# 列出包含消息的功能包
rosmsg package [package_1][package_2]

服务管理

  • ros话题是单向的,而服务是双向的
  • ros服务使用srv文件中的一对消息,请求(request)数据类型和响应(response)数据类型来定义
  • ros服务中还有一个用来检验节点的MD5校验和,如果校验和是相等的,那么服务器才会响应客服端
  • ros有两个和服务相关命令行工具,ROSRVROSService
    ROSRV,类似于ROSMSG,用于获取服务类型的信息
    RosService,用以列出服务列表和查询正在运行的ROS服务

例如

# 使用给定的参数调用服务
rosservice call /service_args

# 根据给定服务类型查找服务
rosservice find service_type

# 打印有关给定服务的信息
rosservice info /service

# 列出系统上运行的活动服务
rosservice list

# 打印给定服务的服务类型
rosservice type /service

# 打印服务的PORPC URI
rosservice uri /service

ros参数服务器

  • rosparam可对ros参数服务器上的参数进行操作
# 为给定参数设置值
rosparam set [parameter_name] [value]

# 获取给定参数的值
rosparam get [parameter_name]

# 从保存的yaml文件加载参数
rosparam load [YAML file]

# 将现有ROS参数转存到YAML文件中
rosparam dump [YAML file]

# 删除给定参数
rosparam delete [parameter_name]

# 列出现有参数名称
rosparam list

ros消息记录包

  • 消息记录包是ros中用于存储消息、话题和服务的文件格式,扩展名为.bag
  • rosbag记录数据

例如

# 将指定的话题记录到命令中给出的消息记录包文件中
rosbag record [topic_1][topic_2] -o [bag_name]

# 记录全部内容
rosbag -a [bag_name]

# 回放已有的消息记录包文件
rosbag play [bag_name]

话题、服务的一些指令

发布话题

rostopic pub [topic] [msg_type] [args]

调用服务

rosservice call [service] [args]

保存参数服务器的内容

rosparam dump [file_name] 

加载参数服务器的内容

rosparam load [file_name] [namespace]
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值