ros入门与控制无人机

一、概述

总体来说,分为三步
step1:roscore
step2:发布话题
step3:订阅话题并显示

二、roscore

roscore 是你在运行所有ROS程序前首先要运行的命令。

现理解几个有关ros的概念

Nodes:节点,一个节点即为一个可执行文件,它可以通过ROS与其它节点进行通信。

Messages:消息,消息是一种ROS数据类型,用于订阅或发布到一个话题。

Topics:话题,节点可以发布消息到话题,也可以订阅话题以接收消息。

Master:节点管理器,ROS名称服务 (比如帮助节点找到彼此)。

rosout: ROS中相当于stdout/stderr。

roscore: 主机+ rosout + 参数服务器 (参数服务器会在后面介绍)

一个节点其实只不过是ROS程序包中的一个可执行文件。ROS节点可以使用ROS客户库与其他节点通信。节点可以发布或接收一个话题。节点也可以提供或使用某种服务。

(节点是ros中非常重要的一个概念,为了帮助初学者理解这个概念,这里举一个通俗的例子:

例如,咱们有一个机器人,和一个遥控器,那么这个机器人和遥控器开始工作后,就是两个节点。遥控器起到了下达指 令的作用;机器人负责监听遥控器下达的指令,完成相应动作。从这里我们可以看出,节点是一个能执行特定工作任 务的工作单元,并且能够相互通信,从而实现一个机器人系统整体的功能。在这里我们把遥控器和机器人简单定义为两个节点,实际上在机器人中根据控制器、传感器、执行机构等不同组成模块,还可以将其进一步细分为更多的节点,这个是根据用户编写的程序来定义的。)
节点之间的通信方式:
节点A发布消息到话题1,节点B订阅话题接收消息
举例:无人机(节点A)发布图像(消息)到话题1,电脑(节点B)订阅话题1接收图像(消息)。

三、发布消息到话题

1.准备工作

$ mkdir catkin_ws/
$ mkdir catkin_ws/src
$ //catkin_create_pkg my_image_transport image_transport cv_bridge

2.在/catkin_ws/src文件夹下放入自己写的程序后,在catkin_ws文件夹里打开终端执行$ catkin_make//后面不加参数,默认编译工作空间下的所有功能包
ros入门与控制无人机_第1张图片
3.设置环境变量,jiang /catkin_ws/devel/setup.bash加入环境变量中

source /home/ning/TEMP/catkin_ws/devel/setup.bash

ros入门与控制无人机_第2张图片4.执行包里的可执行文件

rosrun 包名 可执行文件名

包名和可执行文件名可以在/catkin_ws/devel/lib文件夹下看,如下图,这个路径里的bebop_control,bebop_driver与my_image_transport都是包的名称,打开这三个文件,可以看到里面的可执行文件,以第一个bebop_control为例,运行里面的bebop_control_node,命令为

rosrun bebop_control bebop_control_node

ros入门与控制无人机_第3张图片
ros入门与控制无人机_第4张图片
这个就是编译执行ros代码l,希望能讲清楚,大家都少踩点keng

四、ros与无人机

无人机可以通过手柄控制,也可以使用代码控制,如果通过代码控制,需要与无人机进行通讯
step1:开启一个终端,输入roscore
step2:开启第二个终端,输入

source /home/ning/TEMP/catkin_ws/devel/setup.bash
roslaunch bebop_driver bebop_nodelet.launch//飞机的通信程序

在/catkin_ws/src目录下放入控制无人机的源码(源码链接),如下图所示,其中bebop_autonomy是无人机bebop2的源码,另外两个均为自己编写的程序。
ros入门与控制无人机_第5张图片step3:开启第三个终端,输入

source /home/ning/TEMP/catkin_ws/devel/setup.bash
rosrun 包名 可执行文件名

五、一些小tips
在订阅无人机发布图像的话题时,一直找不到话题的名称,可以使用rostopic list命令查看当前所有话题的名称;rosnode list查看当前所有节点的名称

参考资料:
wiki.ros.org/cn/ROS/Tutorials
https://bebop-autonomy.readthedocs.io/en/latest/installation.html#compiling-from-source
https://blog.csdn.net/u010925447/article/details/80033288

你可能感兴趣的:(ros,SLAM,ubuntu,mysql,数据库)