Nvidia Jetson Nano介绍与使用指南

本文介绍了Nvidia Jetson Nano的硬件参数、性能、使用方法及个人主观的使用体验。 1. Jetson简介 Jetson Nano是Nvidia在TX2和Xavier获得成功后推出的低配版GPU运算平台。我在Jetson Nano 2019年3月刚上市的时候就入手了一块开发套件(英国Pimoroni购入,110磅)。这次乘着短暂的假期,来补一下对它的评测。谈一个硬件平台,首先绕不开的就是它的纸面参数。在官方的资料上,Jetson Nano公布的参数如下: Nano最大的特色就是包含了 […]

机器人领域行业标准汇总

业界在产品研发与合规工作时不可避免的需要参考遵循一些行业通行标准。这些标准文件为行业制定了一套通行高效的交流语言和精益规范化的工作流程,并对学术研究的推广交流以及后期产品化给予了极大的帮助。在机器人领域同样也有一些常用到的行业标准,这其中即有ISO这类国际通行标准,也有ASTM、VDI这类地区性标准,另外也包含ROS REP这类机器人开源平台的通行标准。

本列表整理了国际上常用的机器人标准。列表分类依据主要按照对于标准的需求划分,而非机器人系统的种类或标准的制定机构。由于我所涉猎的专业范围有限,其中未免有差错遗漏,欢迎交流与指正。

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

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

RTOS | 实时操作系统杂谈

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

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

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

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

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

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和树莓派连接。因其通用性不需要特殊的驱动程序,但是很多都不支持触屏功能, […]