参考ROS官网教程
文章目录
命令补全
ROS系统较为复杂,为了简化命令输入,ROS的一些工具提供tab补全功能。
例如,
$ roscd roscpp_tut<<<按TAB键>>>
会得到
$ roscd roscpp_tutorials/
包编译 catkin***
创建包 catkin_create_pkg
创建包,并指定依赖项
catkin_create_pkg <package_name> [depend1] [depend2] [depend3]
编译包 catkin_make
catkin_make
工具在底层应该是调用了cmake,它通过CMakeLists.txt来设置编译信息。
命令 | 说明 |
---|---|
catkin_make [make_targets] [-DCMAKE_VARIABLES=…] | 命令样式,底层调用cmake |
catkin_make install | 类似于cmake install |
catkin_make --source [my_source_dir] | 将指定目录的代码的编译内容放置于当前目录 |
非运行时工具
包管理工具 rospack = ros + pack(age)
rospack
是rosbash
命令集的一部分,rospack允许你获取软件包的有关信息,详细查看。
命令 | 说明 |
---|---|
rospack find [package_name] | 查找软件包所在路径 |
rospack depends1 [package_name] | 查看包一级依赖(直接依赖的包),与查看[package_name]/package.xml 的<build_depend> 标签等效。 |
rospack depends [package_name] | 查看所有依赖包(递归查看所有依赖包) |
目录 roscd = ros + cd
roscd
是rosbash
命令集的一部分,它允许你直接切换目录(cd)到某个软件包或者软件包集当中。
roscd
只能切换到那些路径已经包含在ROS_PACKAGE_PATH
环境变量中的软件包。
ROS_PACKAGE_PATH
的值由(:)分隔
查看ROS_PACKAGE_PATH
中包含的路径:
$ echo $ROS_PACKAGE_PATH
命令 | 说明 |
---|---|
roscd [locationname[/subdir]] | roscd roscpp/cmake ,进入包的cmake子目录 |
roscd log 进入包的log目录 |
目录 rosls = ros + ls
rosls
是rosbash
命令集的一部分,它允许你直接按软件包的名称执行 ls 命令(而不必输入绝对路径)。
$ rosls roscpp_tutorials
包消息协议(rosmsg)工具
此工具用于查看由*.msg
生成的消息对象信息
命令 | 说明 |
---|---|
rosmsg show | 输出消息定义 |
rosmsg list | 列举所有支持的消息 |
rosmsg md5 | 输出 消息的md5值 |
rosmsg package | 列举包支持的所有消息 |
rosmsg packages | 列出多个包支持的消息 |
包服务协议(rossrv)工具
此工具用于查看由*.srv
生成的消息对象信息
命令 | 说明 |
---|---|
rossrv show [srv-name] | 输出服务协议的定义 |
rossrv info [srv-name] | 等价于rossrv show |
rossrv list | 列举所有支持的服务协议 |
rossrv md5 | 输出服务协议的md5值 |
rossrv package | 列举包支持的所有服务协议(仅名字) |
rossrv packages | 列出多个包支持的服务协议(仅名字) |
运行时工具
主节点roscore
启动主节点
roscore
节点 rosnode (ros+node)
命令 | 说明 |
---|---|
rosnode list | 查看运行节点 |
rosnode info [package name] | 查看节点状态, 例如节点 rosnode info /rosout |
rosnode cleanup | 清空节点 |
rosnode ping [node_name] | 检验运行节点 |
启动节点 rosrun (ros+run)
rosrun
根据包名直接运行软件包内的节点,而不需要知道包的路径。
$ rosrun [package_name] [node_name]
例如,运行小海龟
rosrun turtlesim turtlesim_node # 运行 turtlesim 包的 turtlesim_node 节点
话题命令 rostopic (ros+topic)
rostopic
命令工具用于获取ROS话题的信息。
rostopic bw | 输出带宽 |
rostopic delay | 输入延迟 |
rostopic echo [topic] | 信息输出到屏幕 |
rostopic find [topic] | 根据类型查找topic |
rostopic hz [topic] | 输出信息频率(Hz) |
rostopic info [topic] | 输出活动topic的信息 |
rostopic list | 罗列活动topic |
rostopic pub [topic] [msg_type] [args] | 向 [topic] 发布(publish) [msg_type] 类型信息的信息,参数为[args。] ,见后文例子 |
rostopic type [topic] | 输出 topic 的消息类型,如坐标(x,y,z) |
rostopic -h | 查看rostopic支持的所有操作 |
rostopic -h | 查看 rostopic 操作的具体说明 |
向topic发布消息的例子(版本 ROS Groovy )
$ rostopic pub -1 /turtle1/command_velocity turtlesim/Velocity -- 2.0 1.8
-1
,消息只发布一次,如输入-r 1
,则以1Hz频率publish重复发消息/turtle1/command_velocity
,topic的名字turtlesim/Velocity
,消息类型--
,分隔符,之后的都是当前数据类型的参数(即2.0 1.8
)
服务命令
服务是ROS系统传输信息的另一种方式,与topic的区别在于:
- 服务像打电话,有来有回
- topic像看电视,一端发,一端收。
服务端命令 rosservice
服务命令 | 说明 |
---|---|
rosservice list | 输出活跃服务的信息 |
rosservice call [service] [args] | 用给定的参数调用服务 |
rosservice type [service] | 输出服务的类型 |
rosservice find | 按服务的类型查找服务 |
rosservice uri | 输出服务的ROSRPC uri |
服务端参数 rosparam
rosparam
用于存储和操作 ROS 参数,使用YAML
标记语言的语法:
- 1是整型
- 1.0是浮点型
- one是字符串
- true是布尔型
- [1, 2, 3]是整型组成的列表
- {a: b, c: d}是字典。
支持操作 | 说明 |
---|---|
rosparam set [param_name] | 设置参数 |
rosparam get [param_name] | 获取参数,如果写/ 则会获得参数所有内容 |
rosparam load [file_name] [namespace] | 从文件中加载参数 |
rosparam dump [file_name] [namespace] | 向文件中转储参数 |
rosparam delete | 删除参数 |
rosparam list | 列出参数名 |