TA的每日心情 | 开心 2019-11-19 16:54 |
---|
签到天数: 1 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 harry-IoT 于 2020-3-11 09:16 编辑
一、ROS框架
二、ROS基本命令和工具
三、Launch文件一、ROS框架 ROS文件系统级指的是可以在硬盘上查看的ROS源代码,包括以下几种形式:
Packages: 软件包,是ROS应用程序代码的组织单元,每个软件包都可以包含程序库、可执行文件、脚本或者其它手动创建的东西
Manifest (package.xml): 清单,是对于'软件包'相关信息的描述,用于定义软件包相关元信息之间的依赖关系,这些信息包括版本、维护者和许可协议等
Message:消息的描述,定义ROS中发送的消息的数据结构,储存在mypackage_name/msg/message_type.msg下
Service:服务的描述,定义ROS中需求和响应的数据结构,储存在mypackage_name/srv/service_type.srv下
二、ROS基本命令和工具
节点都是各自独立的可执行文件,节点能够通过主题,服务或参数服务器与其他节点通信,ROS通过节点将代码和功能解耦,提高了系统的容错能力和可维护性。
roscore 是你在运行所有ROS程序前首先要运行的命令,为了保证节点能通讯,至少要有一个roscore在运行,roscore定义为master+parameter server+rosout
rosnode:
rosnode ping test connectivity to node
rosnode list list active nodes
rosnode info print information about node
rosnode machine list nodes running on a particular machine or list machines
rosnode kill kill a running node
rosnode cleanup purge registration information of unreachable nodes
rosrun
rosrun [--prefix cmd] [--debug] PACKAGE EXECUTABLE [ARGS]
rqt_graph能够创建一个显示当前系统运行情况的动态图形,我们借助它来学习主题和节点之间的关系,执行
rosrun rqt_graph rqt_graph
rostopic:
rostopic bw display bandwidth used by topic
rostopic delay display delay of topic from timestamp in header
rostopic echo print messages to screen
rostopic find find topics by type
rostopic hz display publishing rate of topic
rostopic info print information about active topic
rostopic list list active topics
rostopic pub publish data to topic
rostopic type print topic type
获取帮助:rostopic command -h
msg文件存放在package的msg目录下,srv文件则存放在srv目录下,实际上就是每行声明一个数据类型和变量名。可以使用的数据类型如下:
int8, int16, int32, int64 (plus uint*)
float32, float64
string
time, duration
other msg files(header)
variable-length array[] and fixed-length array[C]
创建和使用msg srv
rossrv/rosmsg:
rossrv/rosmsg show Show service/message description
rossrv/rosmsg list List all services/messages
rossrv/rosmsg md5 Display service/message md5sum
rossrv/rosmsg package List services/messages in a package
rossrv/rosmsg packages List packages that contain services/messages
服务是节点之间通讯的另一种方式。服务允许节点发送请求(request) 并获得一个响应(response)
rosservice:
rosservice args print service arguments
rosservice call call the service with the provided args
rosservice find find services by service type
rosservice info print information about service
rosservice list list active services
rosservice type print service type
rosservice uri print service ROSRPC uri
获取帮助:rosserverice command -h
与rossrv区别:provides information related to ROS service definitions
参数服务器能够存储整型、浮点、布尔、字符串、字典和列表等数据类型。rosparam使用YAML标记语言的
rosparam:
rosparam set set parameter
rosparam get get parameter
rosparam load load parameters from file
rosparam dump dump parameters to file
rosparam delete delete parameter
rosparam list list parameter names
获取帮助:rosparam command -h
三、Launch文件
在ROS应用中,每个节点通常有许多参数需要设置,为了方便高效操作多个节点,可以编写launch文件,然后用roslaunch命令运行
roslaunch: roslaunch [options] [package] <filename> [arg_name:=value...]
roslaunch [options] <filename> [<filename>...] [arg_name:=value...]
<launch>
<node .../>
<rosparam ..../>
<param .../>
<include .../>
<env .../>
<remap .../>
<arg.../>
</launch>
<node >要启动的node参数
pkg=''mypackage''
type=''nodetype''
name=''nodename''
arg=''arg1 ....''(可选)
respawn=''ture''(可选)如果节点停止,自动重启节点
ns=''foo''(可选)在foo命名空间启动节点
output=''log|screen''(可选)
<rosparam>操作yaml文件参数
command=''load|dump|delete''(默认load)
file=''$(find pkg-name)/path/foo.yaml''(load或dump命令)yaml文件的名字
param=''param-name''参数名
<param>定义一个设置在参数服务器的参数,它可以添加到<node>中
name=''namespace/name''
value=''value''(可选)如果省略这个参数,则应指定一个文件(binfile/textfile)或命令
type=''str|int|double|boot''(可选)指定参数的类型
textfile=''$(find pkg-name)/path/file''(可选)
binfile=''$(find pkg-name)/path/file''()
command=''(find pkg-name)/exe '$(find pkg-name)/arg.txt' ''(可选)exe是可执行文件(cpp、py),arg.txt是参 数文件
<include>在当前launch文件中调用另一个launch文件
file=''$(find pkg-name)/path/launch-file.launch''
<env>设置节点的环境变量
name=''environment-variable-name''
value=''environment-variable-value''
<remap>将一个参数名映射为另一个名字
from=''original-name''
to=''new-name''
<arg>定义一个局部参数,该参数只能在一个launch文件中使用
<arg name=''foo''/>声明一个参数foo,后面需要给它赋值
<arg name=''foo'' default=''1''/>声明一个参数foo,如不赋值取默认值
<arg name=''foo'' value=''bar''/>声明一常量foo,它的值不能修改
|
|