写在云飞机器人实验室改版之际

云飞实验室自2010年成立至今,风风雨雨已十载。 在这十年里,我结交了很多志同道合的朋友,也看到很多与我一样的内容创作者,途中因为工作、生活与家庭,最后逐渐减低更新频率,或是不得不彻底放弃。这是我们无论如何不得不面对的现实 — 我们或多或少有着一种理想主义,却在很多时候向现实蛰伏。 我亦是如此。从2015年博士开始后,我便少有时间再更新博客。随着时间的更迭,内容也慢慢变得陈旧,逐渐的开始流失一大部分忠实的读者。然而初心未变,很多人、包括我自己,依然希望可以继续看见优质的机器人技术内容 […]

机器人领域主要国际会议与期刊列表

最近有几篇论文和机器人相关,在寻找目标会议的过程中梳理了一下目前接受度较高的会议和期刊,并整理如下。 (*)标是在我认知中评级或口碑较高的会议/期刊。列表基本按照字母排序。需要说明:(1)我的主要研究方向并非机器人,所以在整理的过程中难免有错误/疏漏;(2)细分领域因为缺乏相关知识所以无法一一列出;(3)我不太认可CCF的评级,所以没有包含。欢迎补充与指正。 机器人/人工智能(会议) AAAI**: Conference on Artificial Intelligence AIM*: IEEE […]

机器人常用可视化仿真工具

机器人系统设计离不开仿真工具的支持。机器人仿真让我们在没有物理硬件的情况下也可以快速对算法进行验证;或者提高安全性,避免实验损伤我们的设备(比如在增强学习中,就需要大量random的exploration)。这篇文章我想介绍一下当前主流的可视化仿真工具。一般来说这些仿真工具在物理引擎之上进行包装,如基于ODE、 Bullet等。有些情况下我们只需要使用物理引擎就可以满足需要,但一般情况下我们也想通过可视化平台观察机器人运行的正确性。仿真一般只在系统前期使用,因为真实物理平台与仿真环境存在差异,后 […]

实时系统 | 实时系统研究相关方向、会议与期刊

实时系统是计算机科学中的一个重要分支,其与嵌入式系统、操作系统、运筹与优化等领域具有较强关联。我读博期间选择了实时系统任务调度方向,多年下来也算有点经验。在这里,我总结一下实时系统领域内目前主流的几个研究方向,希望对初入这个领域的硕士/博士有所帮助。

你好,2019!

回顾2018年,因为科研工作忙碌,几乎没有新写文章,很多设立的目标没有达成。2019年需要再接再厉。 今年,我想主要围绕我自己的工作写一些中/英文的技术文章,在技术深度上稍加挖掘。云飞实验室在2019年设下的计划有: 增加实时系统相关的文章,包括实时操作系统的原理和任务调度等; 写若干机器人深度学习/深度增强学习的入门和调研文章; 自动驾驶中的一些关键技术; 写一些ROS与深度增强学习的结合使用; 写一些 系统工程(Systems Engineering) 和 基于模型的系统工程(MBE)方面的 […]

RTOS | 实时操作系统杂谈

实时操作系统 (RTOS) 在工业控制、航空航天和电力系统中有大量应用。我自己接触实时操作系统已有几年时间,虽然实际的项目使用经验不多,然而耳濡目染还是积累了一些经验和知识。在这里整理和分享给大家。 实时操作系统(Real-time Operating System, RTOS)是针对有实时性要求的应用而设计的操作系统。这些应用通常包括汽车引擎控制、轨道交通、工业机器人、飞行器控制系统等。实时操作系统一般提供抢占式调度机制,重要的高优先级任务可以剥夺低优先级任务对CPU的使用权;同时,任务在等待 […]

Linux | Linux系统全方位调试与维护工具整理

俗话说:“工欲善其事,必先利其器。” 在多年维护和开发Linux服务器的过程中,我接触了一些常用的开发和调试工具。本文将这些工具整理在一起,便于指导读者选择正确的工具。文中对于工具只有简单的介绍,需要详细的用法可以–help或自行Google。 本文针对的环境是CentOS/RedHat服务器 (需要epel库)。其他发行版应该也有相应的命令,但我没有一一测试。 系统管理 ssh: 远程登录 last, lastlog: 查看用户登录历史 cron: 设置周期运行的定时任务 at: 设置运行一 […]

使用Markdown进行写作和文字记录

1. 背景 Markdown是一种语法简洁的标记语言 (Markup Language)。Markdown可以使用任何一种纯文本编辑器进行编辑,同时可以渲染、生成HTML。Markdown虽然是标记语言,但是和HTML比起来具有更好的可读性。与富文本(Rich Format Text, RTF)格式相比,Markdown的纯文本特性让使用者可以更加关注内容,专注于文字的表达。我多年前在友人的推荐下开始尝试用Markdown写作。我一开始并不习惯这种所写和所得分离的方式,但是之后也慢慢习惯、喜欢上 […]

如何构建和管理自己的知识系统

