SLAM部分
线性方程Ax = b 如何求解,A,b分别有什么要求?
答:如果增广矩阵【A , b】的秩小于A的秩,无解;如果两者相同,有解。具体求法是找到b在A组成的向量空间的线性组合解。针对方阵情况,可以采用求逆;其它有解情况可以采用SVD分解方法。
一维高斯分布和多维高斯分布是什么?
答:一维高斯分布就是正态分布,它的分布函数是:f(x) = 1/{sigma*(sqrt(2*pi))} * exp {-(x-miu)^2/(2*sigma^2)}。多维正态分布是指有N个随机变量都服从正态分布,那个多维变量的分布函数是:1/(2*pi)^(D/2) * 1/()^(1/2) * exp {-1/2 * (x - x^)T * * (x - x^)},其中D表示多维随机向量的维度,表示协方差矩阵,x^表示所有随机向量的均值向量。
C++中的类是什么,STL是什么?
答:类是指现实中的抽象,是程的一种组织结构,STL是指c++的标准模板库,分别被组织成13个头文件当中,是C++多年的杰作。
C++11标准是什么?
答:C++11标准是C++标准的第二次升级,增加了很多现代编程语言的特性,比如:自动类型推导、智能指针、lambda表达式。
Linux是什么,Linux的目录结构是什么,它的基本命令有?
答:Linux是一种底层操作系统,它的目录结构是:/bin:存放最常使用的命令;/boot:存放启动Linux的核心文件;/dev:存放linux的外部设备,访问设备和访问文件的方法是相同的。/etc:用来存放所有系统管理所需要的配置文件和子目录。/home用户目录。/lib:存放系统中最基本的动态链接共享库,类似于windows中的DLL。/lost+found:系统非法关机后,存放一些文件。/media:系统自动识别一些设备,然后把识别的设备挂载到这个目录下。/opt:给主机额外安装软件所摆放的目录,比如安装ORACLE数据库就可以放到这个目录下。/proc:当前内核运行状态的一系列特殊文件,这是一个虚拟的目录,是系统内存的映射,可以直接访问这个目录来获取系统信息。/root:系统管理员,超级权限者的用户主目录。/sbin:存放系统管理员使用的系统管理程序。/selinux:Redhat/CentOs所特有的目录,Selinux是一种类似于window防火墙的机制。/srv:存放服务启动之后提取的数据。/sys:安装了Linux2.6版本内核中新出现的一个文件系统sysfs。/tmp:是指这个目录用来存放一些临时文件的。/usr:用户应用程序和文件存放在这个目录下,类似于window中的program files。/usr/bin:用户使用的应用程序。/usr/sbin:超级用户用的比较高级的管理程序和系统守护程序。/usr/src内核源码默认的放置目录。/var:这个目录存放不断扩充着的东西,比如日志文件。/run:这是一个临时文件系统,存储系统启动以来的信息,
/etc文件不要误删或者随意更改,会导致系统不能启动。/bin,/sbin, /usr/bin, /usr/sbin:系统预设的执行文件放置目录。/var:程序的运行日志在这里,mail的预设也在这里。
Vim如何使用:
答:vim有三种工作模式:命令模式、输入模式、底线命令模式。启动vim后,进入命令模式,按i\a\o可以进入输入模式。按x可以删除当前光标所在处的字符。
输入模式的常用操作是:和window系统下是基本一个的。
底线命令模式的操作是这样的,q退出程序。w保存文件。wq:保存并退出。按esc返回到命令模式。
命令模式下移动光标的方法,kjhl,对应上下左右。ctrl+f/b/d/u分别对应上下翻页/翻半页。+:光标移动到非空格符下一行。-:光标移动到非空格符上一行。n<space>表示光标会移动这一个向后面移动20个字符距离。0:相当于home键盘。$:相当于end字符;H:光标移到当前屏幕最上方第一行头部;M:光标移动到屏幕中央那一行第一个字符。L:光标移动到当前屏幕最下一行最后一个字符。G:移动到文档的最后一行。gg:移动到文档的第一行。n<enter>光标向下移动n行。
:1,$s/word/WORD/g搜索第一行到最后一行,把word替换为WORD。
:1,$s/WORD/word/gc,取代前确认。%可以指代全文。
删除、复制、粘贴:
xX在一行字当中,x为向后删除一个字符,X为向前删除一个字符。nx为向后删n个字符。dd用来删游标所在的那一行。ndd删除光标所在的向下n行。d1G删除光标所在到第一行所有数据,dG删除光标所在到最后一个所有数据。d$删除光标所在到当前行最后一个字符。d0:删除光标到光前行第一个字符所有内容。yy复制游标所在那一行。y1G复制游标所在行到第一行的所有数据。yG复制游标所在行到最后一行的所有数据。y0:复制光标所在位置到行首所有数据。y$:复制光标所在位置到行尾所有数据。p:把已经复制的数据在下一行贴上,P:把已经复制的数据贴在游标的上一行。J:把光标所在行与下一行合并成一行。c:重复删除多个数据。.这个小数点可以重复多个动作。
i,I小写表示从当前光标处输入,I为从目前所在行第一个非空格处输入。
aA,表示从当前字符下一个字符输入,A为光标所在行最后一个字符开始。
oO,小写从光标所在的下一行输入新的一行,O目前光标所在行的上一行输入新的一行。
rR,r只会取代光标所在行的那一个字符。R会一直取代光标所在的文字。直到按下esc.
最下方命令行模式:
:w将编辑在数据写入硬盘档案。
:w!若文件属性可读,强制写入档案
:q离开vim;
:q!强制离开不保存。
:wq存储后离开,wq!为强制存储后离开。
ZZ:保存文件然后退出
ZQ:不保存,强制退出。效果等同型号地:q!。
:w【filename】把编辑的数据写成另一个新档案。
:r【filename】把编辑的数据读入另一个文件的后面 。
:n1,n2 w[filename]把n1,n2行的内容存储成filename这个档案。
:!command离开vi到指令行模式下执行command的显示结果。
:set nu,显示行号
:set nonu 取消行号。
搜素替换:/word搜索匹配word这个字符串。?word; 搜索到第一个字符之后,对于/word和?word按下n表示需要向下或者向上搜索字符。按下N表示需要向上或者是向下搜索。
超定矩阵是什么概念?
协方差矩阵是什么概念,可以形象化地展示吗?
ROS部分
《ROS robotics by example》
chapter2 制作第一个两轮机器人。
学习目标:
1、安装rviz并使用。
2、制作ROSpackage
3、增量地方法创建一个URDF文件并在rviz中可视化地去使用它。
4、使用ROS工具来验证URDF文件。
5、安装GAZEBO,并使用。
6、在gazebo中控制机器人。
介绍rviz
在安装rviz的时候,出现you have held broken packages的报错由于中途打断了下载,并且更换了源。解决方法是:sudo apt-get update.否则下载不了。
roscore
rosrun rviz rviz进入rviz的界面。
今天误删了~/.bashrc。如何恢复
cp /etc/skel/.bashrc ~/
并把.bashrc放到一个目录下面,防止以后误作。
ubuntu操作的提示方法
mkdir --help
ROS如何创建工作环境
1、mkdir catkin_ws 2、mkdir catkin_ws/src 3、cd catkin_ws/src 4, catkin_init_workspace 5, cd ~/catkin_ws 6, catkin_make 7, 在~/.bashrc 最后一行添加“source ~/catkin_ws/devel/setup.bash”
创建并运行一个ROS,package.
创建ROSpackage的命令:
catkin_create_pkg <package name> [depend1] [depend2].
[depend]指的是依赖的软件包。
catkin_create_pkg ros_robotics
生成包:
catkin_make
catkin_ws/主工作环境,build空间;devel空间;src空间,源代码空间;CMakeLists.txt。
建造一个差速驱动的机器人URDF
在这一部分,遇到一个bug,说是Error:cannot launch node of type [robot_state_publisher/state_publisher]
在使用roslaunch 运行时,参数赋值时用model:=ddrobot.urdf;注意=后面不可有空格,否则会说没有对model赋值。
gazebo