自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ROS保存文件路径

在ros节点中添加导出数据的代码,如果不指定绝对路径,仅仅写了文件名,例如:ofstream outfile;outfile.open("data.txt");outfile.close();那么数据保存的位置跟节点的启动方式有关系。如果是通过rosrun启动的,那么数据会保存在启动该节点的路径下。如果是通过roslaunch启动的,那么数据会保存在~/.ros中,这是一个隐藏文件。...

2020-12-22 18:08:32 4263 1

原创 Realsense D435i使用笔记

文章目录本机情况基本要求步骤测试是否安装成功说明参考本机情况系统版本:ubuntu 16.04内核版本:4.15.0-91-generic基本要求librealsense2-dkms支持的ubuntu内核版本为:4.4, 4.8, 4.10, 4.13, 4.15, 4.18* 5.0* and 5.3*查看内核版本uname -r步骤注册服务器公钥sudo apt-key adv --keyserver keys.gnupg.net --recv-key F6E65AC

2020-11-19 14:34:48 11917 1

原创 ROS常用官方文档记录

在CMakeLists.txt中写好对ROS的依赖catkin/CMakeLists.txtROS消息的分类common_msgsgeometry_msgs分类下的消息geometry_msgs Msg/Srv DocumentationROS消息滤波器message_filters使用类成员函数作为回调函数

2020-11-17 10:41:49 316

原创 [rosrun] Couldn‘t find executable named xxx

现象使用rosrun运行程序时,发现无法找到可执行文件,提示信息为:[rosrun] Couldn't find executable named xxx原因CMakeLists.txt文件中漏写了以下语句:catkin_package()ROS关于CMakeLists.txt的文档catkin/CMakeLists.txt 中提到:This function must be called before declaring any targets with add_library() o

2020-11-16 14:14:49 5082 2

原创 ImportError: No module named `defusedxml`

文章目录触发原因解决参考触发该错误在通过roscore启动ros主节点时出现:ImportError No module named `defusedxml`又或者在使用rosbag时出现:ImportError: No module named 'rospkg'原因ROS依赖于python2,linux并且通过路径/usr/bin/python来指定默认的python版本,一旦该路径没有被设置,或者被设置为python3,就会出现以上错误。ubuntu16安装了python2和pyth

2020-11-14 00:34:09 2879 2

原创 turtlebot2笔记(更新中)

文章目录1. 启动turtlebot22. turtlebot2的话题3. turtlebot2运动控制3.1 键盘控制运动3.2 代码控制运动4. turtlebot2数据读取4.1 里程计数据4.2 IMU数据参考1. 启动turtlebot2roslaunch turtlebot_bringup minimal.launch --screen参数--screen可以将启动过程的详细信息输出到终端,可以不加。2. turtlebot2的话题启动turtlebot2后查询话题rostopic

2020-11-01 19:13:39 3401 2

原创 ROS tf基础教程(1)

文章目录目标功能工程文件框架乌龟仿真节点和键盘控制节点tf广播节点tf监听节点目标功能在tf教程中,我们需要创建四种节点,分别是键盘控制节点teleop、乌龟仿真节点turtlesim、tf广播节点tf broadcaster、tf监听节点tf listener。turtlesim启动后会默认生成一只小乌龟“turtle1”,tf listener启动时负责在仿真器中生成另一只小乌龟“turtle2”。teleop发布turtle1/command_velocity话题,turtlesim订阅后

2020-10-29 15:38:58 739

原创 ROS中的坐标系定义

ROS最常用到的三个坐标系是:map、odom、base_link。base_link描述的就是机器人当前时刻的位姿,是移动的坐标系。odom是机器人运动的参考坐标系,是固定不动的(world fixed frame)。坐标系原点设为机器人的运动起始点,那么机器人的位姿是相对于odom来描述的。通过map和odom之间的变换,可以得到机器人相对于世界坐标系的位姿。map是世界坐标系,是固定不动的(world fixed frame)。可以在机器人所在的环境中随意指定一个点作为世界坐标系原点,规定其具体

