Jack Huang's Blog


  • 首页

  • 标签

  • 归档

  • 搜索

撰写学术论文的思考

发表于 2018-12-17 | 更新于 2019-01-17

迫于学业和工作的压力,撰写了不少的学术论文。但是并没有对如何撰写学术论文进行思考。看到清华大学的肖寒
博士在某个问题下的回答后,感觉茅塞顿开:

不过,一般注水的作者相对而言都是新手,因为比较有经验的研究者都知道:“论文的一切都在于贡献,不在于结果”

你的结果只是一个说明你贡献的例证,多那么点少那么点,大家看了毫无区别。你注水除了恶心我们这些后来实验的人,就没什么别的用处了。有那些疯狂调参和使劲弄技巧的时间,真不如拿来整理好你自己的思路,把论文的论述过程做到有理有据!因为 80.2 和 80.3 正常人都没法记住其间区别,但你循循善诱的精致论述会让所有人印象深刻。我希望新手不要本末倒置!

论文重在贡献,迫于学业和工作的压力造的注水论文实在无趣!

参考链接

  1. 看图说话的AI小朋友——图像标注趣谈(下), by 杜客.
  2. 从标题到写作流程:写好一篇论文的十条基本原则,by 机器之心.

node-gyp使用帮助

发表于 2018-12-16 | 更新于 2019-09-26

node-gyp是为了编译nodejs addon模块而构建的跨平台命令行工具。nodejs addon模块使用c++语言编写,在源代码级别进行分发,通过node-gyp实现跨平台的编译安装。

背景知识

node-gyp源于gyp。gyp是一个用来生成项目文件的工具,刚开始设计给chromium项目使用的。它可以从平台无关的配置生成平台相关的Visual Studio、Xcode、Makefile的项目文件,然后调用 vsbuild、xcode、gcc等编译平台来编译。这就不需要花额外的时间处理每个平台不同的项目配置以及项目之间的依赖关系。

nodejs addon模块采用源代码分发,安装需要根据不同平台采用合适的编译器编译安装,这就是node-gyp项目诞生的原由。

安装过程

安装node-gyp

在上线情况下,使用如下命令安装node-gyp:

1
$ npm install -g node-gyp

安装C++编译器

根据操作系统平台的不同,需安装对应的编译器,以方便node-gyp调用。以Windows平台为例,安装VC++编译器有两种方法:

  • 直接安装

    1
    2
    3
    // 以管理员身份打开cmd或powershell

    npm install --global --production windows-build-tools
  • 手动安装

    • 安装Visual C++构建环境: 使用Visual Studio Build Tools的Visual C++ build tools工作负载或者Visual Studio 2017 Community的Desktop development with C++工作负载。
    • 安装Python 2.7,不支持python3,然后运行npm config set python python2.7
    • 在cmd中运行npm config set msvs_version 2017

手动安装Visual C++构建环境的命令如下:

1
2
3
4
5
6
7
# 使用Visual Studio Build Tools的Visual C++ build tools工作负载,确保安装win10sdk,编译nodejs源码时需要

.\vs_buildtools__2041717674.1536666005.exe --layout d:\vc2017_offline --lang zh-CN --add Microsoft.VisualStudio.Workload.MSBuildTools --add Microsoft.VisualStudio.Workload.VCTools --includeRecommended

# 使用Visual Studio 2017 Community的Desktop development with C++工作负载

.\vs_community__208176120.1522073957.exe --layout e:\vs2017_offline --lang zh-CN --add Microsoft.VisualStudio.Workload.CoreEditor --add Microsoft.VisualStudio.Workload.NativeDesktop --includeRecommended

node-gyp编译测试

以在Win10平台编译nodejs addon模块为例,在离线情况使用如下命令测试node-gyp是否工作正常:

1
2
3
node-gyp configure --nodedir=d:\node-v8.11.3

node-gyp build

参考链接

  1. node-gyp的作用是什么?,by zhihu.
  2. node-gyp, by nodejs
  3. Windows-Build-Tools, by felixrieseberg.
  4. Vistual Studio Community 2017 30天许可证过期,by 井底一蛤蟆.

树莓派使用lirc进行红外遥控测试

发表于 2018-12-15 | 更新于 2022-06-04

在树莓派上使用lirc进行红外遥控测试的步骤比较繁琐,记录一下以备忘。

背景知识

lirc库

LIRC (Linux Infrared remote control,Linux红外线遥控)是一个开放源代码的包。这个包可以让你的Linux系统能够接收及发送红外线信号。

Microsoft Windows上有个功能相同的软件叫WinLIRC。

利用LIRC和红外线接收器,你就几乎可以用所有的红外线遥控器(例如:电视遥控器)来控制你的计算机。举例来说,你可以用遥控器来控制DVD或音乐的播放。

