- 博客(23)
- 收藏
- 关注
原创 ROS机器人操作系统底层原理及代码剖析
0 目的 介绍ROS的实现原理,从最底层解剖ROS代码。主要分析C++部分。1 时间 不只是机器人,在任何一个系统里,时间都是一个绕不开的重要话题。我们就从万物的起点——时间开始吧。 ROS中定义时间的程序都在roscpp_core项目下的rostime中,见下图。如果细分一下,时间其实有两种,一种叫“时刻”,也就是某个时间点;一种叫“时段”或者时间间隔,也就是两个时刻之间的部分。这两者的代码是分开实现的,时刻是time,时间间隔是duration。在Ubuntu中把rostime文件夹中的文
2022-04-30 22:36:18
23819
4
原创 安装Apollo时常见的错误总结和使用窍门
进入docker后编译时报错:ERROR: An error occurred during the fetch of repository 'zlib',如下图所示: 出现这个错误的原因是Apollo依赖protobuf库,而protobuf库又依赖zlib库。这些库都要从网上下载,而protobuf库提供的zlib下载链接是https://zlib.net/zlib-1.2.11.tar.gz,问题是这个链接已经失效了,下载当然会失败。 解决方法是替换新的可用链接,具体就是修改Apollo
2022-04-09 10:09:01
31645
13
原创 混合A*算法研究
混合A可以看成是探索树和A算法的混血,适合有运动约束的机器人路径规划,例如无人车。就连Matlab居然都内置了混合A*算法函数:plannerHybridAStar,可见这个算法挺有名,但是Matlab使用了占据栅格地图进行碰撞检测。1 混合A*算法的基本思想 混合A算法的思想比较简单,利用探索树生成一段段可行的短路径,然后利用A算法的思想计算启发函数,引导探索树向目标生长。为了限制探索树生长的过密,将空间离散化成栅格,每个栅格只能存在一个树枝。3 混合A*算法的缺点 需要设置的参数有:
2021-07-26 09:50:40
44206
43
原创 纯跟踪算法用于无人车自动泊车
目的 通过简单的“纯跟踪算法”和“Reeds-Sheep曲线”就可以实现无人车的自动泊车或者位姿调整。robinvista2@gmail.com 1 Reeds-Sheep曲线 使用 https://github.com/hbanzhaf/steering_functions 中提出的曲率连续的改进Reeds-Sheep曲线生成一段连接给定起点和终点的曲线。 输出nav_msgs::Path消息,只输出一次,而不是重复输出。输出路径是一系列离散的点,点之间的距离可以自定义,笔者选择每
2021-07-07 09:00:52
24277
11
原创 基于Frenet坐标系的无人车轨迹规划详解与实现
目的 本文通俗地介绍Frenet坐标系下的无人车轨迹规划方法,随后探讨在ROS下的代码实现细节,以及如何调节各项参数,需要重点注意的地方。 前言 Frenet坐标系下的无人车轨迹规划方法是由Moritz Werling在2010年提出的,由于其简单有效的特点被广泛采用,甚至MATLAB都设计了相应的函数:trajectoryOptimalFrenet。一些开源的项目虽然不直接使用这种方法,但是也大量借鉴了方法中包含的思想,例如百度的Apollo无人驾驶项目,其中有很多Frenet坐标系的影子。
2021-04-28 18:37:21
31773
17
原创 ROS中使用Intel RealSense D455或L515深度相机
1 安装驱动 测试环境: Ubuntu 16.04 + ROS Kinetic + Intel D455 安装脚本如下#!/bin/bashsudo apt-key adv --keyserver keys.gnupg.net --recv-key C8B3A55A6F3EFCDE || sudo apt-key adv --keyserver sudo add-apt-repository "deb http://realsense-hw-public.s3.amazonaws.com/De
2021-04-15 17:42:10
27734
11
原创 ubuntu中用脚本同时启动多个终端窗口
在调试ROS程序时,经常需要运行多个节点程序,如果每个都打开一个终端然后输入指令非常繁琐,可以写一个脚本文件,每次运行这个脚本就能一次运行多个节点,方便高效。方法就是利用ubuntu中的terminator小程序,安装好以后在~/.config/terminator路径下的config是它的窗口数量字体等配置文件,下面以启动四个窗口为例说明怎么写脚本。 打开config文件,在terminal3下面,给command选项起个名字,例如command = COMMAND1,如下。其它的terminal
2020-12-03 10:16:05
22449
6
原创 teb_local_planner讲解
如果出现以下错误,说明你没有source,你应该在安装目录下运行source devel/setup.bash。q@ubuntu:~$ rosdep install teb_local_plannerERROR: Rosdep cannot find all required resources to answer your queryMissing resource teb_local_p...
2020-08-15 15:12:43
26123
7
原创 轮式移动机器人的运动控制入门
目的 无人车点镇定、轨迹跟踪中的控制理论和方法入门。1 汽车运动模型 你有没有注意到,古代的车几乎都是两轮的,不管是东方还是西方,不管是打仗的战车还是载人拉货的货车。原因当然有各方面的,但是最主要的原因是古人一直没搞明白两个车轮以上的车怎么拐弯。可不要小看这个问题,车辆转弯不是那么容易的,在结构设计上不简单,在运动控制上更是极具挑战性。 以采用艾克曼转向机构和差速器的四轮小汽车为例...
2020-04-26 18:38:53
29117
10
原创 LOAM论文和程序代码的解读
目的 LOAM是排名第一的状态估计和激光建图算法,本文分析它的特点,目的是了解它到底厉害在什么地方。1 利用特征点 LOAM采用了特征点提取的策略,让点云帧与帧之间的匹配效率更高、准确度也更高。 下图中,绿色的点是velodyne 16线激光雷达的原始点云,扫描环境是笔者的卧室,大概就是一个长方体。图中红色的小圆球是提取出来的边缘点,蓝色的是平面点。可见,边缘点基本上位于房间的角落,...
2020-02-19 20:41:53
33458
30
原创 工业机器人控制器
目的 本文介绍了工业机器人(包括机械臂和移动机器人)的控制系统架构,主要面向机器人控制器开发人员和感兴趣并希望了解更多细节的用户。 机械臂控制器 移动机器人控制器 1. 机械臂控制器 机械臂类的控制器发展较早,相对成熟,先来看看现有的控制系统方案。厂家硬件操作系统ABBx86VxWorksKUKAx86V...
2019-10-29 19:50:08
53200
29
原创 线虫神经网络仿真
目的 对秀丽隐杆线虫的大脑进行仿真,试验了触觉感知功能。1. 前言 秀丽隐杆线虫是一种1mm长的小虫子,别小看它,它是目前世界上唯一的被完整绘制出神经网络的生物。也就是说我们知道这种虫子有多少神经元、神经元之间是怎么连接的、连接的类型等等细节,甚至连每个神经元起什么作用也被试验测试出来了。基于这些信息,我们完全可以在计算机中创造一个虚拟的虫子,观察它的反应。这就很有意思了,因为从某种意义...
2019-09-01 17:51:45
21793
4
原创 Reeds-Shepp和Dubins曲线简介
什么是Reeds-Shepp曲线? 想象你下班开车回家,到了小区后想把车停到你个人的停车位里面。作为一个喜欢追求挑战的老司机,你想找一条最短的路径把车停进去。那么这样的路径是什么呢?答案就是Reeds-Shepp曲线。Reeds-Shepp曲线由Reeds和Shepp二人在1990年的论文《Optimal paths for a car that goes both forwards and ......
2019-07-09 04:43:21
44012
14
原创 AGV控制系统搭建
目的 本文介绍自动导引车(AGV)车载控制系统的实现过程,分为硬件搭建和软件设计两部分,并在其中穿插 AGV 控制的基础知识讲解。 1. 车载控制器1.1 控制器的类型 车载控制器是控制系统乃至整个 AGV 的核心,那么应该选择哪种控制器呢?根据笔者的经验,现在的 AGV 厂家采用的车载控制器基本可以分为以下三种: 下面简要介绍几种控制器的特点: 1. PLC...
2019-06-25 15:32:33
113498
51
原创 AGV调度方法入门
(编辑中……) 目的 本文首先解释AGV调度的概念,然后讨论现有的调度方法。 1 AGV及其调度问题1.1 AGV是什么? 国家标准[1]{[1]}定义AGV(自动导引车)为 AGV(Automated Guided Vehicle):装备有电磁或光学等自动导引装置,由计算机控制,以轮式移动为特征,自带动力或动力转换装置,并且能够沿规定的导引路径自动行驶的运输工具,一般具有安
2019-03-17 11:49:52
88184
24
原创 基于Mathematica的机器人仿真环境(SLAM篇)
(编辑中……,先别看) 目的 本文介绍在 Mathematica 中实现一个 SLAM 仿真的步骤。 为什么研究SLAM SLAM(Simultaneous Localization and Mapping)的意思是“同步定位和地图创建”,它是移动机器人领域研究的一个问题。没有接触过SLAM的同学可能会觉得它高深莫测,实际上现在很多介绍SLAM的文章对于初学者确实不那么容易理解。本文
2017-09-12 22:06:35
25095
3
原创 基于Mathematica的机器人仿真环境(机械臂篇)
目的 本文手把手教你如何在 Mathematica 软件中搭建机械臂的三维仿真环境,包括以下几部分: 1. 如何导入机械臂的三维模型; 2. 如何进行(正/逆)运动学仿真; 3. 如何进行(正/逆)动力学仿真; 4. 如何进行碰撞检测; 5. 如何进行控制方法的验证; 先看一下效果(先尝后买): 对于机器人研发设计人员,一款好用的仿真软件能对他的
2017-04-20 19:46:28
70502
155
原创 机器人中的 jog 是什么意思?
基本含义 用户在操作机器人时经常见到 jog 这个词,它一般翻译成“点动”[1]^{[1]},或者“单步运动”[2]^{[2]}。在有些时候(例如示教或者标定),用户需要控制机器人以时断时续的方式运动,而不是一直连续的运动。这时,就需要“点动”功能了。通俗的讲,“点动”中“点”的意思是点击按键,“动”的意思是机器人(的关节)运动。所以,点动就是“一点一动,不点不动”[3]^{[3]}。点动一般
2017-03-23 11:17:06
51954
3
原创 机器人专业需要学习什么理论知识
专业与产业 ● 1886年奔驰发明了第一辆以汽油为动力的汽车,随后汽车市场快速成长并形成了一个庞大的产业。为迎合汽车产业对人才的需求,大学开始设置相关的专业——车辆工程专业; ● 1903年莱特兄弟发明的飞机催生了航空工业,大学为此开设了飞行器设计与工程等专业; ● 1946年诞生了第一台电子计算机,其快速发展也使大学开设了计算机和软件等专业; ● 1954年第一个数字可编程的机
2017-03-19 10:41:22
35081
19
原创 KEBA机器人控制器简介
成立于1968年的 KEBA (中文名:科控)是一家提供自动控制产品和服务的奥地利公司(和贝加莱是老乡),其员工不到1000人,2015年营业收入达到1.89亿欧元。公司不大,产品却不俗,在工业、银行、能源等很多行业都有应用。 看到机器人市场的火热,KEBA 也推出了面向机器人自动化应用的产品 —— KeMotion[1]^{[1]},号称是 完美的全套机器人控制系统 以及 机器人与机械设备
2017-03-13 20:32:30
67964
20
原创 Dijkstra算法入门
0. 前言 最短路径问题(Shortest Path Problem)是一类非常重要的问题,它出现在很多应用领域,例如车辆导航、路由选择、机器人运动规划、物流配送等。Dijkstra 算法是一种解决最短路径问题的经典算法,同时也是计算机科学中最有名的算法之一。其方法简洁,但蕴藏的思想却很深刻。通过学习 Dijkstra 算法,既可以掌握分析、解决问题的方法,也可以作为进一步学习其它搜索算法的
2017-03-11 17:06:27
5115
5
原创 递归牛顿欧拉(正/逆)动力学仿真
递归牛顿-欧拉动力学算法是一种高效的动力学计算方法,它有正/逆两种形式,我们先来看正动力学的形式,也就是给定关节力矩求机器人的运动。下面的算法来自于论文《Lie Group Formulation of Articulated Rigid Body Dynamics》,我们更正了原文中的一处错误。该算法使用了李群的表述,其优点是形式简洁、并有清晰的数学含义。 我们的算法适用于三维空间
2017-02-19 12:07:01
11995
3
原创 机器人领域的SCI期刊介绍
很多大学和研究所都开展了机器人研究。对于博士生,好的单位一般毕业要求发表SCI论文,下面统计了部分机器人学科的SCI期刊信息(排名不分先后)。由于影响因子有所变动,我没有列出,大家如果需要可以到数据库查询。我时间有限,只列出部分,欢迎大家继续补充。1. AutonomousRobots双月刊,无版面费(但彩色图片收费,Online publication
2016-11-14 14:37:08
62605
10
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人