ROS
DiegoRobot
ROS机器人、人工智能、机器学习
QQ:38182368
展开
-
diego1# 突破局域网限制,实现互联网范围内控制你的ROS机器人
更多创客作品,请关注笔者网站园丁鸟,搜集全球极具创意,且有价值的创客作品ROS机器人知识请关注,diegorobot业余时间完成的一款在线统计过程分析工具SPC,及SPC知识分享网站qdo1.概述ROS机器人系统有一个局限就是,所有Robot都必须在一个局域网内,虽然有robot web tools工具集可以实现通过web浏览器控制ROS机器人,但仍然是要求Robot和浏览器必须在同一个局域网内。有许多的应用是需要跨地域,跨网络进行监控机器人的,本文介绍一种突破局域网限制,可以实现互联网范围内通过原创 2020-06-19 10:03:21 · 1708 阅读 · 2 评论 -
ROS机器人Diego 1#制作总结
由于树莓派本身的运算能力限制,Diego 1#的制作到上一篇博文应该算是一个里程碑了,后续将基于新的硬件进行开发制作Diego 1# plus,重点会在图像处理上,笔者曾经尝试使用树莓派来做,但经过多次反复试验,即使跑一个人脸识别的代码,树莓派的CPU使用率都在80%上以上,无奈想玩更高级的东西,就的升级硬件了。本文做为一个阶段性的总结,就把Diego 1#制作过程中走过的坑说明下:1.底盘Dieg原创 2017-03-17 11:52:12 · 2655 阅读 · 2 评论 -
ROS 机器人控制APP
最近利用网上各种开源的资源整合出了一个ROS机器人控制APP,如大家有兴趣可以到我的个人网站去下载http://www.diegorobot.com/wp/?page_id=1237&lang=zh,后续还会增加其他的功能,目前APP实现了如下功能:多机器人管理,可以同时增加多个机器人,每个机器人有不同的配置 多种控制方式,控制ROS机器人 订阅ROS机器人发布的视频topic,并在手机上显示原创 2017-06-28 16:45:22 · 9771 阅读 · 27 评论 -
ROS 机器人双路视频手机监控
这几天心血来潮,把家里的旧摄像头装在Diego1#上,再加上原来的Letv Xtion就形成了双路视频摄像头,再通过手机APP实现了双路视频远程监控,先上个图: 手机监控的画面,上面的画面是Letv_Xtion传输的数据,下面的是罗技的usb摄像头画面 下面这张图是安装了摄像头的Diego1#。 测试下来在同一个局域网内,视频传输非常流畅,只是手机会发热,安装在Diego1#上的mini pc原创 2017-06-30 23:24:29 · 2486 阅读 · 4 评论 -
ROS机器人Diego 1#整合Tensorflow MNIST,玩数字识别
机器学习中最经典的例子就是NNIST通过图片来识别0~9的数字,这篇文章将介绍如何将基于Tensorflow NNIST整合到Diego1#机器人中作为一个节点,此节点将订阅Image消息,通过NNIST识别后将结果发布消息给讯飞语音节点,讯飞语音节点会告诉我们识别的数字是几。相关源代码已经上传到本人的github。1. 安装Tensorflow只需一句命令即可安装pip install tenso原创 2017-07-14 16:58:53 · 2449 阅读 · 3 评论 -
ROS机器人Diego 1#整合Tensorflow object_detection,图像识别
google最近又公布了物体识别的Api,使得图像识别变得更加方便,并提供了一个预训练模型,及示例代码,官方文档请见https://github.com/tensorflow/models/blob/master/object_detection/g3doc/installation.md 从官方提供的效果图来看效果还是很不错的,这篇文章就基于官方提供的示例代码,制作一个ROS节点,订阅Image原创 2017-07-14 17:40:12 · 7618 阅读 · 6 评论 -
ROS机器人Diego 1# 利用人工智能 风格迁移技术拍摄不同画风的视频
风格迁移,就是将一种图片的风格迁移到其他图片上,改变其他图片的风格,很好玩的一个人工自能模型,github上已经有很多实现的方法,本文参考https://github.com/hzy46/fast-neural-style-tensorflow 的算法,利用Diego1#的平台实现实时视频的风格转换,先上两张图看效果: 是不是很酷呢,其实实现方法和上篇博文中的原理是一样的,只是把人工智能的原创 2017-07-28 20:29:34 · 1332 阅读 · 1 评论 -
Diego 1# 4WD —1:ENCODER
4驱底盘由于四个轮子可以独立控制,所以具有优秀的通过性,这篇文章介绍Diego 1#的四驱底盘,所有源代码都已经上传到github。这里会分几篇文章来介绍4驱动版diego 1#的开发,这篇我们主要说明4驱动底盘4个马达编码器数据的读取。1.1硬件说明底盘材质:铝合金材质轮胎:12cm 橡胶轮胎电机:370直流电机,带霍尔码盘测速,输出AB项编码信号1.2 控制器主控制器 ardui...原创 2019-08-06 15:11:41 · 620 阅读 · 0 评论 -
Diego 1# 4WD —2:马达控制
针对马达控制我们主要需要修改两部分:驱动部分,使其可以支持同时控制4个马达PID调速部分,试验表明,虽然是一样的型号的马达,但是给相同的PWM值,马达的转速也不一样,所以我们需要分别对4个马达进行PID调速1.马达驱动1.1. DualL298PMotorShield4WD.h文件的修改增加了4个马达对应的PWM和方向控制的Pin引脚定义,和4个马达速度的设置函数#ifndef Dua...原创 2019-08-06 15:20:03 · 974 阅读 · 1 评论 -
Diego 1# 4WD —3:上位机通讯
ROS Arduino Bridge本质上是上位机通过串口发送控制命令来实现对Arduino的控制,所以我们要实现4驱的控制,我们也必须的修改通讯部分1.Arduino firmware修改1.1 command.h在此文件中增加4驱所需的命令及宏定义#ifndef COMMANDS_H#define COMMANDS_H#define ANALOG_READ 'a'#def...原创 2019-08-06 15:26:20 · 1004 阅读 · 0 评论 -
Diego 1# 机器视觉-人脸检测
机器视觉是一个非常复杂的主题,需要比较专业的计算机图形学相关知识,在ROS By Example Volume 1这本书中提供了比较好的入门范例,所以我们将按照此书中所介绍的例子开启我们Diego的机器视觉之旅,后面逐步增加比较复杂的内容。我们首先来实现实现书中所讲到的人脸检测、特征值获取、人脸跟踪,机器人跟随等功能,由于此书中所使用的代码依赖于opencv2.4,但在Diego我们安装的是RO...原创 2019-08-06 15:47:24 · 561 阅读 · 0 评论 -
Diego 1# 机器视觉-特征点检测及跟踪
上一节中我们实现了人脸的检测,当有人脸出现摄像头前面时,图像窗体中会用矩形显示人脸的位置,接下来我们需要实现特征值获取,及特征值跟随。本文针对Opencv3移植了ROS By Example Volume 1中的示例代码,所有代码均在opencv3环境完成测试,可以正常运行。1.特征值获取1.1 源代码源文件good_features.py请见github在Opencv中已经提供了特征值获...原创 2019-08-06 15:51:38 · 776 阅读 · 1 评论 -
Deigo1# 机器视觉-人脸跟踪
基于前面两节人脸检测,特征值获取及跟踪,我们进一步实现人脸的跟踪,我们可以让机器人跟踪人脸,暨当人脸移动时控制机器人转动,使得人脸始终在图像窗体的中间位置,基本流程如下人脸检测,lesson 16中已经介绍过了,这里直接引用就可以。特征获取,lesson 17中也已经实现,但要达到比较好的效果,需要对特征点做一些补偿及噪声点的剔除人脸跟踪,需要根据ROI的位置,来判断机器人需要怎样移动才能...原创 2019-08-06 15:56:44 · 464 阅读 · 0 评论 -
Diego1# 机器视觉 -AR标签跟随
ROS里面有一个非常好用的AR标签包,可以产生AR标签,识别AR标签。我们可以基于此功能实现很多好玩的AR应用,这篇文章中我们将介绍如何使用这个包,及基于此包我们实现AR标签的跟随。1.安装ar_track_alvarar_track_alvar可以通过apt_get来安装,非常方便:sudo apt-get install ros-kinetic-ar-track-alvar安装完成后...原创 2019-08-06 16:08:21 · 2768 阅读 · 1 评论 -
DiegoAPP–机器人设置,及选择
1.App有两个ActivityRobotChooser, 作为APP运行起来的Activity,配置为Main Action, 为用户呈现一个新增机器人,配置配置机器人的界面ControlApp,在连接到Robot后的主界面,执行控制任务,及Ros Topic数据的接收,并显示在界面上我们需要在项目的 文件中配置两个Activity,并吧RobotChooser配置为Main,如下图所示:...原创 2019-08-06 16:43:52 · 767 阅读 · 2 评论 -
DiegoAPP–机器人控制
机器人的控制主要涉及到如下几个文件ControlApp,在连接到Robot后的主界面,执行控制任务,及执行各种功能的FragmentRobotController,主要的机器人控制代码,在此文件中定义了要接收发送的ROS Topic,以及接收后的处理方式Fragement,执行各主要功能的的Fragment,通过ControlApp进行切换RobotController主要功能说明...原创 2019-08-06 16:50:01 · 1001 阅读 · 0 评论 -
ROS机器人Diego 1#制作(十七)用moveit assistant生成配置包
制作好了机器人的urdf文件,接下来我们就可以配置他的moveit了1.首先我们需要安装moveit,执行如下命令apt-get install ros-kinetic-moveit2.打开moveit设置助手roslaunch moveit_setup_assistant setup_assistant.launch3.创建新的moveit配置包 点击create new moveit conf原创 2017-01-13 10:20:51 · 2569 阅读 · 4 评论 -
ROS机器人Diego 1#制作(六)base controller---对ros_arduino_bridge的修改,实现两个马达独立PID调速
ros_arduino_bridge的base controller中对两个电机的PID控制是用的一套PID参数,但实际的使用中,由于马达的特性,地形,或者机器人的载重的平衡性的诸多问题使机器人不能按照预定轨迹行驶,最简单的就是机器人是否能够走直线,这就需要对两个电机分别进行PID调速,本文中将介绍如何对ros_arduino_bridge进行修改,以使支持对两路电机用不同的PID参数调速1.首先修原创 2016-11-18 11:51:00 · 4697 阅读 · 15 评论 -
ROS机器人Diego 1#制作(四)base controller---线速度的标定
让机器人动起来容易,但要精确控制是比较难的,这与控制算法、硬件都有比较大的相关性。对于轮式机器人,base controller代码写好,机器人动起来后,首先做的就是需要对线速度,和角速度进行标定,以保证机器人可以按照指令精确的的形式,这篇博文中将讲述线速度的标定方法,下一篇中介绍角速度的标定方法。线速度的标定,就是设置一个1m的距离,代码控制让机器人行驶1m,看是否刚好是1m,误差在可接受的范围内原创 2016-11-02 09:58:17 · 5662 阅读 · 0 评论 -
ROS机器人Diego 1#制作(十三)launch启动文件
Diego 1#中已经整合了不少的组件,一个一个启动比较麻烦,这里整理了一份启动的launch文件。<launch> <master auto="start"/> <arg name="camera" default="camera" /> <node pkg="xfei_asr" type="tts_subscribe_speak" name="tts_subscribe_speak" o原创 2016-12-13 12:29:45 · 2050 阅读 · 1 评论 -
ROS机器人Diego 1#制作(十)摄像头tf数据的发布
ROS中所有的零件都可以设定他的tf坐标数据,机器人在移动的时候会把这些点作为判断的数据,也是后面配置导航所必须的数据,具体的tf的概念,请学习官方文档http://wiki.ros.org/tf/Tutorials#Learning_tf,这里介绍diego中的代码#include <ros/ros.h>#include <tf/transform_broadcaster.h>int main(原创 2016-12-05 11:15:06 · 1864 阅读 · 1 评论 -
ROS机器人Diego 1#制作(九)视觉系统之使用Xtion发布点云数据
要做到机器人的SLAM自适应导航,最基本的要有激光雷达数据或者点云数据,但激光雷达目前价格太高,在淘宝上便宜的也要将近3000块,实在是太贵了,另外可替代的方法是用具有深度摄像机作为传感器发布点云数据,一般用的比较多的是微软的Kinect,或者华硕的Xtion。目前Kinect已经有2.0版本,而且二手的价格也比较便宜,但Kinect2.0支持的USB3.0接口,树莓派USB接口都是2.0的,无奈只原创 2016-11-26 22:53:54 · 3181 阅读 · 7 评论 -
ROS机器人Diego 1#制作(十二)SLAM导航的配置
一提到导航,一般人都会把地图、定位、和导航都包含进来,但在ROS中这三部分是分别用三个包实现的,分别是:gmapping —地图包,通俗一点这个包是用来画地图的,可以用这个包先把地图画出来,然后在用amcl和 move_base实现导航amcl—定位包,就是根据传感器信息确定在地图上的位置move_base—路径规划包,就是真正意义上的导航包,告诉机器人该怎么走很多博客都是将这三部分分开讲的原创 2016-12-11 23:32:50 · 2674 阅读 · 0 评论 -
ROS机器人Diego 1#制作(一)BOM清单
开源ROS机器人操作系统是机器人开发的利器,集成了大量先进的算法,而且还开源,国内也有很多人在研究,也有些原型,但网上文章多是翻译官方的英文教程,在这里我们一步一步的制作一个ROS机器人,探讨机器人制作的步骤,而且我们尽量用开源的硬件Arduino,树莓派,配件都可以在网上买到,或者用自己的一些旧的器件,机器人命名为Diego1#: 先上张Diego1#的图: 这里用了两种不同的底盘,除了底原创 2016-10-21 10:16:22 · 8137 阅读 · 4 评论 -
ROS机器人Diego 1#制作(十四)机械臂的控制---arduino驱动
今天从淘宝上订购的两个机械臂终于到货了,从这篇开始逐步讲解ROS机械臂的控制,这两个机械臂又花掉了800块,配的MG99R模拟舵机,如果配数字舵机每个机械臂要555元,价格还是有点小贵。机械臂安装好后如下图 本来有一块通过串口控制24路舵机控制的模块,但由于树莓派的串口已经被蓝牙所使用,现在蓝牙还要接蓝牙音箱,所以只好在找其他的舵机控制版,最后找到这款2路电机,和16路舵机控制模块,可以直接插在a原创 2016-12-30 10:24:21 · 16766 阅读 · 3 评论 -
ROS机器人Diego 1#制作(十五)机械臂的控制---通过键盘控制机械臂舵机
为了便于调试,特意写了一个通过键盘控制机械臂舵机的代码,来调试舵机,代码是基于teleop_twist_keyboard修改的。在arduino_node.py中已经声明了舵机读和写的ROS Service: # A service to position a PWM servo rospy.Service('~servo_write', ServoWrite, sel原创 2017-01-04 19:13:02 · 5121 阅读 · 3 评论 -
ROS机器人Diego 1#制作(八)ROS语音系统之整合讯飞语音
非常感谢ljthink提供的讯飞语音的树莓派SDK下载地址:http://download.csdn.net/download/yanghuan313/9616763。 整合讯飞语音其实非常简单,网友已经开发了相应的ROS 讯飞包,http://write.blog.csdn.net/postedit?ticket=ST-184345-b3BcqYCzBRM5UlDzTLNr-passport.c原创 2016-11-26 22:13:39 · 1768 阅读 · 0 评论 -
ROS机器人Diego 1#制作(十九)diego机器人的moveit驱动
moveit作为一个很好的机械臂路径规划工具,大大降低了机械臂的开发的难度,很多功能都可以在模拟环境下测试运行,如前面博客中讲到的,但要让真实的机器人能够按照moveit规划好的路径动起来,就需要开发连接机器人和moveit的驱动代码,这一篇我们就介绍一下如何开发针对diego的驱动。1.首先介绍一下驱动的原理上图为通讯原理 首先,moveit把计算的结果通过Ros action的方式发送给dri原创 2017-02-06 11:09:24 · 2900 阅读 · 5 评论 -
ROS机器人Diego 1#制作(十八)模拟环境测试moveit
Moveit 配置完成后,我们就可以在Rviz的模拟环境下对Moveit进行测试,以矫正urdf文件,及相关的配置,待都符合机器人的设计要求后,就可以把配置好的moveit移植到实际的机器人diego上运行。1.首先我们启动moveit的demo模式,执行如下命令roslaunch diego_moveit demo.launch注意这里的diego_moveit是存放moveit配置文件的包名,这原创 2017-01-18 15:07:04 · 1561 阅读 · 1 评论 -
ROS机器人Diego 1#制作(十六)创建机器人的urdf模型描述文件
由于后续要做机械臂的控制,会用到机器人的urdf描述文件,moveit需要根据urdf中的数据进行机械臂的路径规划,这里介绍一下如何一步一步创建机器人的urdf模型描述文件,最终做好的urdf模型如下图 1.首先要注意的是在ros中使用的右手坐标系,所以描述文件中的数据都是以此坐标系为原则 2.先建立baseline的 <?xml version="1.0"?><robot name="di原创 2017-01-11 13:03:40 · 4434 阅读 · 2 评论 -
ROS机器人Diego 1#制作(二十一)搭载EAI F4激光雷达gmapping创建室内地图
上篇文章中我们用hector创建了室内地图,本文中我们采用gmapping来创建室内地图,hector和gmapping主要区别gmapping创建地图需要odom数据,而hector不需要,所以在gmapping创建地图首先要确保odom数据的准确性,否则会影像到创建地图的效果。有关激光雷达,arduino的配置请参见上篇博文, 1.编写gmapping的launch文件.<launch>原创 2017-02-17 20:07:27 · 2985 阅读 · 1 评论 -
ROS机器人Diego 1#制作(二十二)基于EAI F4激光雷达数据进行定位amcl
在上两篇博文中我们讲到了利用gmapping和hector生成室内地图,本文将阐述如何利用激光雷达数据,在已产生的地图上进行定位。 1.生成地图 创建maps文件夹,并赋予其777的权限,既可以让map_server在此文件夹中生成地图文件 打开终端cd进入maps目录,并执行地图生成命令cd ~/catkin_ws/src/diego_nav/maps/rosrun map_server原创 2017-02-23 13:40:34 · 2697 阅读 · 0 评论 -
ROS机器人Diego 1#制作(二十三)搭载EAI F4激光雷达move_base路径规划
基于前几篇博文,机器人已经可以创建地图,并可以实现定位,对于SLAM最后一部分就是针对进行导航路径规划,这里我们要用到move_base包,导航其实就是机器人,在已有的地图上,借助amcl定位自己的位置,并根据激光雷达数据避开地图上的障碍物,具体详细的理论可以查看官方的数据,或者baidu之前大神们的作品。这里只介绍如何实现:1.launch文件 我们首先来看下配置好的launch文件。<laun原创 2017-03-07 11:46:57 · 1868 阅读 · 0 评论 -
ROS机器人Diego 1#制作(十一)将letv xtion点云数据转换成激光数据
对与机器小车来说,导航都是在2D的地图下导航的,而点云数据产生的是3D的数据,所以在使用gmapping产生地图之前需要将点云数据转换成激光数据,这就要用到pointcloud_to_laserscan这个包,可以点击链接来下载。1.首先把这个包的源代码克隆到~/catkin_ws/src目录下cd ~/catkin_ws/srcgit clone https://github.com/ros-p原创 2016-12-07 18:50:50 · 2712 阅读 · 0 评论