lirc配置文件说明

  • /etc/lirc/lircd.conf为遥控器配置文件
  • /etc/lirc/lircmd.conf为lircmd配置文件,后者可以将遥控器用作鼠标。
  • /etc/lirc/lircrc为irexec配置文件,后者可以在收到遥控器信号号运行设定的程序。

制作遥控器配置文件

使用irrecord命令制作遥控器配置文件lircd.conf。

1
2
3
4
5
# 首先停止lirc服务
sudo service lirc stop

# 制作遥控器配置文件
irrecord -d /dev/lirc0 <model>.conf

测试过程

硬件

  • 树莓派3B+
  • 红外接收器
  • 红外遥控器
  • 杜邦线

接线

红外接收器都有三个引脚:VCC、GND、Data。其中:
VCC:连接5V的引脚
GND:连接接地的引脚
Data:连接GPIO23

lirc配置

  1. 安装lirc:

    1
    sudo apt-get install lirc -y
  2. 修改/etc/modules

    1
    2
    3
    4
    5
    6
    7
    8
    9
    # /etc/modules: kernel modules to load at boot time.
    #
    # This file contains the names of kernel modules that should be loaded
    # at boot time, one per line. Lines beginning with "#" are ignored.

    i2c-dev
    # 添加如下代码
    lirc_dev
    lirc_rpi gpio_in_pin=23 gpio_out_pin=22
  3. 修改/etc/lirc/lirc_options.conf

    1
    2
    3
    # 修改如下两项
    driver = default
    device = /dev/lirc0
  4. 修改/boot/config.txt
    在/boot/config.txt文件中找到#dtoverlay=lirc-rpi,将其修改如下:

    1
    dtoverlay=lirc-rpi:gpio_in_pin=23,gpio_out_pin=22
  5. 重启测试

1
2
3
4
sudo init 6
# 查看lirc是否加载成功
lsmod | grep lirc
ls /dev/lirc0

参考链接

  1. LIRC,by wikipedia.
  2. 树莓派—红外遥控设置,by 逍遥游.
  3. 配置树莓派上的lirc(Raspbian, 2016),by Cnly.
  4. 上拉电阻和下拉电阻的作用,by Mike江.
  5. 上拉电阻和下拉电阻,by imzjy.
  6. Raspberry gPIo,by sparkfun.

飞行力学中坐标系定义

发表于 2018-12-10 | 更新于 2020-01-08

建立飞机的运动学模型的前提是建立合适的坐标系,在此基础上才能定义各种参数描述飞机的状态。下面介绍常用的坐标系及常用描述飞机状态的参数。

常用坐标系

地面固定坐标轴系($AX_gY_gZ_g$)

将地球视为椭球体,则地面固定坐标轴系定义为:

以椭球面上一点为坐标系原点$A$,$Z_g$轴与椭球法线重合,向下为正,$X_g$与$Y_g$轴位于过坐标原地的椭球切平面上,按右手法则建立,$X_g$轴与椭球短半轴重合(北向),$Y_g$轴与地球椭球的长半轴重合(东向)。

在研究坐标转换关系时,常使用飞机牵连铅垂地面固定坐标系$OX_gY_gZ_g$。其原点$O$位于飞机质心,三坐标轴平行于地面固定坐标轴系$AX_gY_gZ_g$的各个轴。飞机姿态——偏航、俯仰、滚转的定义即与飞机牵连铅垂地面固定坐标系有关。

机体坐标系(体轴系$OXYZ$)

机体坐标系定义为:

原点$O$位于质心,$O_X$平行于机身轴线或对称面机翼弦线指向前方(机头方向);$O_Y$垂直于对称面指向右翼;$O_Z$在飞机对称面内,垂直于$O_X$指向下方。符合右手系建立规定。

机体坐标系

图1 飞机牵连铅垂地面固定坐标系(OXgYgZg)与体轴系(OXYZ)

航迹坐标系($OX_kY_kZ_k$)

航迹坐标系定义:

原点$O$位于飞机质心,$OX_k$沿飞机速度方向;$OZ_k$在$OX_k$所在铅垂平面内,垂直于$OX_k$指向下方;$OY_k$垂直于$OX_k$、$OZ_k$ 所在平面指向右方;符合右手系建立规定。

航迹坐标系

图2 航迹坐标系(OXkYkZk)

气流坐标轴系(风轴系$OX_aY_aZ_a$)

气流坐标轴系又称速度坐标轴系,定义为:

原点$O$位于飞机质心,$OX_a$沿飞机速度方向;$OZ_a$在飞机对称面内,垂直于$OX_a$指向下方;$OY_a$垂直于$OX_a$、$OZ_a$ 所在平面指向右方;符合右手系建立规定。

