7 _寒潭雁影

尚未进行身份认证

中科大IT向博士,熟悉MFC,C++,C等语言,参与过ffmpeg、机器视觉、并行计算、数据库等相关项目的研发和代码的编写http://blog.csdn.net/weixinhum为本人博客,上面记录了本人的一些技术总结

等级
TA的排名 2k+

ROS系统学习15---启动多个节点

在设计ROS系统工程的时候我们一般是按照多节点的形式设计的,这样做的好处在于将系统按模块进行了隔离,而坏处主要有两个,一是中间的数据传输是按照网络进行的,延时比较大,这个问题的解决办法比较多,比如内存共享之类的,我们这里不做讨论;二则是启动这些节点比较烦,有时候可能得启动十几个,把人搞崩溃,今天我们就来研究下这个话题。一般给出的办法是用ros launch,个人感觉有点复杂,操作起来不太方便,因此这里介绍另外一种方法。原理就是通过命令行打开多个终端然后运行不同的命令启动节点。创建脚本文件Starup

2020-05-25 17:45:45

ROS系统学习13---界面开发2

ROS系统学习13—界面开发2上一篇文章介绍了如何搭建基于Qt5和librviz的ROS界面框架,这篇文章我们将进一步介绍怎么用这个框架来实现一些常用的GUI显示功能。接收并显示图像消息在ROS中,接收消息一般是用spin()或者spinOnce()两个函数实现的。前者是一个阻塞函数,一运行程序则会等待在该函数处接收消息,后者则在调用之时方能接收到消息。如果写过界面程序的老哥肯定清楚,这种性质的函数是不能写在界面程序中的,否则程序将会处于假死状态。因此在Qt中实现ROS消息的接收需要开辟新的线程来实现

2020-05-24 00:16:47

ROS系统学习14---在Windows上安装和使用ROS

使用ROS一般默认的操作系统是Linux的Ubuntu,其安装的过程也基本无障碍。然而Ubuntu相比Windows的生态还是不太完善,因此在电脑中装双系统然后反复横跳就变得很常见且让人崩溃。最近由于意识到ROS调试起来是在比较方便,而切来切去实在影响心情,于是着手研究Windows上安装ROS的操作,并做了下记录。由于该操作依据得到了官方支持,于是安装的难度也不算大,不过也没Ubuntu那么简单,可以直接参考ROS的Wiki。下面就按照Wiki的步骤一步步操作吧。Windows操作系统要在W

2020-05-21 16:43:33

ROS系统学习13---界面开发1

在ROS系统中,我们可以用RVIZ直接看处理的结果,比较方便。但RVIZ可以展示的信息不够全面,可定制化程度也不高,因此在要求比较高的需求中只能自己开发界面。而开发界面的工具则一般选用QT(似乎有人也使用PYQT来整活,但感觉速度应该跟不太上)。具体操作如下:安装Qt5一般安装完整版的ROS会自带Qt4,如果只想做简单的界面开发,Qt4也完全足够,可能出于这种原因,使用下面两个命令安装带QT界面的ROS包:sudo apt-get install ros-melodic-qt-rossudo apt

2020-05-14 22:30:28

四元数坐标旋转

