- 博客(50)
- 资源 (5)
- 收藏
- 关注
原创 CCS中的C函数调用C++类成员函数问题
参考见这里,主要思路是用Wrapper来包裹类,进而通过结构体方式,在C函数中调用C++类的成员函数。我参考了他提供的handle的思路,但是我的wrapper是单例,实际就用不到vector了。实际使用中遇到了两个问题,第一个是循环依赖,这个通过拆解类的功能,解决了。第二个是部分文件中无法识别class关键字,原因是ccs的编译器识别机制,如果对应的文件为.c,则调用C编译器,如果该文件或者对应的头文件中包含了cpp对应的头文件,则会导致该头文件也被c编译器解析,进而报错,解决方法是将引用cpp对
2021-03-17 16:39:06
1411
1
原创 move_base存在的问题
局部规划器的搜索空间不完备dwa_local_planner采用的模拟多种单一策略(固定角速度,固定线速度)连续执行一段时间并对轨迹评分,选择最高分的进行评价。减小模拟时间会导致短视,但是延长模拟时间,不仅会导致算力消耗大,还会导致机器人难以通过窄缝(因为轨迹合法性判别会过滤掉所有在模拟时间内会发生碰撞的轨迹)。根本原因是dwa搜索的是小车速度空间的子集,且没有启发性,只是固定策略的搜索。...
2019-11-29 15:02:18
3407
2
原创 source insight4.0代码格式化
一般的做法是推荐使用Astyle,但是从4.0开始,tools菜单里面已经有了。自己设置一下即可。
2019-10-15 14:16:55
1109
2
转载 boost序列化和反序列化QA
1.序列化和反序列化的作用主要用于网络传输,因为类对象无法直接通过网络字节流传输,需要序列化为字节流后传输,再反序列化为类对象。这种感觉有点像科幻中把人粒子化,传输后再还原。序列化也被用于储存状态和还原,比如工作做到一半需要保存现场,后续需要继续做,则可通过序列化保存内存中的数据,也就是工作状态,下次载入即可。2.使用方法头文件和源文件都需要包含BoostArchiver...
2019-07-16 15:46:24
948
原创 配置SAMBA实现windows访问ubuntu
1.ubuntu端安装sambasudo apt install samba2.ubuntu端修改配置文件,重启服务sudo vim /etc/samba/smb.conf//在末尾加上[share] comment=shared folder with passwd path=/home/nvidia public=yes writabl...
2019-05-08 17:21:13
567
原创 Cartographer入坑记(1)环境搭建
谷歌的Cartographer由于其开源社区特性,非常适合SLAM入坑。入坑前注意兼容性,比如ROS使用kinetic,则ubuntu版本建议为16,不要图新鲜升什么ubuntu18。都是血泪教训。可能的话,尽量一台虚拟机做一件事,保持纯净性,避免系统、环境、配置等的互相影响。一个典型的例子是,我之前根据别家教程安装了pcL库,版本为1.9,后续按谷歌教程装cartographer时,由于...
2019-02-25 15:07:25
1742
原创 SmartConfig心得总结
1.一定要了解802.11帧格式的原理,了解各ADDR字段的含义2.编码长度是相对值,获取同步头的过程中需要计算编码基准长度2.数据一定要顺序解耦,即任何一个数据的解析不能依赖于它与其他数据的相对顺序,一个较好的方式是使用多个组播地址,对配网包的各字节数据进行分离3.同步头和数据部分的比例要合适,因为配网分为两个阶段即数据源定位和配网数据获取,比例失调会导致某一个阶段时间过长4.信...
2019-01-18 12:21:07
811
原创 VM虚拟机文件更新的bug
VM14上装了一个虚拟机,然后打开一个文件夹,运行shell,此时删除该文件夹(丢到回收站),然后从PC上复制一个新的同名文件夹进来。由于我是将虚拟机硬盘挂为win10的网络磁盘,此时PC上的SI4里面代码会提示说文件已经换了。点击确认,可以正常编辑代码。但是此时bug出现了,我们做的任何修改不会影响到shell。因为shell里面还是之前被我们删除的文件!简单说,如果我们在之前打开的shel...
2018-12-23 16:41:40
552
转载 watchdog之喂狗分析
当时遇到的一个问题是,某次修改代码后编译烧写时,出现了一个逐项选择的菜单,就随便选了下,结果后续运行程序时,每过一段时间就会自动重启ESP8266模块,最开始以为是硬件坏了,然后就拿了块新板子,发现还是会崩。拿之前的旧程序,仍然崩溃。至此,已经基本排除了程序代码问题和硬件问题,肯定是配置问题。注意到官方的sniffer进程可以正常跑。然后对自己的程序进行线程的排查,发现只有开启了一个使用tim...
2018-12-23 13:52:31
2772
1
原创 空气堡emo应用无法连接PM2.5检测仪设备的原因和解决办法
直接上结论,空气堡的应用很久没有更新过了,疑似使用了常驻后台的方法发送探测请求以唤醒检测仪设备,但安卓的新版本对常驻后台进行了限制,导致无法正常发送请求,进而不会唤醒设备。解决办法:回退手机的系统版本,如线刷等,到2017年的版本如MIUI7。...
2018-11-30 17:59:37
1741
1
原创 赋值语句的返回值
最近写代码遇到的一个bug是因为在判断语句中错误使用赋值语句导致的。else if (XXX&& (m = 0))YYY结果下面的YYY语句未得到执行。原因是将语法记错了。C中的赋值语句的返回值是所赋的值以允许连续赋值语句,Linux的shell中的赋值语句返回值恒为true。 ...
2018-11-28 17:44:15
1837
原创 配网过程中的信道兼容问题
公司的产品,之前的配置只能在1~11信道上工作,对于12/13信道,配网包有概率收不到。有时候会出现收到了配网包但是无法连接至网络的情况,影响用户体验。检查配网脚本,发现对12/13信道做了特殊处理,即若收到的配网包中的ssid在1~11信道上不存在的话,就手动设置为13信道并重启wifi,等待5秒,查找目标ssid。但根本问题在于,进入配网模式时,系统配置决定了只在1~11信道监听,收到...
2018-11-22 16:06:58
610
原创 函数返回值的设置问题
今天遇到一个问题,是手机端发送控制指令,快速来回修改设备参数,app显示失败。原因是设备端收到app消息后,回调函数调用set函数进行值的修改,成功返回0失败返回1,并调用另一个函数,将结果发送给app。但是set函数内部,有针对变更的判定,即只有状态量发生了改变,才会返回0。这里的定义有问题,因为get,set这类函数,要足够纯粹,执行成功就返回0,不应该把是否变更这种内容带入返回值中。...
2018-11-01 15:26:11
1277
原创 关于散列储存
散列的基本思想是在空间和时间上取得一个平衡,尤其适用于key稀疏的情形。用户可以用O(1)的时间查找到需要的条目,同时数据储存占用的空间不至于太大。特别的,当可能的key有n1种时,储存空间为n2(n2<n1且为质数),实际放进去的元素数目为m,则空间利用率为m/n2。散列储存的数据较多时,不同key的元素可能会占据相同位置,一般的做法是进行偏移,这就意味着用户确认是否存在某...
2018-10-11 17:34:12
2015
原创 windows下搭建python环境笔记
因为cpu跑数据太慢,考虑用gpu,公司有台Tesla P100的服务器,也是很棒。过程中遇到很多坑,最终总结步骤如下:1.安装anaconda32.安装pycharm专业版,激活方法自搜,一般用激活码3.进入pycharm建立工程,编写自己的python脚本,并在settings中设置工程的python解释器,建议用虚拟解释器,模板可以用anaconda3的,这样不会影响Wind...
2018-09-04 00:34:01
229
原创 TCP连接结束需要四次握手的一种理解
简单理解就是,TCP连接是双向的,一个连接的关闭可以理解为两个单向连接的关闭。那么一个A到B的单向连接的关闭需要几次来回呢?典型做法是三次。1.A发FIN到B(告知B自己话说完了)2.B回ACK到A(告知A自己收到了)3.A发ACK到B(告知B收到2了)另一个办法是用超时代替第三次通信:通过前两步,已经说明AB间双向通畅,第二步B发送信息后,B等待一段时间,若未收到A的...
2018-09-03 16:44:58
449
转载 ubuntu虚拟机NAT下设置静态IP以及更新dns
先说设置静态IP大致就是在VM-虚拟网络编辑器里面看下自己的NAT网关和ip子网掩码之类的,记下来:在ubuntu中,点击右上连接图标,编辑连接,对应设置好:注意这里设置dns似乎没用,看最后一步即可。再说换源https://www.cnblogs.com/zlslch/p/6860229.html最后说dns设置https://blog.csdn.net/gu...
2018-08-28 17:49:19
1241
转载 正则表达式匹配IPV4地址
给出两个版本:版本1【js】:^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$缺点在于没有识别首位的0版本2【C】:^([0-9]|[1-9][0-9]|1...
2018-08-28 10:51:13
1566
原创 mousewihoutborder连接不上
今天发现笔记本和台式的mousewithoutborder连不上,经检查是版本不一致。2.1.6版本会为每个局域网生成一个安全码,这意味着攻击者只要控制了局域网内的任何一台电脑,再知道你设置的电脑名,就可以通过mousewithoutborder连接,这种做法是不安全的;2.1.8版本则不然,局域网内生成的安全码可能不同,同时该安全码可以手动更新,经过测试,不同电脑生成的新安全码是不同的(...
2018-08-27 11:17:56
6533
转载 ubuntu下pycharm设置中文方法
大步骤分为三步,即:1.下载中文语言包并放到pycharm的lib下,资源包见最后可以用whereis pycharm查看位置whereis pycharm我的是在/usr/lib/pycharm,放到该目录的子目录下即可sudo cp ~/Downloads/resources_cn.jar /usr/lib/pycharm/lib/启动pycharm,此时已经有部分...
2018-08-25 21:07:43
21954
2
原创 win10蓝牙鼠标不稳定解决办法
做了几个操作,现在分不清哪个是主要的了,大家照做一遍就好:1.确保蓝牙驱动程序是官方版本;2.在桌面左下角的win图标上右键,打开设备管理器,找到蓝牙,选择自己的蓝牙模块(不是鼠标!),比如我的是“英特尔(R)Buletooth(R)”,右键属性-电源管理,把允许计算机关闭此设备以节约电源的勾去掉,点击确定;3.win上右键,计算机管理-服务和应用程序-服务,找到Bluetooth H...
2018-08-24 17:40:22
52586
5
原创 类定义中class+宏+类名的意义
看zoom的win_sdk时,看到很多类在定义时,class和类名中间有一个DUILIB_API,形如: class DUILIB_API CWindowWnd好奇之后查资料,发现DUILIB_API被展开为:#ifdef UILIB_STATIC# define DUILIB_API #else# if defined(UILIB_EXPORTS)# if defined...
2018-08-23 15:30:22
10391
原创 Mousewithoutborder经常连不上
MouseWithoutBorder算是一款很好用的工具,可以用一套键鼠控制多台电脑,但是有时候出现工作会不稳定,解析局域网中的计算机名失败。这时,就可以用IP Mappings选项,将所有需要控制的电脑和对应的IP按指定格式加入到表中,再回到主界面点击apply即可。 ...
2018-08-14 11:03:47
6667
原创 自动变量堆栈
《C++Primer Plus》第9章中提到,函数中正常声明的变量都会进入自动变量堆栈。让我困惑的是两点:1.是每个函数都有一个自己的堆栈还是所有函数共用一个大堆栈;2.早期的C语言要求,函数声明都必须在最前面,否则可能出错,是否和此有关(即函数A最前面的声明构成堆栈后,A内部调用到的函数B紧贴A堆栈又构建了一个堆栈,如果此时再在A中声明变量,将导致堆栈溢出) 实验方案如下:...
2018-08-13 10:37:40
471
原创 openwrt全过程
整体过程可以分为环境准备,安装软件源,编译配置,编译四部分:一.环境准备这部分主要是安装一些openwrt配置和编译中需要使用到的包,注意不要用root用户!官网传送门1. 请使用一个非root用户来完成这些工作!2. 这里的所有命令都在OpenWrt编译系统的根目录下运行(例如~/openwrt/trunk/)3. 编译系统的绝对路径中不能含有空格!4. 如果你使用root...
2018-08-09 16:03:41
1338
原创 工作日志2018.8.7
1.mkdir -p 的作用在于可以一次性创建多级目录,例如:需要创建目录A和其子目录B,没有用-p的情况下,mkdir 需要逐个创建目录mkdir Amkdir A/B如果用-p 可以直接创建2个目录(如果父目录A不存在就创建):mkdir -p A/B 2.关于openwrt的编译,package下面是各个软件包,包目录下的makefile是给menuconfig看...
2018-08-07 10:56:18
235
转载 awk简介
awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息awk处理过程: 依次对每一行进行处理,然后输出awk命令形式:awk [-F|-f|-v] ‘BEGIN{} //{command1; command2} END{}’ file [-F|-f|-v] 大参数,-F指定分隔符,-f调用脚本,-v定义变量 var=...
2018-08-03 16:29:31
225
转载 shell中各种括号用法
一.小括号表示整体,里面可以包含逻辑grep -E "^(s|S)" /etc/init.d/functions #以s或S开头的行grep -E "^(root|laowang)\>" /etc/passwd|cut -d : -f7 #查看用户名是root或laowang的shellgrep -E "(root)+" /etc/passwd #至少包含一个root的行后项...
2018-08-03 15:46:15
1353
原创 ubuntu下将自定义脚本变为可全局运行的方法
一种办法是是把脚本所在目录加到环境变量中,另一种方法是把脚本放到现有环境变量对应目录中。这里用的是第二种办法:首先将脚本文件移动到/bin目录下,起好辨识度高的名字,不能与系统现有的程序/脚本冲突sudo mv /XXX/XXX.sh /bin/YYY.sh然后加上运行权限sudo chmod 755 /bin/YYY.sh之后就可以在shell里任意目录下运行该脚本了。...
2018-08-03 10:54:07
4391
转载 centos7搭建rtsp服务器全过程
首先参考这篇:https://blog.csdn.net/zhouzhiwengang/article/details/51541583一、关闭iptables和SELINUX:# chkconfig iptables off# vi /etc/sysconfig/selinux(把enforcing修改为disabled,然后重启系统)二、安装依赖组件:yum -y install gcc gc...
2018-07-03 10:33:11
3727
原创 IPV4地址合法性判别(2)
1.测例.1.1.111//测试开头为点的情况.1.1.1//长度不够+开头为点1.1.1.//结尾为点+长度不够11.11.11.//结尾为点11..11.1//中间存在连续点..111.111//开始存在连续点111.111..//结尾存在连续点1.11111.11111.1111//数值不合法,长度不合法1.257.1.1//数值不合法122.524.13.1//数值不合法...
2018-06-19 18:31:07
1797
原创 Linux下读取键盘输入【不回显,无root权限,非阻塞】
重点如下:1.不需要管理员权限读取/dev/input/event1需要root权限,改用读取/dev/tty的方法要说明的是/dev/tty不是一个真实的终端,而是一个软链接,对应到当前shell的tty。2.不回显(通过设置~ECHO)3.非阻塞(不需要回车,设置O_NONBLOCK)代码如下:#include <stdio.h>#include <stdlib.h>...
2018-06-05 16:39:39
4482
原创 chrome始终显示版本过旧,无法自动更新,官网在线升级包失败的解决办法
打开官网,修改网址为:https://www.google.cn/chrome/?standalone=1&platform=win64(电脑是64位,后面数字是64。是32位,后面是32位)点击下载离线安装包,关闭chrome浏览器(包括后台),运行离线安装包即可。...
2018-06-04 15:46:08
43744
10
原创 ubuntu16启用daytime服务
1.安装xinted先用cat /etc/services | grep "daytime"看一下是否有daytime服务,如果没有的话需要安装xinted因为daytime服务包含在xinetd服务中。直接输入命令:sudo apt-get install xinetd2.修改配置文件修改xinetd配置文件sudo gedit /etc/inetd.conf将daytime一行前面的注释符号#...
2018-05-29 16:25:46
1332
原创 socket通信基础笔记
socket具有不对称特性,服务端和客户端不同socket_un用于进程间通信socket_in用于网络通信socket的相关概念套接字描述符socket_fd——一个整数,由系统分配,和文件描述符类似,只在进程内有效套接字属性——包括域(网络介质),类型(通信方式)和协议(传输机制)三个部分,使用socket函数创建套接字描述符时会用到套接字地址socket_addr——结构体,如sockadd...
2018-05-25 17:58:48
364
原创 编译他人创建工程文件时的注意事项
编译工程(如单片机)前务必检查选项,确认输出文件的对应位置,或者检查编译文件的时间戳。遇到的问题是,拿到了第三方的单片机工程,每次编译现象都相同,而且异常,经检查发现,其工作原理如下:工程文件夹A下面有一个存HEX文件的文件夹A1,编译时会先生成HEX文件,再生成BIN文件。关键在于,编译选项中将生成的HEX文件重定向到了目录B,但是编译选项中生成BIN文件时引用的源文件却是A1中的,这就导致生成...
2018-05-14 16:01:20
214
原创 IPV4地址合法性判别(1)
检查代码时发现有一个IP地址合法性检查的函数存在一些bug,先贴代码:static int is_valid_ip(const char *ip) { int section = 0; int dot = 0; int last = -1; while (*ip) //因为\0的ASCII码是0 { if (*ip == '.') {//检测到.则对之前的section进行检验 ...
2018-05-10 11:07:23
5269
原创 SourceInSight无法访问网络驱动器的解决方案
将虚拟机目录映射到windows主机中的Z盘,但是SI4使用中,试图添加Z盘中文件时出错,而文件管理器中可以正常访问,将Z:\修改为对应的网络目录后可以访问(我的是\\192.168.174.128\share),猜想可能是因为使用了管理员权限运行SI4导致windows不再对地址进行二次解析,取消管理员权限后,果然恢复正常。...
2018-05-08 17:13:34
6446
9
原创 VM虚拟机经常需要重置网络编辑器以启用NAT的解决办法
开机启动项里有几个vmware的服务程序不能禁掉,win10为例,在window的计算机上右键,管理--服务--开启VMware NAT Service服务,设置为延时启动即可。
2018-05-08 14:27:58
5387
1
原创 source insight打不开解决办法
最近突然就打不开SI4了,网上有很多方法比如管理员、注册表之类的都没有用甚至找不到。最后解决办法是先卸载并清空文档中的对应文件,然后重装,注意选择路径时不要使用默认路径Program(x86),放在C盘根目录下即可。原因是安装UTF8插件时引入的新文件导致异常无法启动,而SI本身没有删除这些文件的权限,导致卸载不彻底,重新安装无效。...
2018-05-08 14:11:39
4019
2
每个程序员都应该了解的内存知识【chp1-chpt4】.pdf
2019-06-06
LIVE555工程及源码(VS2012,高版本兼容)
2018-07-03
madplay相关库及一键安装
2018-03-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人