气动力三个分量(升力、阻力、侧力)是根据风轴系定义的,其中升力与阻力分别沿$OZ_a$、$OX_a$的负向。

半机体坐标系($OX_iY_iZ_i$)

半机体坐标系定义为:

原点$O$位于质心,$OX_i$沿飞机速度向飞机对称面内投影方向;$OZ_i$在飞机对称面内,垂直于$OX_i$指向下方;$OY_i$垂直于$OX_i$、$OZ_i$ 所在平面指向右方;符合右手系建立规定。

半机体坐标

图3 风轴系(OXaYaZa)与半机体坐标系(OXiYiZi)

稳定性坐标系($OX_sY_sZ_s$)

稳定性坐标系定义为:

原点$O$位于质心,$OX_s$沿未受扰动的速度在对称面内的投影方向;$OY_s$在飞机对称面内,指向右;$OZ_s$对称平面内垂直于$OX_s$向下;符合右手系建立规定。

半机体坐标

图4 稳定性坐标系(OXsYsZs)

常用飞参

  • 机体坐标系相对于飞机牵连铅垂地面固定坐标系的夹角

    • 偏航角:机体坐标系$x$轴在水平面内投影与$x_g$的夹角,以$\psi$表示
    • 俯仰角:机体坐标系$x$轴与水平面的夹角,以$\theta$表示
    • 滚转角:过机体坐标系$x$轴的铅垂面与机体坐标系$z$轴的夹角,以$\phi$表示
  • 飞行速度矢量相对于体轴系的夹角

    • 迎角:速度矢量在飞机纵向对称面内投影与机体坐标系$x$轴夹角,以$\alpha$表示
    • 侧滑角:速度矢量与飞机纵向对称面的夹角,以$\beta$表示
  • 飞行速度矢量相对于地面的夹角

    • 爬升角:速度与地面水平面夹角,以$\gamma$表示
    • 航迹方位角:速度在地面水平面的投影与$x_g$夹角,以$\chi$表示

参考链接

  1. 无人机飞控通俗演义之 纷繁复杂的飞行力学, by 量子黑洞.
  2. 一起写飞行仿真之 六自由度动力学方程, by 量子黑洞.
  3. 飞行器飞行动力学(二)坐标系与夹角们, by 萝卜.
  4. Cesium中飞行器姿态控制,by jack huang.
  5. MathJax 支持的 Latex 符号总结(希腊字母和希伯来字母),by liyuanbhu
  6. 空间中三维矢量,by tina_ttl.
  7. JSBSim学习笔记(3)—— 基本概念,by 么的聊.

Debian系统安装NVIDIA驱动支持双显卡切换

发表于 2018-12-10

购买笔记本拥有Intel集成显卡和NVIDIA显卡,如何在Debian Linux下启用NVIDIA显卡是一个难题。幸运的是,通过bumblebee软件可在Linux下支持NVIDIA Optimus技术,实现Intel集成显卡和NVIDIA显卡之间的切换使用。

背景知识

NVIDIA Optimus

Optimus是NVIDIA针对笔记本电脑的显示切换技术。它可以实现笔记本电脑中独立显卡与主板内置显卡之间无缝、自动、实时的切换(用户无需重启或手动调整),从而实现能源的节约。

利用Optimus技术后,计算机的显示输出永远都只会通过集成式芯片组的显示核心。独立显卡的显示输出将会被废掉,有关的输出亦会发送到前者。由于显示输出的设备是固定的,所以黑屏现象将会被解决。额外的切换线路亦变得不需要,因为在不需要独立显示核心的时候,系统会索性断绝其电源供应。当系统的显示负载轻的时候,就会完全利用内置的显示核心。当负载增加后,系统就会打开独立显示核心作计算之用。协议分工方面由驱动程序负责,NVIDIA声称可以兼容所有的API。

Bumblebee

Bumblebee 致力于使 NVIDIA Optimus 在 GNU/Linux 系统上可用,实现两块不同的供电配置的显卡同时插入使用,共享同一个 framebuffer。

安装配置过程

禁止加载开源驱动nouveau

1
2
3
4
5
6
7
8
$ vi /etc/modprobe.d/nvidia-installer-disable-nouveau.conf

#上述文件不存在则新建,在文件中添加下面两行文字
blacklist nouveau
options nouveau modeset = 0

#系统重启后使用以下命令查看nouveau驱动是否被禁止
lsmod |grep -i nouveau

安装内核头文件

1
$ sudo apt-get install -y linux-headers-$(uname -r)

安装NVIDIA驱动

1
2
# 关于是否生存xorg.conf文件,选no
$ sudo apt-get install nvidia-driver nvidia-xconfig nvidia-kernel-dkms

安装双显卡切换解决方案包

