ros的基础架构

ROS 项目在部署运行的过程中,大致分为4个部分:

  • 环境
    • 软件环境
    • 硬件环境
  • 执行器
    • 给操作系统发送一些指令,以此来控制硬件执行相应操作
  • 传感器
    • 传感器接收外部环境给的输出,反馈给相应的软件
  • 软件结构
    • ros 一个可执行程序,就是一个节点
    • ros master用来管理各个节点

软件结构的组成

ROS Master

  • 管理每个节点间的通信
  • 每个节点都需要到 ROS Master 中进行注册

通过roscore命令启动ROS Master,而且在节点开始前必须启动ROS Master

ROS Node

  • 具备单一的功能的可执行程序
  • 可以单独编译,可执行,可管理
  • 存放在package
  • 一个节点就是一个可执行程序

ros客户端库

ROS 客户端允许使用不同的编程语言编写的节点之间相互通信

  • rospy = python 客户端库
  • roscpp = c++ 客户端库

使用 rosnode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$ rosnode -h
---
# rosnode 是一个用来打印 ROS 节点信息的命令行工具
rosnode is a command-line tool for printing information about ROS Nodes.

Commands:
# 测试是否能连接到节点
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
# 清除不可达的的节点的注册信息(ping不通,就是程序死掉了,信息没删掉)
rosnode cleanup purge registration information of unreachable nodes
#输入 rosnode <command> -h 以获得更多使用说明,例如 rosnode ping -h
Type rosnode <command> -h for more detailed usage, e.g. 'rosnode ping -h'`

通过 -h 可以快速查询对应的命令和用法,这里只提取常用的

常用方法

  1. runnode list 查看当前开启的节点
  2. rosnode info [node] 查看节点的信息
  3. rosnode cleanup 清除无用的节点信息

使用 rosrun

1
2
3
4
5
6
7
$ rosrun -h
---
Usage: rosrun [--prefix cmd] [--debug] PACKAGE EXECUTABLE [ARGS]
rosrun will locate PACKAGE and try to find
an executable named EXECUTABLE in the PACKAGE tree.
If it finds it, it will run it with ARGS.
# rosrun 试图找到 PACKAGE 和 PACKAGE 下的名为 EXECUTABLE 的可执行程序。如果找到,将参数args传入并运行它

一般该命令在输入 package 和 executable 的时候使用 tab 键都会有提示,如果没有提示,尝试source 当前工作空间下 devel/setup.bashdevel/setup.zsh(如果你用zsh的话)

注意:如果写python程序,需要给 python 的入口python文件一个可执行的权限,例如:

1
chmod a+x main.py

评论