2020-10-29 11:09:28 2722

原创 ubuntu自定义路径安装OpenCV

opencv版本查看pkg-config --modversion opencv自定义安装路径默认安装时,是在安装包内按如下步骤进行:mkdir buildcd buildcmake ..make -j2sudo make install如果要自定义安装路径,就在cmake命令中修改CMAKE_INSTALL_PREFIX变量:cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/opencv310

2020-10-10 15:29:41 3494 1

原创 map_server地图保存

map_server地图保存roslaunch启动map_server命令行启动map_server根据map_server中roslaunch启动map_server<launch> <node pkg="map_server" type="map_saver" name="map_saver1" args="-f PATH_TO_YOUR_FILE/mymap" ou...

2019-06-26 21:03:23 7539 2

原创 使用octomap_server将点云地图转化为八叉树地图和占据栅格地图

使用octomap_server创建八叉树地图和栅格地图说明问题1:点云与网格垂直问题2:八叉树显示不完整问题3:地面滤除说明Octomap 在ROS环境下实时显示、Lego_loam使用教程两篇博文对如何从PCD创建PointCloud2点云、如何用octomap_server创建八叉树地图和栅格地图已经说的很详细了,但是我在使用时还是遇到了一些问题。问题1:点云与网格垂直我用深度相机得...

2019-06-26 16:27:00 16371 16

原创 C++学习笔记之this指针

假设有这样一个类 //类声明class Data{string getName() const { return name;}string name;};//类的实例化Data var; string str=var.getName();上面发生了什么? 通过类Data的对象var调用它的成员函数getName(),函数内部又返回了var的数据成员name,实...

2018-08-10 21:20:56 155

原创 仿函数(functor)

仿函数本质是类而非函数,它内部对()操作符进行重载,使类的功能看起来更像是一个函数,下面的链接清晰地阐述了仿函数的作用: c++仿函数 functor

2018-08-10 20:21:42 593

原创 SLAM学习笔记——BOW

基本思路使用聚类算法对数据集图像的特征点描述子进行分类,得到类别a1、a2、a3……,称这些类别为“word”,不分顺序,故为“bag”,而非“list”。将新图像的特征点描述子与数据集进行匹配,看它含有多少个word,并且对这些word加权重,得到一个包含多个word及对应权重的向量v。对比不同图像的词向量v,利用相似度评价方法,确定两个图像的相似程度。简言之,分类-匹配-比较词袋的构建和

2018-03-30 11:34:36 698

原创 C++学习笔记之explicit关键字

explicit关键字的作用是用来修饰类的构造函数,表明该构造函数是显式的,禁止单参数构造函数的隐式转换。假如没有explicit:class myclassA;class myclassB{ myclassB(myclassA& para1, int &para2);};myclassA obj1;myclassB obj2;obj2=obj1; 实

2018-01-27 20:13:16 181

原创 C++学习笔记之基本IO类

理清IO的基本概念iostream是一个标准库,提供IO机制。iostream库包含两个类:istream和ostream,分别表示输入流和输出流。一个“流”就是一串长短不定的字符序列,从IO设备读出或写入IO设备,它表达的是随时间推移,字符顺序生成或消耗。cin是istream的一个对象,cout、cerr、clog是ostream的三个对象。cin(也称标准输入,standard input)

2018-01-19 15:05:56 174

原创 C++学习笔记之shared_ptr指针

智能指针有两种:shared_ptr和unique_ptr,所谓“智能”,是说它们负责自动释放所指向的对象。两种智能指针的主要区别:shared_ptr允许多个指针指向同一个对象,而unique_ptr独占一个对象。(标准库还定义了一个weak_ptr的伴随类,指向shared_ptr所管理的对象)shared_ptr实际上是个类模板,需要提供模板实参使之成为一个类。默认初始化的智能指针保存着一个

2018-01-18 21:00:09 198

原创 C++学习笔记之内存分配