1
$ apt-get install bumblebee-nvidia primus

添加当前用户到bumblebee用户组

1
$ adduser $USER bumblebee

修改bumblebee配置

1
2
3
4
5
6
7
8
9
10
11
12
$ vi /etc/bumeblebee/bumblebee.conf
: Driver=nvidia

#将/etc/bumeblebee/bumblebee.conf文件中的Driver=* 改成 =nvidia

$ vi /etc/bumblebee/xorg.conf.nvidia
:BusID "PCI:01:00:0"

#在/etc/bumblebee/xorg.conf.nvidia文件中,将Section“Device”部分添加PCI ID

# 可使用如下命令查看NVIDIA显卡的BUS ID
nvidia-xconfig --query-gpu-info | grep 'BusID : ' | cut -d ' ' -f6

重启进入桌面

如果无法进入桌面环境,则安装失败,进入高级修复使用如下命令进行清理。

1
$ sudo apt-get purge nvidia* bumblebee* prime*

bumblebee服务开机不会启动,设置开机启动即可。

1
$ update-rc.d -f bumblebee defaults

使用独显运行程序

bumblebee不能做到集显和独显之间自动切换,系统运行时默认使用集显,当你需要使用独显运行某个程序或者游戏的时候,终端执行如下命令即可:

1
2
$ optirum command #使用独显运行command程序
$ optirum -b primus command #使用独显运行command程序,提升性能

参考链接

  1. kali 在支持双显卡切换机器宏碁(Acer)V3下安装NVIDIA驱动, by 不梦君.
  2. Installing-Nvidia-drivers-on-Kali-Linux, by europa502.
  3. NVIDIA Optimus, by wikipedia.
  4. 在Ubuntu上安装和配置Nvidia Optimus驱动, by Linux中国.
  5. Bumblebee,by archlinux.

Linux图形界面基础知识

发表于 2018-12-09 | 更新于 2018-12-10

Linux初学者经常分不清楚linux和X之间,X和Xfree86之间,X和KDE,GNOME等之间是什么关系。常常混淆概念,下面以易于理解的方式解释X,X11,XFREE,WM,KDE,GNOME等之间的关系。

Linux内核没有图形用户界面

与Windows操作系统内核集成图形用户界面不同,Linux内核没有图形用户界面,是一个基于命令行的操作系统。

linux和Xfree的关系就相当于当年的DOS和 WINDOWS3.0一样,windows3.0不是独立的操作系统,它只是DOS的扩充,是DOS下的应用程序级别的系统,不是独立的操作系统,同样 XFree只是linux下的一个应用程序而已。不是系统的一部分,但是X的存在可以方便用户使用电脑。

WINDOWS95及以后的版本就不一样了,他们 的图形界面是操作系统的一部分,图形界面在系统内核中就实现了,没有了图形界面windows就不成为windows了,但linux却不一样,没有图形 界面linux还是linux,很多装linux的WEB服务器就根本不装X服务器.这也WINDOWS和linux的重要区别之一。

X是协议,不是具体的某个软件

X 是协议,就像HTTP协议,IP协议一样。一个基于X的应用程序需要运行并显示内容时他就联 接到X服务器,开始用X协议和服务器交谈。

比如一个X应用程序要在屏幕上输出一个圆那么他就用X协议对X服务器说:喂!我需要在屏幕上画一个圆.X应用程 序只负责告诉X服务器在屏幕的什么地方用什么颜色画一个多大的圆,而具体的”画”的动作,比如这个圆如何生成,用什么显卡的驱动程序去指挥显卡完成等等工作是由X服务器来完成的。

X服务器还负责捕捉键盘和鼠标的动作,假设X服务器捕捉到鼠标的左键被按下了,他就告诉X应用程序:亲爱的应用程序先生,我发现 鼠标被按下了,您有什么指示吗?如果X应用程序被设计成当按下鼠标左健后再在屏幕上画一个正方形的话,X应用程序就对X服务器说:请再画一个正方形,当然 他会告诉服务器在什么地方用什么颜色画多大的正方形,但不关心具体怎么画–那是服务器的事情。

XFree86和Xorg是实现X协议的服务器程序

Xfree86就是这样一个去根据法规实现协议的 “交警”。他按照X协议的规定来完成X应用程序提交的在屏幕上显示的任务。当然不仅仅是某个特定的交警才可以去维护和实现这个法规,比如还可以由交通协管 员来实现交通法规,必要的时候警察也可以介入,当然前提是他们都要懂得交通法规,也就是要懂得协议。

所以实现X协议的软件也并不只有 XFree86,XFree86只是实现X协议的一个免费X服务器软件.商业上常用MOTIF,现在还有XORG,还有很多很小的由爱好者写的小的X服务器软件。

X和X11R6的关系

