| by msbeta | No comments

如何在Ubuntu 18.04中安装Sublime Text 3

Sublime Text是Web和软件开发中最常使用的文本和源代码编辑器。它不仅运行速度快,而且有很多强大的功能。在本教程中,我们将展示如何在Ubuntu 18.04系统中安装Sublime Text 3,这些步骤适用于所有基于Debian的操作系统。

Installing Sublime Text on Ubuntu

步骤一:更新APT Package List,安装相关依赖;

步骤二:导入Repository的GPG key; 

添加Sublime Text的APT repository;

步骤三: 更新apt源,安装Sublime Text 3[……]

继续阅读

Read More
| by msbeta | No comments

python的lambda匿名函数的变量绑定问题

lambda的匿名函数定义简单函数非常方便。但是在实际应用中因为变量的绑定原因,总是出现一系列莫名奇妙的问题。考虑下面的代码:

现在a(10)和b(10)的结果应该是多少呢?如果你的答案也是20和30,说明对lambda的理解同样不够深刻。

这里的问题在于x是一个自由变量,在运行时候才进行绑定,而不是在定义时候绑定。如果希望匿名函数可以在定义时候绑定变量,并且保持值不变,可以将改之作为默认参数实现。

[……]

继续阅读

Read More
| by msbeta | No comments

python中如何定义带有默认参数的函数

直观的,带有默认参数的python函数非常简单:

1) 在定义中为参数赋值;

2) 带默认值的参数出现在函数的最后;

3) 如果默认值是可变容器(如列表、集合、字典等);

如下代码所示:

注意:

1、默认参数的绑定发生在函数定义的时候。

2、赋给默认参数的值应该为不可变对象。如None、True、False、数字、或者字符串常量等;

可以看到默认值在函数体之外被修改,导致之后的函数调用对默认值产生持续的影响。

所以函数的参数的默认值的应该为不可变对象。

3、默认参数的None值的处理

上述的代码的问题在于,尽管N[……]

继续阅读

Read More
| by msbeta | No comments

python实现接受任意数量参数的函数

问题:

如何用python编写一个可以接受任意数量参数的函数。

解决方案:

实现Python接受任意个数参数的函数,在形式上比较简单,就是在参数前面加上一个星号(*)即可。

其中nuts是一个元组,它包含了所有传递过来的位置参数

如果要接受任意数量的关键字参数,可以使用**开头的参数。

所有以*号开头的参数,只能作为最后一个位置参数出现,以**开头的参数只能作为最后一个参数出现。以*号打头的参数之后的参数都会被作为关键字参数处理。

Keyword-only参数是一种提高代码可读性的好方法。如下例所示:

如果不了解recv的函数原型,[……]

继续阅读

Read More
| by msbeta | No comments

Python中单引号、双引号和三引号的差异

1.单引号跟双引号表示字符串字面常量,这跟C++中的语法规范是相同的。

单引号和双引号在表示字面常量的时候,二者是完全等价的。

2.当用单引号包起来的字符串里包含双引号的时候, 不需要使用转义符(\); 反之,当用双引号包起来的字符串中包含单引号的时候,也不需要使用转移字符;

3.三引号是python所特有的相对于单引号和双引号,它可以保留内部的所有字符,包括回车换行符等

三引号有两种形式: ”’string content”’或者”””string content”””。

正是由于三引号的这种特性,python中常用三引号做注释。

[……]

继续阅读

Read More
| by msbeta | No comments

Numpy中Array和Matrix的矩阵乘法以及矩阵运算的区别

在Numpy中matrix必须是二维的,array可以是任意多维的,matrix是array的一个分支,拥有array的所有特性。

1、初始化

可以看到,np.asmatrix会将np.array转化成二维数组。np.mat和np.matrix的区别在于,如果输入本身就是一个矩阵,则np.mat不会对该矩阵make a copy,仅仅是创建了一个新的引用,即np.mat相当于np.matrix(data, copy = False)。

2、转置运算

matrix和array都可以在object后加.T得到其转置矩阵。

可以看到,一维数组的转置与自身相同。可[……]

继续阅读

Read More
| by msbeta | No comments

从零开始学习自动驾驶系统(四)-卡尔曼滤波Kalman Filter

Kalman Filter是处理连续变化的动态不确定系统的理想方法,并且由于内存占用小(不需要记录历史状态),运行速度快,被广泛应用在机器人实时多传感器融合系统中。

What can we do with a Kalman filter

首先看一个简单的例子: 假设有一个可以在树林中自由漫步的机器人,这个机器人配备了一个精度为10m的GPS传感器和自身状态的测量设备(轮速记等)。

对于机器人而言,除了能够通过GPS获取位置信息外,它还准确知道自己下达的所有指令,比如向前前进10m,向右前进5m等等。但是由于受到外部环境的影响(风向、地面打滑,测量误差等),机器人自身获得的[……]

继续阅读

Read More
| by msbeta | No comments

从零开始学习自动驾驶系统(二)-State Estimation & Localization

最小二乘法(Least Squares Method)可以在存在测量噪声的情况下,可以最大限度的剥离噪声的影响,求得最优解。

自动驾驶车辆配备了许多的不同的传感器,它们的测量精度各不相同,有的精度高,有的精度低,而高精度设备的测量结果更加值得信任,如何达到这种效果呢。一个直觉的做法,就是赋予高精度的测量更大的权重,同时降低低质量的测量结果的贡献。Weighted Least Square Method可以帮助达到这一目的。

1. Weighted Least Square Method

1.1 线性回归的一般形式:

$$
\begin{aligned}
h_{\th[……]

继续阅读

Read More
| by msbeta | No comments

从零开始学习自动驾驶系统(三)-State Estimation & Localization

前面提到的Ordinary Least Squares Estimation和 Weighted Least Squares Estimation和都假设提前收集好了所有的测量数据。但在实际的应用中,测量数据可能是流式的,比如位置测量系统以100HZ的频率不间断的对车辆的位置进行测量。在高频的更新频率下,测量数据越来越多,如果每次都把所有的测量结果都按照矩阵解进行计算,计算成本会不断增加,直至计算能力不可承受。所以需要用Recursive Least Squares Estimation解决这一问题。

1. Linear Recursive Estimation测量更新方程

我们假[……]

继续阅读

Read More
| by msbeta | No comments

Ubuntu&Mac环境下如何制作U盘系统安装盘

1、Ubuntu环境下制作U盘系统安装盘

1.1 Ubuntu使用dd命令制作U盘系统启动盘

dd命令是比较推荐的一种Linux环境中制作U盘系统安装盘的方式,无需安装额外的工具,基本上所有Linux发行版都集成了这个命令。

U盘启动盘的制作流程:

1) 查看U盘设备号,根据设备的空间大小很容易分辨出来,本机的U盘设备号:”/dev/sdc”;

2)如果U盘被自动挂载,请先将U盘卸载(umount);

3)准备好操作系统iso文件(E.g.,ubuntu-16.04-desktop-amd64.iso,etc),使用dd命令将ISO写入U盘;

[……]

继续阅读

Read More