几个内存概念静态内存(staitc memory):保存局部static对象、类static数据成员、定义在任何函数之外的变量栈内存(stack):保存定义在函数内的非static对象自由空间(free store)或称堆内存(heap):存储动态分配(即程序运行时分配)的对象对象分配及销毁原则1. 分配在静态内存和栈内存的对象由编译器自动创建和销毁。2. 对于栈对象,仅在定义它的程序块运行时才存

2018-01-18 19:06:31 119

原创 C++学习笔记之显示类型转换

隐式转换是编译器替我们完成的:double a=3.14;int val=a; //val的值为3显示转换或称强制类型转换,是我们告诉编译器:你别管我,我就是要这么转换。格式为:cast-name(expression)cast-name有这四种:static_cast、dynamic_cast、const_cast、reinterpret_caststatic_cast任何具有明确定义的类

2018-01-18 16:19:04 233

原创 C++学习笔记之auto类型说明符

把表达式的值赋给一个变量,要求在声明变量的时候清楚地知道表达式的类型,举个例子:int a=1,b=2;int c=a+b;//因为我们知道a+b是整型,所以我们把c也声明为整型auto是一种类型,和int、double等等类似,但它是一种“随机应变”的类型。C++11标准引入auto类型说明符,使编译器通过变量的初始值来推断变量类型,从而替我们分析表达式所属类型:int a=1,b=2;au

2018-01-17 21:54:07 866

原创 C++学习笔记之顶层const和底层const

顶层const:表示变量本身是个常量,对任何数据类型适用,如算数类型(int、double),类,指针底层const:表示指向的变量是个常量,用于指针和引用指针类型既可以是顶层const,也可以是底层constint a=0;//顶层constint *const p1=&a;const int var=0;//底层constconst int *p2=&var;const int

2018-01-17 20:05:55 480

原创 C++学习笔记之默认实参

默认实参的例子//所有形参有默认值int fun(int a=1,int b=2,int c=3){ return a+b+c;}//部分形参有默认值int fun(int a,int b=2,int c=3){ return a+b+c;}可以所有函数形参都赋予默认值,也可以只部分赋予,但是,一旦某个形参被赋予了默认值,它后面的所有形参都必须有默

2018-01-17 16:22:01 317

原创 C++学习笔记之指针和const

指针本身是一个变量,本质上是一个存放其他变量的地址的变量。与const有关的指针可以分为3种:指向常量的指针常量指针指向常量的常量指针指向常量的指针指针本身的值(地址)可以修改(比如赋予新的地址,使之指向另一个变量),但指向的常量的值不能修改。const int a=1;int *ptr=&a;*ptr=2;//错误,指向的变量是个常量,不能修改

2018-01-16 20:27:35 124

原创 C++学习笔记之静态成员

静态成员的作用有时候一些成员不是打算由类的各个对象(类的实例)来各自维护,而是与类本身直接相关联例:一个银行账户类,可以实例化出很多个对象(很多客户)A,B,C……,但是像利率这种信息,是对大家一样同时又是不断变动的,静态成员的作用就体现出来了:大家共享一个可变信息声明静态成员class Account{public: static double rate

2018-01-16 19:14:42 124

原创 C++学习笔记之类类型

类的定义两个类即使成员完全相同,但名字不同,不属于同一个类class A{int a;void fun();};class B{int a;void fun();};A obj1;B obj2 = obj1;//error,obj1和obj2类型不同类的声明class A;前向声明:对一个类只声明不定义不完全类型:一个类在声明之后定义之

2018-01-16 16:56:44 155

原创 C++学习笔记之友元

类可以允许其他类或者函数访问它的非公有成员,方法是令其他类或者函数成为它的友元(friend)令其他类为友元class A{friend B; private: int a;};类B能访问类A中的private成员a令其他类的成员函数为友元class A{friend B:fun1(); private: int a;};

2018-01-16 15:24:55 209

空空如也

空空如也

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

TA关注的人

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