日常使用类
多年以后ls
做个有趣的人
展开
-
ubuntu 换源深层次解析
换源也是一个容易出错的问题,本文以树莓派为例展开,x86也是一样的操作。那么假设成立的话,就要记住我们是在树莓派(arm)上安装的ubuntu,不是X86,不是amd。安装好系统后,我们第一步做的就是查看版本号:lsb_release -a一定要记住Codename!!!! 我们前面安装18.04的系统感觉有点问题,于是最后换成了最新版的20.04,其刷机过程和前面一样,懒得改了。我们可以看出树莓派下的ubuntu20.04的Codename是 focal,可能会有人疑问记住这个干嘛,下面原创 2020-12-01 11:04:41 · 2324 阅读 · 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 · 11782 阅读 · 0 评论 -
树莓派安装各种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 · 13502 阅读 · 0 评论 -
树莓派报错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 · 10641 阅读 · 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 · 1883 阅读 · 0 评论 -
C++ 二叉树简单实现及推广
再介绍二叉树前先了解一下生活中常见的场景:猜价格(你猜一个数由对方告知你猜大了还是猜小了,知道猜对为止),我们以100以内为例,总共只需要七次就能猜对价格。如图:好了,下面介绍二叉树的知识。二叉树的定义:以递归形式给出的:一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根结点加上两棵分别称为左子树和右子树的、互不相交的二叉树组成。二又树的特点是每个结点最多有两个子女,分别称为该结点的左子女和右子女。在二又树中不存在度大于2的结点,并且二又树的子树有左、右之分,其子树的次序不能颠倒。二又原创 2020-06-15 22:09:25 · 564 阅读 · 1 评论 -
C/C++ 链表(单链表)
(1)了解链表链表是线性表的一种。线性表有两种存储结构:1、顺序存储结构:用一段地址连续的存储单元依次存储线性表的数据元素;2、链式存储结构(链表):是由一系列连接在一起的结点构成,其中的每个结点都是一个数据结构(2)链表的结构:先介绍链表的结构成分:1、结点结点有两部分信息组成,一部分是数据域:用来存放数据元素信息;另一种用来存放地址的域称为指针域,指针域中存储的信息称作指针或链。我们把结点记为Node。2、头结点:(1):头结点是为了操作的统一与方便而设立的,放在第一个元素结点之原创 2020-05-27 22:00:01 · 2186 阅读 · 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 · 3469 阅读 · 1 评论 -
ros 创建自己的msg
在使用ros订阅话题消息的时候,有些时候为了能够进行数据类型的转换或者想实现消息的传输问题时,需要用到自己定义的.msg消息类型。创建一个msg文件,再创建一个.msg文件:mkdir msgvi test.msg如下定义:float32[] datauint16 sizeHeader headerint16 port紧接着修改Cmakelist和packag...原创 2019-07-24 20:11:55 · 1504 阅读 · 0 评论 -
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 · 3193 阅读 · 1 评论 -
ROS订阅最新的消息及queue_size和buff_size的理解
机器人应用中难免会遇到运算起来很费时间的操作,比如图像的特征提取、点云的匹配等等。有时候,不可避免地,我们需要在ROS的Subscriber的Callback回调函数中进行这些费时的操作。Subscriber所订阅的消息的发布频率可能是很高的,而这些操作的运算速度肯定达不到消息发布的速度。所以,如果我们要是没有取舍的对于每个消息都调用一次回调函数,那么势必会导致计算越来越不实时,很有可能当下在处理...翻译 2019-07-24 21:48:12 · 9806 阅读 · 5 评论 -
linux 下python 2.7 和python 3.5 切换的问题
一般ubuntu系统会自带两种python版本,默认为较低的版本,但是有时我们移植一些项目工程pip安装时总会出现高版本才能安装的问题,这时我们就需要根据需要来切换python版本了。首先我们先看一下有没有关于Python的可选项:$ update-alternatives --display pythonupdate-alternatives: 错误: 无 python 的候选项那首先...原创 2019-07-20 20:11:07 · 811 阅读 · 0 评论 -
二维(一维)动态空间的开拓与释放
开发音视频工程项目时,在音频的传输方面我们需要开发一些存储的堆栈或者队列,下面先从一维开始说起,另外用到两个对开拓空间很有用的函数:alloca,malloc1、在栈上开发空间(一维):float *pcm = NULL;pcm = (float *)alloca(sizeof(float) * 1920 * 1);参数是申请分配内存的字节数,返回值为分配到的内存地址。它与mallo...原创 2019-07-26 15:12:28 · 256 阅读 · 0 评论 -
C/C++ 从创建线程到多线程的使用(加锁,解锁)
1、首先介绍什么是线程,为什么提出线程,优点在哪?有人会把线程和进程搞混,线程虽然不是进程,但可以理解为轻量级的进程,进程中可以包含多个线程,且这些线程可以执行不同的操作。同一进程中的多条线程将共享该进程中的全部系统资源,如虚拟地址空间,文件描述符和信号处理等等。但同一进程中的多个线程有各自的调用栈(call stack),自己的寄存器环境(register context),自己的线程本地存...原创 2019-07-28 11:20:37 · 1904 阅读 · 0 评论 -
C语言结构体类型的强制转换
当所用到的各个层次的成员较多时,我们会定义多个结构体函数,但是在传输过程中我们需要具体的指定哪一个结构体作为传输的数据,又C语言中的结构体并不能直接进行强制类型转换,只有结构体的指针可以进行强制类型转换,因此中间涉及到指针的问题,也就涉及到指向空间地址的问题。我们定义一个结构体如下:typedef struct stdudent{ char name[20]; i...原创 2019-08-14 16:51:59 · 3351 阅读 · 0 评论 -
树莓派(无界面)连接无线网
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 · 1616 阅读 · 0 评论 -
ROS 如何书写launch文件
ros日常开发过程中,当我们创建的节点越来越多时,一个一个运行的话效率非常低下,这时我们可以通过输入一条指令来实现所有功能模块的启动。启动文件(Launch File)便是ROS中一种同时启动多个节点的途径,还可以自动启动ROSMaster节点管理器,而且可以实现每个节点的各种配置。launch文件的使用如下:roslaunch PACKAGE_NAME LAUNCH_FILE_NAME下...原创 2019-08-16 17:09:25 · 3997 阅读 · 1 评论 -
linux下makefile的编写
默认的编译器是linux下的GCC和CCmake编译的步骤:源文件首先会生成中间目标文件(一般为.o文件),再由中间目标文件生成执行文件。在编译时,编译器只检测程序语法,和函数、变量是否被声明。如果函数未被声明,编译器会给出一个警告,但可以生成Object File。而在链接程序时,链接器会在所有的Object File中找寻函数的实现。1、Makefile的规则 target... : ...翻译 2019-07-17 09:38:19 · 1010 阅读 · 0 评论 -
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 · 1676 阅读 · 0 评论 -
ubuntu catkin_make Cmakelist fatal error: fstream: no sunch file and directory
操作系统:ros(indigo)/ubuntu14.04编译工具:cmake(catkin_make)出现错误:robot_control/src/robot_control.cpp:9:62: fatal error: robot_control/robot_control.h: No such file or directory#include<robot_control/rob...翻译 2019-04-16 20:07:55 · 416 阅读 · 0 评论 -
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 · 8466 阅读 · 32 评论 -
ubuntu14.04 安装node.js(8.x版本)和npm
安装node8:只需两布:1:curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -2:sudo apt-get install -y nodejsok!!!翻译 2019-05-05 22:30:22 · 481 阅读 · 0 评论 -
ubuntu升级或安装g++ 4.9 版本
1:sudo add-apt-repository ppa:ubuntu-toolchain-r/testsudo apt-get updatesudo apt-get install gcc-4.9sudo apt-get install g++-4.92:装了ppa,各种版本就可以共存了。不过有一个问题,每次要用的时候,必须使用g++-4.9,如果直接用g++会运行4.8版本的,...原创 2019-05-13 22:13:06 · 1508 阅读 · 0 评论 -
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 · 249 阅读 · 0 评论 -
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 · 8603 阅读 · 12 评论 -
ROS 各层次运动控制
帮助理解加深印象!!!翻译 2019-06-22 15:41:31 · 1012 阅读 · 0 评论 -
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 · 448 阅读 · 0 评论 -
Vim 的使用教程
基本操作见:vim基本操作命令或者该篇:vim操作命令转载 2019-07-10 21:40:08 · 104 阅读 · 0 评论 -
如何理解ROS中欧拉角和四元数
在ROS想必不少人碰到过欧拉角和四元数,它俩为什么会经常出现在一起呢?在以后开发机器人的定位模块时了解这些参数是很有必要的,下面给出一位大神的关于欧拉角的介绍,很容易明白,也指出为什么会用到四元数的问题哦。给上链接:如何理解欧拉角...原创 2019-07-10 22:00:19 · 1020 阅读 · 0 评论 -
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 · 476 阅读 · 0 评论 -
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 · 5365 阅读 · 0 评论 -
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 · 15158 阅读 · 0 评论 -
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 · 5816 阅读 · 0 评论 -
ROS关于tf坐标转换的问题(二)
1、tf变换的主要目的就是统一机器人的所有坐标关系,它可以实现系统中任一个点在所有坐标系之间的坐标变换。tf分为两个部分:(1)监听tf变换:接收并缓存系统中发布的所有参考系变换,并从中查询所需要的参考系变换。(2)广播tf变换:向系统中广播参考系之间的坐标变换关系。系统中更可能会存在多个不同部分的tf变换广播,每个广播都可以直接将参考系变换关系直接插入tf树中,不需要再进行同步。如果你足...原创 2019-07-07 10:51:18 · 1412 阅读 · 0 评论 -
ROS 做tf坐标变换的几种坐标(一)
平时开发机器人时少不了一些传感器接受信息并传给机器人本体,无论是做导航(雷达或视觉),还是做定位追踪,都需要一些附加在机器人本体上的坐标系来实现,所以下面简单介绍几种常见的坐标:base_link:机器人本体坐标系,与机器人中心重合base_footprint:坐标系原点为base_link原点在地面的投影,z值可能不同map:地图坐标系,一般设该坐标系为固定坐标系odom:里程计坐标系,...原创 2019-07-07 11:21:18 · 2397 阅读 · 0 评论 -
ubuntu14.04安装谷歌输入法
装了ubuntu14.04后感觉自带的拼音输入法不好用1:安装软件包sudo apt-get install ibus-googlepinyin2:重启sudo reboot3:桌面右上角的面板 文本输入设置点击左栏目左下角的 “+” 加号,搜索googlepinyin, 添加4:切换使用即可。...原创 2019-04-04 16:42:21 · 194 阅读 · 0 评论