X11R6 实际上是 X Protocol version 11 Release 6
(X协议第11版第六次发行)的意思,就是说目前用的X协议是第11版的,然后经过了6次小的修正。

不同版本的X协议是不能通信的。就象我们现在IPV4和IPV6不能通信一样,不过不用担心,现在的X服务器软件和X应用程序都遵循X11R6。

X服务器和WM(window manager 窗口管理器)的关系

窗口管理器是一种X应用程序,它负责窗口最大化,最小化,移动,关闭窗口等。这些不是X服务器负责完成的。

KDE和GNOME

KDE 和GNOME是LINUX里最常用的图形界面操作环境,他们不仅仅是一个窗口管理器那么简单, KDE是K Desktop Environment 的缩写。他不仅是一个窗口管理器,还有很多配套的应用软件和方便使用的桌面环境,比如任务栏,开始菜单,桌面图标等等。

GNOME是GNU Network Object Model Environment 的缩写。和KDE一样,也是一个功能强大的综合环境。

另外在其它UNIX系统中,常常使用CDE作为这样一个环境。

其它的小型窗口管理器有: window maker,after step,blackbox,fvwm,fvwm2,等等都是常用的优秀窗口管理器。

linux图形界面层次关系总结

linux本身–>X服务器<-[通过X协议交谈]->窗口管理器(综合桌面环境)–>X应用程序。

Xfree86服务器的实现包括两个部分,一部分是和显卡直接打交道的低层,一部分是和X应用程序打交道的上层。

上层负责接收应用程序的请求和鼠标 键盘的动作。而和显卡直接打交道的底层负责指挥显卡生成图形,其实就是显卡驱动。上层接收到应用程序的请求后,将请求内容做适当处理,然后交给显卡驱动来 指挥 显卡完成画图的动作。

另外,上层的捕捉键盘和鼠标动作的部分会向应用程序提供鼠标和键盘的状态信息,应用程序接收到这些信息后决定是否再有相应的动作。

参考链接

  1. linux图形界面基本知识(X、X11、Xfree86、Xorg、GNOME、KDE), by huang_xw.

家用电器安全使用年限与折旧

发表于 2018-12-08

家用电器都有一定的安全使用年限,超过安全使用年限,家用电器因产品老化将产生如下问题,造成安全隐患:

  • 绝缘体老化,产生漏电,导致电磁污染
  • 元器件技术指标严重下降,导致有害物质泄漏,耗电量增加

那么家用电器的安全使用年限是多少呢?购买二手家用电器时如何折旧呢?

家用电器安全使用年限

有关家电安全使用年限的标准通则早已出台,但是针对不同产品的具体年限细则却迟迟未发布。原因主要在于不同产品的使用年限评估难度较大,不同地区的使用差异性也较大,因此就目前而言国内尚无明确的家电使用年限方面的规定,国际通行年限可作参考:

  • 电吹风:4年
  • 电热毯:6年
  • 电脑:6年
  • 吸尘器:8年
  • 煤气灶:8年
  • 电热水器:8年
  • 洗衣机:8年
  • 电视:8-10年
  • 空调:8-10年
  • 微波炉:10年
  • 电饭煲:10年
  • 电风扇:10年
  • 冰箱:12-16年

家用电器安全使用年限只是最高限定,如果在使用过程中不注意保养维护,也有可能缩减家用电器的使用寿命,这就要求用户在日常生活中需要注重维护保养,使家电处于良好的工作环境,确保家电安全“服役”。

家用电器老化特征

家用电器也有各自的老化特征,当出现以下老化特征时,建议及时保养或更换:

  1. 空调:如果使用多年的空调开始出现制冷或制热变慢,噪音过大,在开机时会出现霉味且出风伴有灰尘,流出黑水,那么用户就应该考虑更换一台新空调。老旧空调此时不仅耗费更多电量,出风还会带有细菌污垢,影响身体健康。

  2. 冰箱:平时运行良好的冰箱开始出现制冷效果差,噪音过大,甚至发生轻微颤动时,说明已经老化。若继续使用,耗电量将会加大,食物的储鲜功能也会退化,有时还会出现冰箱制冷剂泄露,污染食材环境的问题。

  3. 洗衣机:洗衣机使用超龄的现象在用户中最为常见,判断它已经超龄的方式也最为简单。通常来说,洗衣机出现渗水、漏水、漏电,噪音过大,衣物清洗不净等问题都是达到使用年限的表现,严重时甚至会发生爆炸事件。

  4. 电视机:虽然各种类型的平板、投影仪的市场占有率越来越高,但电视机仍然是每个家庭不可或缺的电器之一。日常使用电视时,屏幕色彩暗淡,画面模糊抖动,除了要考虑电视自身质量问题,还要查看电视使用时长是否已经超出使用年限。超龄服役的电视机除了耗电量增加外,自燃或爆炸事故也时有发生。

  5. 热水器:热水器超出使用年限后,在运行时会出现异常声音,安全装置也会发生功能异常问题,再加上内胆中日积月累的杂质污垢,不仅会污染水质,还可能因漏电对人体造成伤害。除此之外,超龄热水器还易出现漏水、保温性差以及因内部电器元件老化导致的短路、冒烟等故障。

