ROS节点获取TIA_go机器人传感器数据,并上传到指定服务器做深度学习处理

Brief

正如标题所言,该小项目包括三部分,如下

  • ROS节点获取机器人数据
  • socket和服务器数据传输,包括了数据上传和获取
  • 服务器深度学习处理数据

1 ROS节点获取机器人数据

1.1 数据结构

我这两天所负责的内容是读取ROS传感器数据。一开始看到这么个机器人也很懵逼,不知道怎么读数据,经过一些研究后,明白读取数据的过程是一个这样子的流程:

首先,机器人的数据本身就是很多的ROS中的TOPIC,会按照它所给定的频率广播所得到采集到的传感器数据,我们要做的就是自己建立一个节点,该节点订阅这个想要的到参数topic。接收它的msg就OK了。

首先我们看一下tia_go机器人对应的开发文档的传感器topic,这里截图一个表示一下:
ROS节点获取TIA_go机器人传感器数据,并上传到指定服务器做深度学习处理_第1张图片

这张图表示的含义是lidar传感器的数据是通过话题/scan发布,所使用的基础信号类型是(sensor_msgs/LaserScan),这里我们打开链接就可以看到这种msg的定义,如下:

std_msgs/Header header
float32 angle_min
float32 angle_max
float32 angle_increment
float32 time_increment
float32 scan_time
float32 range_min
float32 range_max
float32[] ranges
float32[] intensities

也就是说,这个是lidar产生的数据通过一个叫sensor_msgs/LaserScan的数据类型来表示,而我们需要的其实是里面的一部分。当然在此项目中,我们会使用到的实际上由深度相机测出来的rgb图片。这里上传一下开发文档。如果需要的话,评论留下邮件。

1.2 ROS需要用到的知识

这里的话可能就是需要知道ROS里面的话题,节点啥的。其实最重要的是要用catkin来穿件包和编译文件。对我这种小白来说也是需要学习的。下面会一一讲一下我的理解。

1.3 开始操作

首先我们用创建一个catkin工作空间,初始化空间和编译空间,在终端中输入:

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace	#初始化工作空间
cd ~/catkin_ws
catkin_make	#编译工作空间

第二步是创建功能包,这里主要要注意的是要带依赖,就比如说我们要使用的图像的数据结构在sensor_msgs这个依赖包中,我们就要在创建时把依赖写在后面,当然,我们会用到更多的ros包,比如cv_bridge(这是用来和Opencv进行数据类型转换的,也就是把ROS的图像结构转化为Opencv的结构)

cd ~/catkin_ws/src
catkin_create_pkg	ROS_Test1    std_msgs    roscpp cv_bridge sensor_msgs image_transport

接下来我们再次编译包:

cd ~/catkin_ws
catkin_make

到此,我们的包就算建立好了,后面就要写代码了。我们在roscd ROS_Test1/src文件夹下创建一个cpp文件,这里比如说叫node_b.cpp,然后写入下面内容:


我们直接cd进去后执行:

cd ~/catkin_ws/devel/lib/src/ROS_Test1/
./ROS_Test1_b

目前的效果就是可以实时的读取深度相机的rgb图像,并通过rgb相机显示出来,如下:


好吧,我们的任务还没完成,我们虽然数据读取到了,也能够显示了,我们下一步就是要把这个数据传输到服务器上,那么接着看下一部分。

2 数据上传到服务器

机器人的rgb数据已经采集到了,那么接下来就传输,这里采用的方式是socket传输,数据形式是json。emm这部分我不是很懂,不过我要做的具体就是把已经可以在window上传输的程序移植到我上面的工程中。所以我将涉及到的内容包括了:

  • 自定义多文件的包如何编译通过
  • 怎么使用同一工作空间内的自定义头文件。
  • json.hpp文件如何编译通过。

目前就写到这里了,因为这个机器人网络坏了,等专业人员来了把硬件修好了再处理吧。后续的工作主要就在这里了。后面的paperlist都好长了,还没有去啃。休息一下了。

你可能感兴趣的:(ROS,机器人)