自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 收藏
  • 关注

原创 ROS多个(单通道)分布式麦克风并行传输数据

前面文章已经讲过分布式麦克风linux下的开发,以及在ROS中的应用,也提到了实现多线程的方法,本文主要简单补充一下多个单通道麦克风并行收发数据的实现。由于ros中多进程一般是指通过多个ros节点收发信息的方式,而多线程的实现仅在一个进程(一个节点)中就可以实现。前面博文已经说明多进程的工作机制,这里不再说明。由于分布式麦克风是通过ip地址及端口号发送数据的,这里仅拓展到实现两个麦克风的情景,...

2019-07-29 20:41:52 638

原创 分布式麦克风的开发及ros中的实现

这一篇博客会详细描述实际开发分布式麦克风的整个过程,闲话不说,直奔主题。该工程实现的是单通道的,采样率都行的分布式麦克风音频传输,通过socket传输通信具体用法如下所示:发送端:./tx -r 16000 -c 1 -h 192.168.***.*** -d plughw:*,*,* -m 256接受端:./rx -m 256上面r代表采样率,c代表通道,h代表传输音频ip地址,d代表...

2019-07-22 10:32:00 1004

原创 ROS 订阅雷达/scan信息和定位信息的数据融合进行目标跟随

雷达信息scan的数据类型如下(通过rosmsg show 查看):代码中用到的min(range)代表离障碍物的最小距离,而且代码含有简单的过滤功能,请仔细研读!!!Header header # Header也是一个结构体,包含了seq,stamp,frame_id,其中seq指的是扫描顺序增加的id,stamp包含了开始扫描的时间和与开始扫描的时间差,frame_i...

2019-06-19 20:35:23 5698

原创 ROS+科大讯飞语音识别控制机器人