一旦发现家中电器存在以上类似的老化特征时,最好提前更换产品,以免带来严重后果。据媒体公开报道,每年我国因家电触电伤亡人数超过1000人,因家电引起的火灾损失更加惊人,而这其中最典型的原因就是家电超龄“使用”。

家用电器折旧

家用电器折旧可简单按固定资产折旧方法中的直线法,根据家用电器安全使用年限逐年折旧。

固定资产折旧方法

固定资产折旧方法(Fixed-assets Depreciation Method),指将应提折旧总额在固定资产各使用期间进行分配时所采用的具体计算方法。折旧是指固定资产由于使用而逐渐磨损所减少的那部分价值。

固定资产的损耗有两种:

  • 有形损耗,也称作物质磨损,是由于使用而发生的机械磨损,以及由于自然力的作用所引起的自然损耗。
  • 无形损耗,也称精神磨损,是指科学进步以及劳动生产率提高等原因而引起的固定资产价值的损失。

一般情况下,当计算固定资产折旧时,要同时考虑这两种损耗。

固定资产折旧方法可分为三类:

直线法

直线法(straight-line method)根据固定资产在整个使用寿命中的磨损状态而确定的成本分配结构。直线法依据是,固定资产的使用强度比较平均,而且各期所取得的收入差距不大。在直线法下,折旧金额是时间的线性函数。

直线法折旧公式如下:

年折旧率 = (1 - 预计净残值率)÷ 预计使用寿命(年)× 100%

月折旧额 = 固定资产原价× 年折旧率 ÷ 12

其中,净残值是指预计固定资产清理报废时可收回的残值扣除清理费用后的数额。企业应根据固定资产的性质和使用方式,合理估计固定资产的净残值。

加速折旧法

加速折旧法也称为快速折旧法或递减折旧法。其特点是:在固定资产有效使用年限的前期多提折旧,后期则少提折旧。从而相对加快折旧的速度,以使固定资产成本在有效使用年限中加快得到补偿。在具体实务中,加速折旧方法又包括年数总和法和双倍余额递减法两种。

年数总和法计算公式如下:

年折旧率 = 尚可使用寿命/ 预计使用寿命的年数总和 × 100 %

月折旧额 = (固定资产原价 - 预计净残值 )× 年折旧率 ÷ 12

某设备预计使用5年,则预计使用寿命的年数总和为15(5+4+3+2+1)。第2年时尚可使用寿命为4,此年的年折旧率为4/15。

双倍余额递减法计算公式如下:

年折旧率 =2÷ 预计使用寿命(年)× 100%

月折旧额 = 固定资产净值 × 年折旧率 ÷ 12

产量法

产量法(production method)根据固定资产的产出量分配其成本的方法。产量法的依据是固定资产的使用寿命主要是受其使用量影响,其合理性取决于三个条件:

(1)固定资产的每期用量波动较大;

(2)固定资产使用期内的产出的每期用量波动较大;

(3)固定资产服务潜力的下降与其使用程序密切相关。

如果符合这三个条件,产量法是最符合配比原则的。反对产量法的人认为,估计固定资产的产出量比估计固定资产的使用年限更加困难,而且很难考虑功能损耗因素。

产量法计算公式如下:

单位工作量折旧额 = 固定资产原价 × ( 1 - 预计净残值率 )/ 预计总工作量

某项固定资产月折旧额 = 该项固定资产当月工作量 × 单位工作量折旧额

参考链接

  1. 家用电器的使用年限是多久?如何尽可能延长其寿命?,by 海尔智慧生活.
  2. 固定资产折旧方法,by 百度百科.

空战类游戏仿真的一些思考

发表于 2018-12-08 | 更新于 2018-12-18

空战类游戏仿真涉及飞机、导弹、诱饵弹三种关键元素。为了使游戏仿真接近真实,一方面要使飞机、导弹、诱饵弹的模型及其特效(如尾焰)尽量逼真,另一方面要使飞机、导弹、诱饵弹的运动控制模型尽量接近真实。飞机、导弹、诱饵弹的模型可以用3d建模软件构建,尾焰也可以用粒子系统进行模拟,但飞机、导弹、诱饵弹的运动控制模型比较复杂,是实现空战类游戏仿真的关键。下面分别介绍飞机、导弹、诱饵弹的建模仿真。