1. 背景 三年前,我在做硕士毕业设计的时候第一次使用Evernote(印象笔记)收集资料,之后就一直使用Evernote记录一些备忘和生活琐事,但也没有形成相对完整的系统。开始读博士之后,我习惯随手在论文上记批注和笔记,觉得这样个人观点和原文的耦合度会比较高。但是等到要检索和引用资料时,脑中对这些知识点有些印象,可很多资料就是找不到出处,这时又要重新谷歌或者去翻文件夹。这让我思考是否需要将笔记做成电子形式,这样检索和使用的时候会比较方便,知识也能线性积累。去纸化的过程是比较痛苦的,因为我们从小 […]

C语言 | 陷阱:数组溢出导致内存被意外修改

C语言的指针在提供编程便利的同时,却带来了很多潜在的内存安全问题。见以下例子: 该程序(不正确)的输出为: 上述代码使用sprintf修改了string_buff指针所指向的char型数组。但是由于在申明数组长度的时候,没有考虑到字符串结束符’\0’,所以实际写入时不慎篡改了下一位内存地址的内容(此例中为i_not_zero, 使用MinGW gcc)。在实际程序中,此类bug一般很难被发现,尤其是还有其他程序在正常修改该值时,一般先会去排查和该变量有关的程序。 这只是一 […]

你好,2017!

又是新的一年。岁月匆匆,不给人时间回头看看,就又让人上路了。 今年更新了10篇左右的博文: 新增的”C语言深度”专题来源于我在嵌入式课程助教过程中发现的C语言的错误使用。我觉得C和C++是机器人领域最重要的两个语言,所以希望在这方面增加一些内容。 另几篇博文是介绍新发布的树莓派3代的。今年除了树莓派3,还入手了若干树莓派Zero。因为Zero很难买到,所以一下屯了5、6个。这批Zero准备用在智能家庭的节点中,但是应用场景目前还不明确,所以没有给大家做专题介绍。 明年的工 […]

C语言 | 陷阱:数组指针作为函数参数返回

再来看一个指针问题,同样的来自一个本科生的代码。这段代码想要实现将一个全是小写字母的字符串转换成对应的大写字母字符串: 然而这段代码没有能实现期望的功能。原因如下: 主程序调用convert_to_upper_case()函数后,堆栈为p分配了内存空间; 函数体正确修改了p对应字符数组的内容,并将p的首地址作为指针返回; 函数返回后,所有临时变量从堆栈中弹出,包括p[100]; 主程序得到返回的指针,对其进行解析。然而指针指向的字符数组此时已经从堆栈中弹出,解析后的数据无法被定义。 要想正确实现 […]

C语言 | 指针的一个错误赋值

关于指针总是有说不完的故事。 最近给本科的学生带Embedded System课程设计,遇到了一个非常奇怪的bug。有一段代码需要实现I2C通信,核心代码已经由软件库提供了,学生只需要设置结构体后调用API即可。一个学生的代码是这样的: 初看一下没有什么问题:在I2C_init()函数中首先对结构体cfg进行初始化,而在I2C_send()函数中设置了需要发送的数据指针,之后使用I2C的API发送数据。 因为代码一直无法实现期望的功能,我又仔细看了一下其中的蹊跷。我注意到,这段代码中使用了一个中 […]

RPi树莓派 | 树莓派官方7寸屏入门指南

1. 引子 在树莓派官方触摸屏发布之前,市场上可用的屏幕有以下三种: 直接和GPIO插口对接的屏幕,使用SPI与CPU进行通信。需要特殊的驱动程序将framebuffer的内容发送到LCD控制器上,一般带有触屏功能,大小以3.5寸为主流。受限于SPI通信速度,刷新速率不高; 专用USB接口的屏幕,如RoboPeak Mini USB Display。这类屏幕通过USB连接,需要本地运行驱动程序; 通用LCD屏幕,通过HDMI和树莓派连接。因其通用性不需要特殊的驱动程序,但是很多都不支持触屏功能, […]

C语言 | C/C++变量命名规范

目前主流的C/C++命名风格有两种:一种是Windows风格的匈牙利命名法,主要是采用类型前缀 + 变量名首字母大写,另一个就是Unix/Linux命名习惯。我自己采用的是基于Unix的变种,融合了匈牙利命名法的一些优点,在这里分享给大家。 变量名的组成:(模块名) +  (作用域) + (类型前缀) + 变量名 + (变量名后缀),解释如下: 变量名 以小写的英文字母构成,词与词之间用下划线连接,如key_value, data_src; 不可使用数字,不混用大小写; 模块名 声明该变量属于的 […]

近日关注的几个KickStarter项目

KickStarter是国外最著名的众筹网站。项目发起者可以在只有基本idea的情况下提前发布产品信息,以获得来自个人的资金支持,达到满意的标准后再进行产品的实际生产,从而减少了产品发售的风险。 这几天在KS上比较热门的科技项目都是智能设备/可穿戴设备,这里我聊一聊几个我最近关注的项目。 1. Sweep激光雷达 项目主页:https://www.kickstarter.com/projects/scanse/sweep-scanning-lidar/description ▲ 图1. Swee […]