在处理空间转换时经常会遇到使用四元数进行转换的场景,因此在这里做下记录。本篇博客不讲理论(因为作者也不懂,可能如果学习了会补充),只放出转换公式以及代码。设有三维点坐标为(x0,y0,z0)(x0, y0, z0)(x0,y0,z0),空间旋转后的点坐标为(x1,y1,z1)(x1, y1, z1)(x1,y1,z1),四元数为Q=q0+q1i+q2j+q3kQ=q_{0}+q_{1}i+q_{...

2020-04-17 15:22:34

Word的自动化读写库

之前一直以为Word作为微软的龙头产品,其生态一定极为封闭,因此在文档生成方面一直都使用的Latex。然而使用Word毕竟是大多数人的习惯,要将Latex文档生成应用到与使用者有交互的场景时总遇到不少问题,于是产生了是不是可以用程序读取和生成Word的想法。没想到经过一番搜索和折腾,发现的确有几个非常给力的".NET"库能在用户不装Word的情况下做到这件事。本人详细研究和使用了其中比较有代表性...

2020-03-12 18:39:47

PCL固定视角显示

在使用PCL是经常需要自行调节到某一个视角去看点云的表现,如果是做算法,有时还需要在同一角度去对比不同算法得到的结果,因此获得点云在某一视角下的参数,然后设置其下次启动时位于此视角是非常常见的需求。获得PCL视角参数代码如下:pcl::visualization::Camera camera;viewer->getCameraParameters(camera);printf("%l...

2020-03-04 18:10:29

LaTeX---行距设置

在使用LaTeX写文档的时候经常会遇到行距设置的问题,而如果不知道其运行的机制,经常会写出非常多多余甚至于相互冲突的命令。本篇文章将介绍下如何设置LaTeX的行距,以及LaTeX的行距与Word行距之间的对应关系。在LaTeX中,默认的行距是字体字号的1.2倍,因此其与字号的大小相关。如果要修改全局的默认行距,则在导言区加入“\linespread”命令进行修改即可。比如想要修改成2倍行距,用如...

2020-03-01 16:23:13

LaTeX---字符操作

字符操作字体设置一般情况下如果在LaTeX中用到了中文字体,会使用“ctex”宏包,其提供了几种默认的字体供我们使用,可以用如下方法调用:\documentclass[UTF8]{article}\usepackage{ctex}\begin{document}{\songti \ }\\{\songti 宋体\ }{\kaishu 楷体\ }{\heiti 黑体\ }\\{...

2020-02-29 17:29:11

Word给自动生成的目录页码添加括号

Word给自动生成的目录页码添加括号一些学校的毕业论文格式要求中,要求目录的页码需要加括号如下:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kW5SI4pw-1582034649079)(C:\Users\weixin\AppData\Roaming\Typora\typora-user-images\image-20200218214156664.png)]...

2020-02-18 22:09:07

使用C++调用控制台启动其他程序

在一些场景下,有界面的程序需要去调用控制台执行某些命令,这个时间可以利用ShellExecuteEx这个API来操作。具体如下:SHELLEXECUTEINFO commend;//命令对象memset(&commend, 0, sizeof(SHELLEXECUTEINFO));commend.cbSize = sizeof(SHELLEXECUTEINFO);commend.f...

2020-02-03 17:36:25

控制台默认字符编码问题

之前在制作的程序中需要运行Windows的控制台程序去调用LaTeX的XeLaTeX.exe编译器程序编译tex本文,结果发现编译一直出错,通过错误信息得知是中文字符串的问题。然而奇怪的是相同的文本在TeXworks环境下调用XeLaTeX编译器却完全没有问题,经过艰苦卓绝的研究后发现,原来是Windows的控制台默认字符编码不是UTF-8造成的问题。解决的办法也很简单,就是将默认的字符编码修改...

2020-02-03 17:16:06

C++ 文件复制

void copyFile(CString file1,CString file2){ CFile hFile; int len; hFile.Open(file1, CFile::modeRead | CFile::typeBinary, 0); len = hFile.GetLength(); //分配缓冲区 char* buf; buf = new char[len + 1]...

2020-01-30 20:28:36

Win10与Win7 64位系统的CPU多线程调度差异

最近在做兼容性测试的时候发现一个特别有趣的问题,在Win10上可以完美运行的C++程序在Win7上一运行就挂掉了,代码一模一样!在经过了两天没日没夜的调试后发现,Win10系统与Win7系统的CPU多线程调度存在较大的差异。在Win10中,如果在一个类中运行了一个函数对一个指针开辟对应的内存,而在类中开启线程对其进行调用,是完全没有问题的,即便是开辟内存的函数退出了也无所谓。而在Win7中则不然...

2020-01-17 18:13:47

VS使用预编译头文件

在之前很长一段时间里,本人非常烦VS创建工程时使用的预编译头文件,感觉特别碍事,直到最近用到PCL才发现,这个东西相当有必要。在没有使用预编译头文件的情况下,如果修改包含PCL头的文件,则整个文件将重新编译,而编译一次PCL又实在是要命,因此每次调试都无比蛋疼。但如果将PCL头文件扔在预编译头文件中,则只需要编译一次即可。。...

2020-01-17 18:05:25

C++11并发编程实作

C++11之后加入了并行编程的接口,使用起来非常简单:#include <iostream> #include <thread>void p(){ while (true) { std::cout << "asd" << std::endl; }}void main(){ std::thread p(p); ...

2020-01-17 18:03:25

ROS系统学习番外篇6---以release发行方式编译文件

使用catkin_make对ROS进行编译时,其默认的编译模式是debug,该模式并没有对程序运行速度进行优化,因此代码的运行效率比较低,这并不符合软件在发行时追求快速响应的需求,因此需要将其修改为release版本。操作比较简单,就是在包中的CMakeLists.txt文件中指定其编译成release版本即可,代码如下:SET(CMAKE_BUILD_TYPE "Release")...

2019-12-30 16:24:45

ROS系统学习番外篇5---启动同类型多传感器

在自动驾驶中,为了照顾到多个视角,往往需要将多个传感器部署在车的四周,因此需要做多个传感器的解析和数据传输。那怎么用相同的节点启动多传感器呢?答案就是给启动节点取别名,并传输不同的参数。传输参数之前的文章已经介绍了,这篇文章介绍下给启动节点取别名的操作。如下所示:rosrun rfans32 rFans32RecAndDec __name:=rfans32_1 2018 rafes在节点的...

2019-12-25 10:56:13

ROS系统学习番外篇4---节点参数传递

在ROS的使用中,经常会遇到需要打开同一类型传感器的场景,此时需要通过参数来区分传感器。传输参数的方法有多种,最简单的是通过rosrun命令来传,比如要传一个端口号,可依照下面的方法传入:rosrun rfans32 rFans32RecAndDec 212最后面的“212”为端口好,在程序中判断下即可:if (argv[1]==NULL){ ROS_INFO("Please ...

2019-12-24 16:43:20

ROS系统学习番外篇3---使用C++11标准编程

C++11带入了并发编程接口以及更加精确的计时功能,提升非常大,然而Ubuntu16下的ROS默认使用的是老版本的gcc。要用上较为先进的C++特性,只需要在ROS包对应的CMakeLists中制定编译器版本即可,即加入下面一句代码:set(CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}")...

2019-12-24 14:58:09

查看更多

勋章 我的勋章
  • 阅读者勋章Lv1
    阅读者勋章Lv1
    授予在CSDN APP累计阅读博文达到3天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。
  • 分享宗师
    分享宗师
    成功上传21个资源即可获取