飞机的建模仿真

飞机的运动模型基于牛顿第二运动定律,即物体所受到的外力等于此物体的质量与加速度的乘积,而加速度与外力同方向。根据外部受力和力矩计算出各种惯性坐标系下的加速度和角加速度。将加速度和角加速度分别进行积分,则可以得出飞机在某个时间段内的速度变化量和角速度变化量,进一步积分便可得到位置变化量和角度的变化量,再通过积分过程中的坐标变换以及初始时刻的状态参数,便可获得任意时刻飞机的姿态、位置、速度等参数。

飞行员通过油门杆和操纵杆控制飞机的运动。油门杆决定飞机的推力,操纵杆则控制飞机的副翼、襟翼、尾翼,改变飞机所受合力矩,从而改变飞机姿态。飞行仿真采用同样原理,油门杆和操作杆的位移经过非线性函数变换改变飞机所受合力和合力矩,经飞机运动模型获得加速度和角加速度,再经积分获得任意时刻飞机的姿态、位置、速度等参数。

当使用键盘输入控制飞机时,应将键盘输入先虚拟成油门杆和操作杆。另外需要注意的是,油门杆不回中,操作杆则自动回中。

导弹的建模仿真

根据导弹的工作原理,导弹的建模仿真应分成三个方面:

  • 探测模型
  • 目标识别算法
  • 运动控制模型

诱饵弹的建模仿真

诱饵弹的运动模型比较简单,可运用牛顿第二运动定律分析得出。比较有难度的是诱饵弹的视觉特效建模。诱饵弹是一个变质量、不规则的发光体,如何3D建模有难度,不能像太阳一样直接用图片代替。

参考链接

  1. 无人机飞控通俗演义之 纷繁复杂的飞行力学, by 量子黑洞.
  2. 一起写飞行仿真之 六自由度动力学方程, by 量子黑洞.
  3. 飞行仿真–1.三维建模篇, by WFYX.
  4. 无人机飞控通俗演义之 无人机导航制导与控制, by WFYX.
  5. FLIGHTGEAR FLIGHT SIMULATOR, by flightgear.

计算机视觉研究范畴简介

发表于 2018-12-07

计算机视觉是一个跨领域的交叉学科,包括计算机科学(图形、算法、理论、系统、体系结构),数学(信息检索、机器学习),工程学(机器人、语音、自然语言处理、图像处理),物理学(光学 ),生物学(神经科学)和心理学(认知科学)等等。那么什么是计算机视觉呢?这里给出了几个比较严谨的定义:

  1. “对图像中的客观对象构建明确而有意义的描述”(Ballard&Brown,1982)
  2. “从一个或多个数字图像中计算三维世界的特性”(Trucco&Verri,1998)
  3. “基于感知图像做出对客观对象和场景有用的决策”(Sockman&Shapiro,2001)

研究范畴

视觉识别是计算机视觉的关键组成部分,如图像分类、定位和检测。神经网络和深度学习的最新进展极大地推动了这些最先进的视觉识别系统的发展。下面介绍 5 种主要的计算机视觉技术:

  • 图像分类

给定一组各自被标记为单一类别的图像,我们对一组新的测试图像的类别进行预测,并测量预测的准确性结果,这就是图像分类问题。图像分类问题需要面临以下几个挑战:

视点变化,尺度变化,类内变化,图像变形,图像遮挡,照明条件和背景杂斑

  • 对象检测

识别图像中的对象这一任务,通常会涉及到为各个对象输出边界框和标签。这不同于分类/定位任务——对很多对象进行分类和定位,而不仅仅是对个主体对象进行分类和定位。在对象检测中,你只有 2 个对象分类类别,即对象边界框和非对象边界框。例如,在汽车检测中,你必须使用边界框检测所给定图像中的所有汽车。

  • 目标跟踪

目标跟踪,是指在特定场景跟踪某一个或多个特定感兴趣对象的过程。传统的应用就是视频和真实世界的交互,在检测到初始对象之后进行观察。现在,目标跟踪在无人驾驶领域也很重要,例如 Uber 和特斯拉等公司的无人驾驶。

  • 语义分割

计算机视觉的核心是分割,它将整个图像分成一个个像素组,然后对其进行标记和分类。特别地,语义分割试图在语义上理解图像中每个像素的角色(比如,识别它是汽车、摩托车还是其他的类别)。

  • 实例分割

除了语义分割之外,实例分割将不同类型的实例进行分类,比如用 5 种不同颜色来标记 5 辆汽车。分类任务通常来说就是识别出包含单个对象的图像是什么,但在分割实例时,我们需要执行更复杂的任务。我们会看到多个重叠物体和不同背景的复杂景象,我们不仅需要将这些不同的对象进行分类,而且还要确定对象的边界、差异和彼此之间的关系!

