机器人
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 · 1707 阅读 · 2 评论 -
机械臂上位机监控软件---2.软件架构
软件本身是采用微软的MFC技术,所以软件本身的架构是视图-文档架构,同时引用了一些开源的软件进行机械臂动态视图的渲染。如下是项目的类图,可以清楚的反应产品的架构。MFC有标准的类架构,这些标准的类如,视图类,文档类,框架类,这里就不多做介绍,网上有大量的介绍文章,本文重点说明机械臂是如何在视图中渲染,显示出来,这里重点用到了两个类STLObject:此类主要的功能是通过读取3D模型文件*....原创 2020-02-11 15:32:51 · 2589 阅读 · 2 评论 -
Diego 1# 机器视觉-特征点检测及跟踪
上一节中我们实现了人脸的检测,当有人脸出现摄像头前面时,图像窗体中会用矩形显示人脸的位置,接下来我们需要实现特征值获取,及特征值跟随。本文针对Opencv3移植了ROS By Example Volume 1中的示例代码,所有代码均在opencv3环境完成测试,可以正常运行。1.特征值获取1.1 源代码源文件good_features.py请见github在Opencv中已经提供了特征值获...原创 2019-08-06 15:51:38 · 774 阅读 · 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 评论 -
3轴码垛机械臂运动学逆解
对于3轴码垛机械臂控制最基本的是对其建立运动学模型,而对于3轴码垛类型机械臂来说运动学模型,其本质就是给定空间3D坐标,求解3个轴的旋转角度。 如上图所示,左侧为实物坐标,右侧图为抽象到坐标系的几何表示,逆解过程就是知道末端坐标,而求解各个轴的旋转角度,进而转换为步进电机的步进数,下面我们利用立体几何,和解析几何知识来进行你运算分析。一,假设条件坐标系采用右手坐标系,如上图所示 机械臂的底座位于原创 2017-10-03 10:37:37 · 13695 阅读 · 6 评论 -
物联网平台架构设计
现在网上讨论的有关物联网的帖子非常之多,但大部分都是介绍理论或者有关硬件,通讯相关的问题,比如物联网模块,物联网通讯协议MQTT、XMPP、NB_IOT等,个人认为这些只是物联网中一部分,而涉及到物联网的设备如何管理,用户如何管理,数据包如何解析,大数据如何展示等也是物联网模块中非常重要的部分,所以作者就根据自身工作中总结出来的建构在云端的物联网平台基本架构分享给大家,并基于此架构如何一步一步来开发原创 2017-09-11 14:13:28 · 72925 阅读 · 8 评论 -
ROS机器人Diego 1# 利用人工智能 风格迁移技术拍摄不同画风的视频
风格迁移,就是将一种图片的风格迁移到其他图片上,改变其他图片的风格,很好玩的一个人工自能模型,github上已经有很多实现的方法,本文参考https://github.com/hzy46/fast-neural-style-tensorflow 的算法,利用Diego1#的平台实现实时视频的风格转换,先上两张图看效果: 是不是很酷呢,其实实现方法和上篇博文中的原理是一样的,只是把人工智能的原创 2017-07-28 20:29:34 · 1331 阅读 · 1 评论 -
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 机器人双路视频手机监控
这几天心血来潮,把家里的旧摄像头装在Diego1#上,再加上原来的Letv Xtion就形成了双路视频摄像头,再通过手机APP实现了双路视频远程监控,先上个图: 手机监控的画面,上面的画面是Letv_Xtion传输的数据,下面的是罗技的usb摄像头画面 下面这张图是安装了摄像头的Diego1#。 测试下来在同一个局域网内,视频传输非常流畅,只是手机会发热,安装在Diego1#上的mini pc原创 2017-06-30 23:24:29 · 2486 阅读 · 4 评论 -
ROS 机器人控制APP
最近利用网上各种开源的资源整合出了一个ROS机器人控制APP,如大家有兴趣可以到我的个人网站去下载http://www.diegorobot.com/wp/?page_id=1237&lang=zh,后续还会增加其他的功能,目前APP实现了如下功能:多机器人管理,可以同时增加多个机器人,每个机器人有不同的配置 多种控制方式,控制ROS机器人 订阅ROS机器人发布的视频topic,并在手机上显示原创 2017-06-28 16:45:22 · 9768 阅读 · 27 评论 -
ROS机器人Diego 1#制作总结
由于树莓派本身的运算能力限制,Diego 1#的制作到上一篇博文应该算是一个里程碑了,后续将基于新的硬件进行开发制作Diego 1# plus,重点会在图像处理上,笔者曾经尝试使用树莓派来做,但经过多次反复试验,即使跑一个人脸识别的代码,树莓派的CPU使用率都在80%上以上,无奈想玩更高级的东西,就的升级硬件了。本文做为一个阶段性的总结,就把Diego 1#制作过程中走过的坑说明下:1.底盘Dieg原创 2017-03-17 11:52:12 · 2654 阅读 · 2 评论 -
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 · 972 阅读 · 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 评论 -
机械臂上位机监控软件---1.功能介绍
对于机械臂,我们往往需要开发上位机软件,对机械臂的运行状态进行监控,并模拟机械臂的运行,虽然成熟的机械臂都有配套软件,但实际工作中我们可能还需要相对简单的监控软件,本文既笔者借助一些开源软件进行修改,采用微软MFC架构,在Visual Studio开发的一款简单的机械臂运行监控软件,可以通过Socket读取机械臂状态数据,并通过图形的方式模拟机械臂的运行,当然也可以根据需求扩展不同的通信方式,先上...原创 2019-09-04 11:38:07 · 4943 阅读 · 2 评论 -
DiegoAPP–增加高德地图,并在地图上显示机器人轨迹
RobotCA原版的APP是使用国外的地图,在国内访问不了,本文将介绍如何使用高德地图来替代原有的地图,并订阅GPS消息,在地图上显示机器人轨迹在APP中增加高德地图,我们首先要申请高德的Key,具体的申请方法可以参考高德官方文档https://lbs.amap.com/api/android-sdk/guide/create-project/get-key/1.在AndroidManifes...原创 2019-08-06 16:55:07 · 1152 阅读 · 3 评论 -
DiegoAPP–机器人控制
机器人的控制主要涉及到如下几个文件ControlApp,在连接到Robot后的主界面,执行控制任务,及执行各种功能的FragmentRobotController,主要的机器人控制代码,在此文件中定义了要接收发送的ROS Topic,以及接收后的处理方式Fragement,执行各主要功能的的Fragment,通过ControlApp进行切换RobotController主要功能说明...原创 2019-08-06 16:50:01 · 1001 阅读 · 0 评论 -
DiegoAPP–机器人设置,及选择
1.App有两个ActivityRobotChooser, 作为APP运行起来的Activity,配置为Main Action, 为用户呈现一个新增机器人,配置配置机器人的界面ControlApp,在连接到Robot后的主界面,执行控制任务,及Ros Topic数据的接收,并显示在界面上我们需要在项目的 文件中配置两个Activity,并吧RobotChooser配置为Main,如下图所示:...原创 2019-08-06 16:43:52 · 766 阅读 · 2 评论 -
DiegoAPP–整体架构介绍
1.开发环境RobotCA是采用Eclipse进行开发,在DiegoAPP中将整个项目迁移到了Android Studio 3.4开发Android Studio中Gradle 和Gradle Plugin的版本入下图,Gradle和Gradle Plugin的版本非常重要,其他的版本会出现一些编译错误。Diego APP支持了Android8.0,Android8.1,Android9...原创 2019-08-06 16:38:14 · 691 阅读 · 2 评论 -
Diego1# 机器视觉 -物体识别和定位
google最近公布了基于tensorflow物体识别的Api,本文将利用Diego1#的深度摄像头调用物体识别API,在识别物体的同时计算物体与出机器人摄像头的距离。原理如下:Object Detection 订阅Openni发布的Image消息,识别视频帧中的物体Object Depth 订阅Openni发布的Depth Image消息,根据Object Detection识别出的物体列...原创 2019-08-06 16:27:13 · 1946 阅读 · 3 评论 -
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 · 2758 阅读 · 1 评论 -
Deigo1# 机器视觉-人脸跟踪
基于前面两节人脸检测,特征值获取及跟踪,我们进一步实现人脸的跟踪,我们可以让机器人跟踪人脸,暨当人脸移动时控制机器人转动,使得人脸始终在图像窗体的中间位置,基本流程如下人脸检测,lesson 16中已经介绍过了,这里直接引用就可以。特征获取,lesson 17中也已经实现,但要达到比较好的效果,需要对特征点做一些补偿及噪声点的剔除人脸跟踪,需要根据ROI的位置,来判断机器人需要怎样移动才能...原创 2019-08-06 15:56:44 · 462 阅读 · 0 评论 -
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#制作(二十三)搭载EAI F4激光雷达move_base路径规划
基于前几篇博文,机器人已经可以创建地图,并可以实现定位,对于SLAM最后一部分就是针对进行导航路径规划,这里我们要用到move_base包,导航其实就是机器人,在已有的地图上,借助amcl定位自己的位置,并根据激光雷达数据避开地图上的障碍物,具体详细的理论可以查看官方的数据,或者baidu之前大神们的作品。这里只介绍如何实现:1.launch文件 我们首先来看下配置好的launch文件。<laun原创 2017-03-07 11:46:57 · 1868 阅读 · 0 评论 -
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 · 2984 阅读 · 1 评论 -
ROS机器人Diego 1#制作(三)base controller---ros_arduino_bridge
ros_arduino_bridge封装了通过串口于底盘控制器Arduino的通信,并提供了一个标准的base controller,所以对arduino资源的占用非常小,arduino只是作为一个单纯的硬件控制器来使用,而所有的运算逻辑都放在上位机进行,通过串口指令的方式控制Arduino程序的运行。在Arduino UNO编译一个完整的ros_arduino_bridge后的资源占用情况如下图:原创 2016-10-31 09:32:33 · 8060 阅读 · 10 评论 -
ROS机器人Diego 1#制作(五)base controller---角速度的标定
角速度标定,即控制机器人人转动固定的角度,看机器人是否按照控制指令完成,在这里我们让机器人转360度,代码如下:#!/usr/bin/env pythonimport rospyfrom geometry_msgs.msg import Twist, Quaternionfrom nav_msgs.msg import Odometryimport tffrom math import r原创 2016-11-11 10:46:06 · 3569 阅读 · 4 评论 -
ROS机器人Diego 1#制作(二)base controller---rosserial_arduino
ROS机器人要动起来首先需要对底盘的驱动,在ROS的控制模型中,一般会把对底盘的驱动,及马达的PID调节放在一起称之为base controller,ROS社区已经有针对Arduino封装好的Package—rosserial_arduino,wiki地址为:http://wiki.ros.org/rosserial_arduino/Tutorials,接下来我们一步一步来实现一个Arduino B原创 2016-10-28 13:29:45 · 6299 阅读 · 11 评论 -
ROS机器人Diego 1#制作(七)ROS语音系统
现在语音识别很火,但从笔者的实际经验来看,目前的语音识别技术还远没有到大规模使用的阶段,语音识别现在无论是在线的还是离线的都在相对安静的环境下识别率比较高,但一旦有噪音,或者多人对话,现在语音识别技术都没有办法准确识别。 国内使用的比较多的是科大讯飞的识别技术,而且在线识别的准确率比较高,笔者本也打算集成科大讯飞的,但从其网站下载的SDK来发现,其对Linux只支持x86,x64的计算机,对于树莓原创 2016-11-18 14:25:37 · 2021 阅读 · 3 评论 -
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 评论 -
智能小车制作过程全纪录: 五、软件平台--- Sphinx语音识别
目前国内语音识别主要是使用科大讯飞的在线语音识别,而且准确度也非常高,这主要得益于其强大的语音库,甚至方言也可以识别。但有很多时候需要离线的环境,这就需要离线识别,另外本人在这个平台上使用开源的技术,所以这里使用Sphinx4语音识别平台1.下载Sphinx4开发包 Sphinx有c语言,和Java版本,java版本的开发包技术Sphinx4, 下载:sphinx4-core-5prealpha原创 2016-10-07 17:03:44 · 3988 阅读 · 0 评论 -
智能小车制作过程全纪录: 四、软件平台--- Java 控制GPIO
嵌入式系统针对GPIO的开发,大部分都是采用c/c++进行开发,也有在树莓派上针对GPIO的java开发包,但必须要用树莓派平台,但友善之臂Friendarm的板子并不支持,只能自己想办法,在这里我们用Jni技术,直接调用友善之臂Friendarm的驱动包接口1.首先下载友善之臂Friendarm的开发包Matrix,并编译apt-getupdate&&apt-getinstallgit原创 2016-10-04 22:07:46 · 4447 阅读 · 0 评论 -
智能小车制作过程全纪录: 三、软件平台--- Java 平台串口通信
嵌入式Linux上大部分都是有C/C++来做开发的,主要的原因还是为了效率,但本人最近几年用Java比较多所以决定用Java比较多所以决定还是用Java来开发,再者个人认为现在硬件的发展,对于实时性没有苛刻要求的环境Java足可以胜任了,所以言归正传,下面开始实际行动:1.Java虚拟机的安装,OpenJava,Oracle Java都可以,这里用Oracle Java为例:a. Ubuntu本身原创 2016-09-29 18:03:54 · 3168 阅读 · 0 评论 -
智能小车制作过程全纪录: 二、软件平台--- Arduino底盘驱动
主控板主要提供智能数据分析,根据分析的结果通过串口发送控制命令给小车驱动板,小车驱动板根据控制命令控制小车的动作,主控板采用Java平台,集成相关领域的开源解决方案,软件系统主要包括如下:底盘驱动:根据控制命令控制4个电机的控制听觉系统:采用Sphinx4开源语音识别框架,识别语音数据视觉系统:采用JavaCV图像识别来分析小车所看到的内容,做到目标跟踪语音合成系统:采用FreeTTS语音合原创 2016-09-28 15:09:45 · 5269 阅读 · 1 评论 -
ROS机器人Diego 1#制作(四)base controller---线速度的标定
让机器人动起来容易,但要精确控制是比较难的,这与控制算法、硬件都有比较大的相关性。对于轮式机器人,base controller代码写好,机器人动起来后,首先做的就是需要对线速度,和角速度进行标定,以保证机器人可以按照指令精确的的形式,这篇博文中将讲述线速度的标定方法,下一篇中介绍角速度的标定方法。线速度的标定,就是设置一个1m的距离,代码控制让机器人行驶1m,看是否刚好是1m,误差在可接受的范围内原创 2016-11-02 09:58:17 · 5660 阅读 · 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 · 1862 阅读 · 1 评论 -
ROS机器人Diego 1#制作(二十)搭载EAI F4激光雷达Hector创建室内地图
EAI F4激光雷达是EAI最近推出的低成本二维激光雷达,具备极高的性价比 今天我们就用这款雷达基于ROS的 hector来创建室内地图,先上创建好的室内地图。 此图是diego 1#搭载此雷达使用hector创建的。1.下载F4的ROS包,执行如下命令cd ~/catkin_ws/srcgit clone https://github.com/EAIBOT/flashgo.gitc原创 2017-02-16 10:38:52 · 4447 阅读 · 0 评论 -
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#制作(十八)模拟环境测试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 评论