linux下ROS如何创建工作空间、功能包基础命令

文章目录

    • 创建工作空间
    • 编译工作空间
    • 当前终端生效的工作空间环境变量配置方法
    • 检查工作空间环境变量
    • 所有终端都生效的工作空间环境变量配置方法
    • 查看bashrc文件
    • 在工作空间下创建功能包
    • 查找功能包 roscpp_tutorials
    • 进入功能包存放位置的路径
    • ros常用功工具实际上也是功能包
    • 话题通信模型
    • ROS的常用命令
    • ros小乌龟的仿真程序

创建工作空间

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace

编译工作空间

cd ~/catkin_ws/
catkin_make

当前终端生效的工作空间环境变量配置方法

source  ~/catkin_ws/devel/setup.bash

检查工作空间环境变量

echo $ROS_PACKAGE_PATH

所有终端都生效的工作空间环境变量配置方法

echo "source   ~/catkin_ws/devel/setup.bash " >> ~/.bashrc
source ~/.bashrc

查看bashrc文件

gedit ~/.bashrc

在工作空间下创建功能包

cd ~/catkin_ws/src
catkin_create_pkg  <package_name> [depend1] [depende2] [depende3]
catkin_create_pkg  package_test std_msgs rospy roscpp
cd ~/catkin_ws
catkin_make
source ~/catkin_ws/devel/setup.bash

查找功能包 roscpp_tutorials

rospack find  <package_name> 

进入功能包存放位置的路径

rospack  <package_name> 

ros常用功工具实际上也是功能包

查看节点之间的流程图 rosrun rqt_graph rqt_graph
查看我们运行的节点 rosnode list
查看运行的话题 rostopic list
查看每个节点的性质 rostopic list -v
cv_bridge 这个程序包是连接ROS和Opencv的程序包

话题通信模型

linux下ROS如何创建工作空间、功能包基础命令_第1张图片

linux下ROS如何创建工作空间、功能包基础命令_第2张图片

Nodes:节点,一个节点即为一个可执行文件,它可以通过ROS与其它节点进行通信。
Messages:消息,消息是一种ROS数据类型,用于订阅或发布到一个话题。
Topics:话题,节点可以发布消息到话题,也可以订阅话题以接收消息。
Master:节点管理器,ROS名称服务 (比如帮助节点找到彼此)。
rosout: 标准输出/标准错误的输出
roscore: Master+rosout+parameter server

Package是组织ROS代码的最基本单位,每一个Package都可以包括库文件,可执行文件,脚本及其它的一些文件。
要启动节点管理器,使用如下命令:roscore 。
roslaunch 是个启动文件,其目的是一次性启动多个节点。

linux下ROS如何创建工作空间、功能包基础命令_第3张图片

ROS的常用命令

linux下ROS如何创建工作空间、功能包基础命令_第4张图片

列出当前处于活动状态的所有节点:rosnode list
返回某指定节点的信息:rosnode info 节点名字
rosun 命令能够直接利用包名运行一个节点,而不需要知道包的路径:
rosrun [package_name] [node_name]

ros小乌龟的仿真程序

在新的 terminal 中运行下列命令:
$ rosrun turtlesim turtle_teleop_key
运行之后可以通过键盘的方向键控制小乌龟的移动:
需要注意的是,控制时,应该是打开 turtle_teleop_key 的那个 terminal。

turtlesim_node 和 turtle_teleop_key 节点通过 ROS Topics 与其他节点通信。
turtle_teleop_key 在一个 topic上发布键盘输入信息,
而 turtlesim 订阅同一个 topic 的信息来接收键盘输入。
我们可以用 rqt_graph查看当前正在运行的节点和 Topics。
rqt_graph 创建当前正在运行的系统的一个动态框图。

rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'

该 命 令 向 /turtle1/cmd_vel 这 个 topic 上 发 布 了 一 个 消 息 ,
这 个 消 息 的 类 型 是geometry_msgs/Twist 类型的
表征小龟的线速度和角速度,这个消息的值为“[2.0, 0.0, 0.0] [0.0,0.0, 1.8]”
也就是说小龟在 x 轴(这个坐标系是固结在小龟身上的,以小龟向前的方向为 x 轴,垂直于小龟移动平面,
从小龟腹部指向龟壳的方向为 z 轴,y 轴方向以右手坐标系标准确定)方向速度为 2.0,
y 方向线速度为 0,z 轴方向速度为 0.绕 x 轴角速度为 0,绕 y 轴角速度为 0,绕 z 轴角速度为 1.8。
因此,小龟就开始绕圈跑,绕圈半径为 2/1.8。参数-1 的含义是 rostopic 只发布一个 message然后退出。

在命令行里,-称为 dash,意思是短横,单个短横称为 dash-one。
含义是该参数是可缺省的。
--称为double-dash,是双短横,表示这之后的参数是不可缺省的。

转一次

rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'

一直转

rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0,0.0]' '[0.0, 0.0, 1.8]'

原地转圈

rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[0.0, 0.0,  0.0]' '[0.0, 0.0, 1.8]'

rostopic hz 命令报告每一个数据发布的频率。

格式:
rostopic hz [topic]
如:
$ rostopic hz /turtle1/pose
rqt_plot 可以动态显示发布到 topic 中的数据。我们可以用 rqt_plot 命令画出发布到/turtle1/pose 这个
Topic 上的数据。首先,用下面命令启动 rqt_plot.
$ rosrun rqt_plot rqt_plot

linux下ROS如何创建工作空间、功能包基础命令_第5张图片

rosservice list 命令列出了当前活动的 turtlesim 提供了 9 种服务
rosparam list 查看一下当前都有哪些参数在 param server 上。
$ rosparam list
可以看到 turtlesim 节点有三个与北京颜色相关的参数存储在 param server 上。
 /background_b
 /background_g
 /background_r

可以把背景色的红色分量设为 150.如

$ rosparam set background_r 150

这个命令改变了参数的值,但是你会看到还没什么变化啊。接下来我们必须调用 clear service 使参数
变化生效:

$ rosservice call clear

我们可以把所有参数写入一个名为“params.yaml”的文件

$ rosparam dump params.yaml

也可以把这些 yaml 文件装载如一个 namespaces,比如一名名为 copy 的 namespaces。

$ rosparam load params.yaml copy
rqt_console 和 ros_logger_level 用于 debug 调试,roslaunch 用于一次打开多个节点。

linux下ROS如何创建工作空间、功能包基础命令_第6张图片

roslaunch  turtlemimic.launch
rostopic pub /turtlesim1/turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]'

用 tab 键编辑一个包下的所有文件。
$ rosed [package_name]
上式中表示按一下 tab 键。连按两下会列出该包下的所有文件。

在 ROS 中还有一种特殊的数据类型:Header。
Header 包含了一个时间戳和一个笛卡尔坐标信息,通常在一个 msg 文件的头一行都有一个 Header 数据。

你可能感兴趣的:(ROS)