典型应用

计算机视觉领域已经衍生出了一大批快速成长的、有实际作用的应用,例如:

  • 人脸识别: Snapchat 和 Facebook 使用人脸检测算法来识别人脸。
  • 图像检索:Google Images 使用基于内容的查询来搜索相关图片,算法分析查询图像中的内容并根据最佳匹配内容返回结果。
  • 游戏和控制:使用立体视觉较为成功的游戏应用产品是:微软 Kinect。
  • 监测:用于监测可疑行为的监视摄像头遍布于各大公共场所中。
  • 生物识别技术:指纹、虹膜和人脸匹配仍然是生物识别领域的一些常用方法。
  • 智能汽车:计算机视觉仍然是检测交通标志、灯光和其他视觉特征的主要信息来源。

前沿研究

  • 超分辨率重建 (Image Super-Resolution)
  • 图像着色 (Image Colorization)
  • “看图说话” (Image Caption)
  • 人像复原 (Sketch Inversion)
  • 图像自动生成

参考文献

  1. 详解计算机视觉五大技术:图像分类、对象检测、目标跟踪、语义分割和实例分割…, by AI科技大本营
  2. 「无中生有」计算机视觉探奇, by 魏秀参

三维建模方法简介

发表于 2018-12-05 | 更新于 2022-12-19

三维建模是一种常用技术,奈何心向往之,却没有时间去系统学习,也没有做出过一个作品。下面将我看到的一些好的有关三维建模的资料记录一下,以做备忘。

三维建模方法

选择软件

当前三维软件层出不穷,既有商业级的3ds MAX、MAYA、Creator,也有免费使用的Blender、MilkShape。

下载蓝图

飞行仿真的三维模型主要有飞行器、机场建筑等。和大多数虚拟现实中使用的模型一样,并不需要CAD级别的精度,一般是下载一些图片或飞机整体蓝图作为蓝本,采用多边形建模的方法分部建模。蓝图下载网址首推:

the‑blueprints.com

这里免费提供各种汽车、国内外飞机、船舶的三视图图纸下载。

多边形建模

采用下载的蓝图,作为贴图放置在相应的投影平面上,然后采用多边形建模的方法画出各部分细节。多边形建模的思想就是采用一个诸如一个最接近的多边形,进行点线面的操作就可以绘制出复杂的飞机外形。

多边形建模从最基本的外形开始变形,可以从点线面及整体四个级别的操作,在越需要突出外形细节处用越多的点,通过建立网格模型,然后使用网格平滑功能生成平滑的曲面模型。

建模时不能有重复的点线面等几何体,否则即使表面上已经贴好了材质,但载入程序后,往往会因为Z向深度冲突的原因产生闪烁效果。其细节取决于您的需求,需要花费大量的时间。

贴图

真实世界的模型带有各种彩色并具有光泽度。完成了几何体的建模对于一个模型来说只完成了一小半工作,还需要给模型添加材质。

与一般的模型不同,飞行器出于气动设计的考虑,其表面模型一般成流线型的曲面,且部件组成复杂,界线较难区分,即使是UVW贴图也难以胜任。因此,对飞行器的贴图主要采用3ds MAX的UVW展开贴图技术贴图。

一个模型最好只有一个贴图,因为贴图数目过多零散会影响计算机载入三维模型时间和效率。因此,一般将整个模型各个部件组合为一个多边形,各部件为元素,待完成UVW贴图后再分离成单独的部件。UVW展开贴图有多重形式,如长方体展开(即按六个视图投影)、平面展开等,按需选择。

在一张贴图上展开整个模型的UV坐标显然是有限的,需要根据现实精度调整各个部分的贴图大小。保存这些展开的贴图坐标并渲染输出UV模板图像文件。UV模板图像其实就是整个模型的贴图的界线图像,通过Photoshop等图像处理软件处理,采用尽可能真实的图像放置在对应的区域。最后将材质赋给对象即完成贴图渲染。

数据导出

直接采用3ds MAX绘制的三维模型当然是.max格式,它不能为外界程序读取。这时就需要根据自己的开发环境选择导出的数据格式,比如用开源的OSG做仿真开发,就需要OSGExp插件的支持,导成.ive、.osg、.osgb等格式即可。但无论导出何种格式,切记保证模型质心与建模的原点不能相差不远,还要注意光照、贴图格式以及单位问题。

参考链接

  1. 飞行仿真–1.三维建模篇,by WFYX.
  2. 调整边缘画笔工具怎么用?,by zhihu.
上一页1…484950…55下一页

Jack Huang

546 日志
70 标签
© 2026 Jack Huang
由 Hexo 强力驱动
|
主题 — NexT.Muse