科大讯飞语音识别控制实际机器人运动。本文将ros与语音识别想结合进行开发。进行以下步骤,1、创作ros工作空间2、安装mpalyer播放器sudo apt-get install mplayer3、将讯非的语音库动态文件.so文件放到/usr/lib/下4、ros工程目录src下新建文件xf_asr.cpp 并将以下内容复制进去,appid改成你自己的(官网申请)。/** 语音听...

2019-04-23 21:09:37 7739 31

原创 ubuntu 换源深层次解析

换源也是一个容易出错的问题,本文以树莓派为例展开,x86也是一样的操作。那么假设成立的话,就要记住我们是在树莓派(arm)上安装的ubuntu,不是X86,不是amd。安装好系统后,我们第一步做的就是查看版本号:lsb_release -a一定要记住Codename!!!! 我们前面安装18.04的系统感觉有点问题,于是最后换成了最新版的20.04,其刷机过程和前面一样,懒得改了。我们可以看出树莓派下的ubuntu20.04的Codename是 focal,可能会有人疑问记住这个干嘛,下面

2020-12-01 11:04:41 2216 1

原创 linux清理log日志文件

需要清理的场景:1、linux会自动记录日志,日志文件中包含用户的所有操作。这样虽然可以方便用户查找相关bug,但是也导致的日志文件所占据的空间越来越大。在系统能够正常满足用户使用的条件下,清理日志文件就非常有必要了2、当我们使用命令行TAB键补全时会出现异常:bash: cannot create temp file for here-document: No space left on device解决步骤:1、使用命令查看硬盘空间df -h 显示如下:这时候根据提示,进入指定的目

2020-12-01 10:13:27 10568

原创 树莓派安装各种Ubuntu版本及系统推荐

树莓派有不同的系统可以安装,以下是几种系统的对比;Raspberry Pi OS(Raspbian)树莓派官方深度定制的硬件驱动与软件程序,官方推荐系统。如果你第一次使用树莓派,请下载这个。32 位 Lite 版(无桌面) | 32 位桌面版(推荐使用) | 32 位桌面版(含常用软件)默认帐号:Username: pi Password: raspberryUbuntu MATE for the Raspberry PiUbuntu MATE 是桌面 Linux 发行,其宗旨是通过 MATE

2020-11-29 16:41:46 12689

原创 树莓派报错Kernel panic-not syncing: VFS: unable to mount root fs on unknown-block(179,2)

树莓派系统启动或者刷系统的时候会出现:Kernel panic-not syncing: VFS: unable to mount root fs on unknown-block(179,2)这是系统文件损坏的问题,原因是sd卡中的内容被不小心修改,主要是mmcblk0p2分区,将系统sd卡取下,通过读卡器在另一个linux系统下挂载,查看区挂载情况,查看SD卡的分区fdisk -l 例如SD卡分区为: /dev/sdb2使用以下命令修复fsck.ext4 -v /dev/sdb2或

2020-11-27 15:21:12 10073 2

原创 C++ 二叉树常见用法

二叉树的创建:上篇文章遍历的时候二叉树的创建是这样的: TreeNode* T1 = new TreeNode(8); TreeNode* T2 = new TreeNode(8); TreeNode* T3 = new TreeNode(7); TreeNode* T4 = new TreeNode(9); TreeNode* T5 = new TreeNode(2); TreeNode* T6 = new TreeNode(4); TreeNode* T7 = new TreeNode(

2020-06-17 10:41:58 1689

原创 C++ 二叉树简单实现及推广

再介绍二叉树前先了解一下生活中常见的场景:猜价格(你猜一个数由对方告知你猜大了还是猜小了,知道猜对为止),我们以100以内为例,总共只需要七次就能猜对价格。如图:好了,下面介绍二叉树的知识。二叉树的定义:以递归形式给出的:一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根结点加上两棵分别称为左子树和右子树的、互不相交的二叉树组成。二又树的特点是每个结点最多有两个子女,分别称为该结点的左子女和右子女。在二又树中不存在度大于2的结点,并且二又树的子树有左、右之分,其子树的次序不能颠倒。二又

2020-06-15 22:09:25 538 1

原创 C/C++ 链表(单链表)

(1)了解链表链表是线性表的一种。线性表有两种存储结构:1、顺序存储结构:用一段地址连续的存储单元依次存储线性表的数据元素;2、链式存储结构(链表):是由一系列连接在一起的结点构成,其中的每个结点都是一个数据结构(2)链表的结构:先介绍链表的结构成分:1、结点结点有两部分信息组成,一部分是数据域:用来存放数据元素信息;另一种用来存放地址的域称为指针域,指针域中存储的信息称作指针或链。我们把结点记为Node。2、头结点:(1):头结点是为了操作的统一与方便而设立的,放在第一个元素结点之

2020-05-27 22:00:01 2118 1

原创 wget 结合everything上传文件到服务器端(以及更改ip地址)

上传服务器的方式有很多,平时常用的是ssh,scp等一些命令操作,但是当文件足够大的时候,用这些命令就显得力不从心了。下面推荐一种操作系统是win10环境下上传批量文件到服务端的方法。需要用到的软件:1:xshell,cmder,或者类似linux的终端界面(具备基础的linux命令,ssh等)我用的是cmder,给出安装模拟的链接:https://blog.csdn.net/xiaosa...

2019-10-22 21:31:24 3156 1

原创 .sh脚本启动多个程序(对应多个终端)之ROS篇

经常开发ros环境的应该知道,当节点太多难以控制的时候,不如写个脚本直接启动多个节点(对应多个终端)。下面我们将介绍如何实现启动在多个终端下启动多个节点的方式我们先介绍一下终端的一些信息:终端输入:gnome-terminal能否打开一个终端,然后运行gnome-terminal有一些参数的要求,如下:-t 终端的标题 //注意,有些版本不支持-e 可以出现多次-x 只...

2019-08-23 11:17:00 6436 2

原创 ubuntu 开机启动脚本(亲测可用)

为了让程序更简单的运行,使用方便,开机启动已经成为了一种有效的方式。ubuntu下的开机启动有时并不是很好用,需要自己调试总结经验。下面介绍几种常用的开机启动方式:第一种:创建独立的脚本文件 (该方法亲测可用,请优先尝试)(1)编写脚本文件.shcdvi run.sh添加以下内容(注释也必须添加):#!/bin/sh### BEGIN INIT INFO# Provides:...

2019-08-23 09:50:45 2171

原创 树莓派(无界面)连接无线网

1、连接可见的WIFI:先进行扫描wifisudo iwlist wlan0 scan当是到连的热点或者wifi的名称时,当wifi名为iPhone时,可以使用:sudo iwlist wlan0 scan |grep iPhone进行配置无线网的参数:sudo vim /etc/wpa_supplicant/wpa_supplicant.confnetwork={ ...

2019-08-21 16:27:23 1532

原创 ROS 如何书写launch文件

ros日常开发过程中,当我们创建的节点越来越多时,一个一个运行的话效率非常低下,这时我们可以通过输入一条指令来实现所有功能模块的启动。启动文件(Launch File)便是ROS中一种同时启动多个节点的途径,还可以自动启动ROSMaster节点管理器,而且可以实现每个节点的各种配置。launch文件的使用如下:roslaunch PACKAGE_NAME LAUNCH_FILE_NAME下...

2019-08-16 17:09:25 3912 1

原创 C语言结构体类型的强制转换

当所用到的各个层次的成员较多时,我们会定义多个结构体函数,但是在传输过程中我们需要具体的指定哪一个结构体作为传输的数据,又C语言中的结构体并不能直接进行强制类型转换,只有结构体的指针可以进行强制类型转换,因此中间涉及到指针的问题,也就涉及到指向空间地址的问题。我们定义一个结构体如下:typedef struct stdudent{ char name[20]; i...

2019-08-14 16:51:59 3123

原创 C/C++ 从创建线程到多线程的使用(加锁,解锁)

1、首先介绍什么是线程,为什么提出线程,优点在哪?有人会把线程和进程搞混,线程虽然不是进程,但可以理解为轻量级的进程,进程中可以包含多个线程,且这些线程可以执行不同的操作。同一进程中的多条线程将共享该进程中的全部系统资源,如虚拟地址空间,文件描述符和信号处理等等。但同一进程中的多个线程有各自的调用栈(call stack),自己的寄存器环境(register context),自己的线程本地存...

2019-07-28 11:20:37 1797

原创 二维(一维)动态空间的开拓与释放

开发音视频工程项目时,在音频的传输方面我们需要开发一些存储的堆栈或者队列,下面先从一维开始说起,另外用到两个对开拓空间很有用的函数:alloca,malloc1、在栈上开发空间(一维):float *pcm = NULL;pcm = (float *)alloca(sizeof(float) * 1920 * 1);参数是申请分配内存的字节数,返回值为分配到的内存地址。它与mallo...

2019-07-26 15:12:28 229

翻译 ROS订阅最新的消息及queue_size和buff_size的理解

机器人应用中难免会遇到运算起来很费时间的操作,比如图像的特征提取、点云的匹配等等。有时候,不可避免地,我们需要在ROS的Subscriber的Callback回调函数中进行这些费时的操作。Subscriber所订阅的消息的发布频率可能是很高的,而这些操作的运算速度肯定达不到消息发布的速度。所以,如果我们要是没有取舍的对于每个消息都调用一次回调函数,那么势必会导致计算越来越不实时,很有可能当下在处理...

2019-07-24 21:48:12 9407 5

原创 ROS多线程发布订阅话题信息

下面讲述几种ros订阅多个话题的例子:1、实现接收两个topic,并发布一个topic,采用的是ros多线程的方法解决。#include <ros/ros.h> #include "std_msgs/String.h"#include <boost/thread.hpp>#include <sstream>class SubscribeAndPu...

2019-07-24 21:38:29 3043 1

原创 ros 创建自己的msg

在使用ros订阅话题消息的时候,有些时候为了能够进行数据类型的转换或者想实现消息的传输问题时,需要用到自己定义的.msg消息类型。创建一个msg文件,再创建一个.msg文件:mkdir msgvi test.msg如下定义:float32[] datauint16 sizeHeader headerint16 port紧接着修改Cmakelist和packag...

2019-07-24 20:11:55 1434

原创 ubuntu install :The following packages have unmet dependencies(未能满足依赖关系)

ubuntu版本不一样,或者源不一样都会出现下面这样的问题:The following packages have unmet dependencies: libopus-dev : Depends: libopus0 (= 1.1.2-1ubuntu1) but 1.2.1-1~16.04.york0 is to be installedE: Unable to correct probl...

2019-07-21 14:48:42 18651 6

原创 linux 下python 2.7 和python 3.5 切换的问题

一般ubuntu系统会自带两种python版本,默认为较低的版本,但是有时我们移植一些项目工程pip安装时总会出现高版本才能安装的问题,这时我们就需要根据需要来切换python版本了。首先我们先看一下有没有关于Python的可选项:$ update-alternatives --display pythonupdate-alternatives: 错误: 无 python 的候选项那首先...

2019-07-20 20:11:07 799

原创 ros中开发rnnoise语音增强算法的开发示例

最近看了一个关于rnn语音增强算法的项目,想到机器人听觉可能会需要语音降噪方面的算法,于是一时兴起搞了一下。除噪效果还是很明显的。采用的是 GRU/LSTM 模型。项目地址为:rnnoise我们可以考虑采用用作者训练的模型来构建数据集,也可以自己根据上面项目工程的地址按照步骤自己训练模型供自己调用,具体的请自己开发。但是目前作者提供的只是一个仅支持48K采样率的音频数据。不过测了一下16k...

2019-07-20 10:29:29 999

翻译 linux下makefile的编写

默认的编译器是linux下的GCC和CCmake编译的步骤:源文件首先会生成中间目标文件(一般为.o文件),再由中间目标文件生成执行文件。在编译时,编译器只检测程序语法,和函数、变量是否被声明。如果函数未被声明,编译器会给出一个警告,但可以生成Object File。而在链接程序时,链接器会在所有的Object File中找寻函数的实现。1、Makefile的规则 target... : ...

2019-07-17 09:38:19 987

原创 linux下解读编译Cmakelist编译方式并拓展到ROS

在linux下C/C++的编译方式不像windows下IDE方式编译,一般常用到的就是cmake和make。总的流程是这样的:先执行cmake(依赖于cmakelist),生成makefile,执行make操作。ros中catkin_make只用到了Cmakelist。首先解读Cmakelist文件里面各种命令的所代表的含义:1、Cmakelist:Cmakelist的编译方式通过下面...

2019-07-16 11:13:59 1638

原创 ubuntu 下的工程代码上传到自己的github步骤

1、创建自己的github仓库2、仓库初始化git init3、添加当前文件的所有文件git add .4、添加评论git commit -m "first commit" 5、清空远程的origingit remote rm origin6、git remote add origin +自己创建仓库的github地址git remote add origin ×××...

2019-07-15 11:07:42 447

原创 如何理解ROS中欧拉角和四元数

在ROS想必不少人碰到过欧拉角和四元数,它俩为什么会经常出现在一起呢?在以后开发机器人的定位模块时了解这些参数是很有必要的,下面给出一位大神的关于欧拉角的介绍,很容易明白,也指出为什么会用到四元数的问题哦。给上链接:如何理解欧拉角...

2019-07-10 22:00:19 989

转载 Vim 的使用教程

基本操作见:vim基本操作命令或者该篇:vim操作命令

2019-07-10 21:40:08 90

原创 ROS 做tf坐标变换的几种坐标(一)

平时开发机器人时少不了一些传感器接受信息并传给机器人本体,无论是做导航(雷达或视觉),还是做定位追踪,都需要一些附加在机器人本体上的坐标系来实现,所以下面简单介绍几种常见的坐标:base_link:机器人本体坐标系,与机器人中心重合base_footprint:坐标系原点为base_link原点在地面的投影,z值可能不同map:地图坐标系,一般设该坐标系为固定坐标系odom:里程计坐标系,...

2019-07-07 11:21:18 2368

原创 ROS关于tf坐标转换的问题(二)

1、tf变换的主要目的就是统一机器人的所有坐标关系,它可以实现系统中任一个点在所有坐标系之间的坐标变换。tf分为两个部分:(1)监听tf变换:接收并缓存系统中发布的所有参考系变换,并从中查询所需要的参考系变换。(2)广播tf变换:向系统中广播参考系之间的坐标变换关系。系统中更可能会存在多个不同部分的tf变换广播,每个广播都可以直接将参考系变换关系直接插入tf树中,不需要再进行同步。如果你足...

2019-07-07 10:51:18 1356

原创 ROS topic 通过三种形式发送数据信息(publish msg)

1、在C++中通过创建一个类,这个类的子函数可以传递信息,并根据需要进行转换(如需要的话),并且可以在这个类中直接publish msg举例如下:class Publish{ public: ros::NodeHandle n_; SubscribeAndPublish() { //Topic you want to publish ...

2019-07-06 21:46:06 5679

原创 python pip安装报错问题汇总

没有pip时通过以下安装:pip:apt install python-pippip3:apt install python3-pip1、当使用sudo pip install ****报错时如下:Traceback (most recent call last): File "/usr/bin/pip", line 9, in <module> from ...

2019-07-06 11:21:53 14740

转载 C语言 fread()与fwrite()函数说明与示例

函数原型(1)size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );其中,ptr:指向保存结果的指针;size:每个数据类型的大小;count:数据的个数;stream:文件指针函数返回读取数据的个数。(2)size_t fwrite ( const void * ptr, size_t size, si...

2019-07-04 19:25:55 392

原创 C语言简单读取音频保存为音频文件

总体上就算用到两个函数:1 fopen 2 fwrite用法:FILE * fopen(const char * path,const char * mode);size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream);(1)buffer:是一个指针,对fwrite来说,是要输出数据的地址;...

2019-07-01 10:59:02 5175

翻译 ROS 各层次运动控制

帮助理解加深印象!!!

2019-06-22 15:41:31 976

原创 ROS简单实现订阅/scan激光雷达的距离信息

ROS 常常会用到导航系统的开发,为了有助于理解导航原理的背后是什么,该篇主要以得到距离信息为主写了非常简单的demo。import rospyfrom sensor_msgs.msg import LaserScanfrom geometry_msgs.msg import Twistclass Obstacle(): def __init__(self): s...

2019-06-20 19:05:57 8889 14

原创 ROS ,how to subscriber hark_msgs----hark-ros

ROS ,how to subscriber hark_msgs给出一个订阅hark_msgs的例子,并封装成节点。注意看回调函数的调用!!!// STL headers#include <limits>// System headers#include <pthread.h>// ROS headers#include <ros/ros.h>...

2019-06-19 15:00:47 232

原创 CMake Error (find_package):Could not find a package configuration

ros cmakelists 报错Could not find a package configuration file provided by “******” with any of the following names:****Config.cmake****config.cmakeAdd the installation prefix of “hark_msgs” to C...

2019-06-18 13:35:36 8255 12

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除