机器人

专业机器人工程师,业余爱好者,研究人员和学生的问答

3
如何处理声纳串扰
我们的机器人具有12个圆形声纳传感器的圆形阵列,如下所示: 该声纳传感器本身是相当不错的。我们使用低通滤波器来处理噪声,读数似乎非常准确。但是,当机器人遇到平坦的表面(如墙)时,会发生奇怪的事情。声纳没有显示会指示墙壁的读数,而是看起来像是弯曲的表面。 下图是在机器人面对墙壁时绘制的。与红色直线相比,看到蓝色曲线。红线是通过使用摄像头检测墙壁而产生的,蓝线显示过滤后的声纳读数。 我们认为,此错误是由于串扰引起的,在该串扰中,一个声纳传感器的脉冲以一定角度从墙壁弹起,并被另一个传感器接收。这是一个系统性的错误,因此我们无法像对待噪音一样真正地处理它。有解决方案可以纠正吗?


3
伺服器可能损坏的迹象是什么?
我只是得到了一个工具包,我不确定它是否是我自己,但似乎连续伺服之一可能坏了。当我将其插入微控制器时,首先发生的是什么,当我发送命令时它发出嗡嗡声。第二个连续伺服根本没有工作 我在基于aurdino的主板上的不同端口上玩耍,但无济于事,只是嗡嗡作响。然后,我完全拆掉了嗡嗡作响的伺服器,只把第二个伺服器放了。第二个连续伺服开始向我要求的方向移动。 我将第一个插入,第二个插入。 然后我尝试用手旋转,第二个阻力很大,而第一个阻力却小得多,也许手工旋转起来容易60%。 我可以解决这个问题吗?有人遇到过这些问题吗? 在此先感谢您,你们很棒!

7
人工智能和机器人技术有区别吗?
我需要帮助来区分AI和机器人技术。AI和机器人技术是两个不同的领域,还是机器人技术是AI的学科? 我想从事AI和机器人学的职业。因此,我需要您的宝贵建议。我在网上搜索了一些我想申请的大学,但找不到要搜索的东西。

1
谁创造(或普及)了“ SLAM”一词?
根据Wikipedia在SLAM上的文章,最初的想法来自Randal Smith和Peter Cheeseman(关于空间不确定性的估计和表示 [PDF]),1986年由Hugh F. Durrant-Whyte和JJ Leonard进行了改进(同时进行地图绘制)并在1991年实现了自主移动机器人的本地化)。 但是,没有一篇论文使用术语“ SLAM”。这个术语来自哪里(和何时)?是否有某个特定的作者或白皮书使之流行?
10 slam 

4
如何制作“跟随机器人的隐形线”?
我想构建一个遵循虚拟路径的机器人(而不是像“白色表面上的黑线”之类的可见路径)。 我只是看一些科幻视频而感到兴奋,这些视频显示机器人在拥挤的地方搬运货物和材料。而且他们实际上并没有遵循物理路线。他们感觉到障碍物,深度等。 我想构建一个这样的机器人,它遵循从点A到B的特定(虚拟)路径。 我尝试了几件事: 在机器人上使用磁性“霍尔效应”传感器,并在导线下传送电流(在桌子下方)。这里的问题是霍尔效应传感器附近很小(<2cms),很难判断机器人是在线还是离线。即使使用一系列磁铁也无法解决此问题,因为我的桌子只有1英寸厚。所以这个想法失败了:P 使用紫外线涂料(在线)并在机器人上使用紫外线LED作为传感器。这将为机器人提供更多的Zig-Zag运动。由于使用紫外线光源的潜在威胁,即使这个想法也失败了:P 最后,我想到了将一台摄像机放在顶部,并使用图像处理算法来查看机器人是在线还是发散。 有没有比这更好的解决方案了?真正在寻找一些创意和简单的解决方案。:)

1
最小二乘图加入
这里有很多背景,请滚动到底部以查找问题 我正在尝试“ 线性最小二乘问题离SLAM有多远”中描述的地图连接算法;具体地,公式(36)。我写的代码似乎总是采用第二张地图的值作为地标位置。我的问题是,我是正确理解文本还是在犯某种错误。我将在理解公式的同时尝试说明它们,并说明我的代码如何实现这些公式。我正在尝试仅合并两个本地地图的简单情况。 从论文(36)中可以看出,将两个局部地图是在寻找一个状态向量,该状态向量将最小化:Xjoin,relXjoin,relX_{join,rel} ∑j=1k(XLj^−Hj,rel(Xjoin,rel))T(PLj)−1(XLj^−Hj,rel(Xjoin,rel))∑j=1k(XjL^−Hj,rel(Xjoin,rel))T(PjL)−1(XjL^−Hj,rel(Xjoin,rel)) \sum_{j=1}^{k}(\hat{X_j^L} - H_{j,rel}(X_{join,rel}))^T(P_j^L)^{-1}(\hat{X_j^L} - H_{j,rel}(X_{join,rel})) 扩展为两个本地地图和我有:XL1^X1L^\hat{X_1^L}XL2^X2L^\hat{X_2^L} (XL1^−Hj,rel(Xjoin,rel))T(PL1)−1(XL1^−Hj,rel(Xjoin,rel))+(XL2^−Hj,rel(Xjoin,rel))T(PL2)−1(XL2^−Hj,rel(Xjoin,rel))(X1L^−Hj,rel(Xjoin,rel))T(P1L)−1(X1L^−Hj,rel(Xjoin,rel))+(X2L^−Hj,rel(Xjoin,rel))T(P2L)−1(X2L^−Hj,rel(Xjoin,rel)) (\hat{X_1^L} - H_{j,rel}(X_{join,rel}))^T(P_1^L)^{-1}(\hat{X_1^L} - H_{j,rel}(X_{join,rel})) + (\hat{X_2^L} - H_{j,rel}(X_{join,rel}))^T(P_2^L)^{-1}(\hat{X_2^L} - H_{j,rel}(X_{join,rel})) 据我了解,子图可以看作是全局图的综合观察,因此是与子图相关联的噪声(而不是我用来制作子图的EKF中的过程噪声。可能不会有所不同)。PLjPjLP^L_j 向量是第一个地图的姿态,第二个地图的姿态以及两个地图中地标的并集。Xjoin,relXjoin,relX_{join,rel} 函数为:Hj,relHj,relH_{j,rel} ⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢Xr(j−1)erjeϕr(j−1)erjeR(ϕrmj1er(j−1)e)(Xrmj1efj1−Xrmj1er(j−1)e)...R(ϕrmjler(j−1)e)(Xrmjlefjl−Xrmjler(j−1)e)Xrj−1efj(l+1)...Xrj−1efjn⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥[Xrjer(j−1)eϕrjer(j−1)eR(ϕr(j−1)ermj1e)(Xfj1rmj1e−Xr(j−1)ermj1e)...R(ϕr(j−1)ermjle)(Xfjlrmjle−Xr(j−1)ermjle)Xfj(l+1)rj−1e...Xfjnrj−1e] \begin{bmatrix} X_{r_{je}}^{r_{(j-1)e}}\\ \phi_{r_{je}}^{r_{(j-1)e}}\\ R(\phi_{r_{(j-1)e}}^{r_{m_{j1}e}}) (X^{r_{m_{j1}e}}_{f_{j1}} - X^{r_{m_{j1}e}}_{r_{(j-1)e}})\\.\\.\\.\\ R(\phi_{r_{(j-1)e}}^{r_{m_{jl}e}}) (X^{r_{m_{jl}e}}_{f_{jl}} - X^{r_{m_{jl}e}}_{r_{(j-1)e}})\\ X_{f_{j(l+1)}}^{r_{j-1e}}\\ .\\.\\.\\ X_{f_{jn}}^{r_{j-1e}} \end{bmatrix} 我不相信我的以下评估是正确的: 前两个元素是机器人在上一张地图的参考框中的姿势。例如,对于地图1,该姿势将位于初始帧中;对于地图2,它将位于地图1的框架中。t0t0t_0 下一组元素是地图1和地图2共有的元素,它们被转换为地图1的参考系。 最后一行是地图2特有的功能,位于第一张地图的框架中。 我的matlab实现如下: function [G, fval, …
10 slam 


2
具有激光扫描+已知图的扩展卡尔曼滤波器
我目前正在为一个学校项目工作,该项目需要为带有激光扫描仪的点机器人实现扩展的卡尔曼滤波器。机器人可以以0度转弯半径旋转并向前行驶。所有运动都是分段线性的(驱动,旋转,驱动)。 我们使用的模拟器不支持加速,所有运动都是瞬时的。 我们还需要定位一个已知的地图(png图像)。我们可以在图像中进行光线跟踪以模拟激光扫描。 我和我的搭档对我们需要使用的运动和传感器模型几乎不感到困惑。 到目前为止,我们将状态建模为向量。(x,y,θ)(x,y,θ)(x,y,\theta) 我们使用更新公式如下 void kalman::predict(const nav_msgs::Odometry msg){ this->X[0] += linear * dt * cos( X[2] ); //x this->X[1] += linear * dt * sin( X[2] ); //y this->X[2] += angular * dt; //theta this->F(0,2) = -linear * dt * sin( X[2] ); //t+1 ? this->F(1,2) = linear …

1
如何在编程逻辑中将链接参数和角度(在运动学中)转换为变换矩阵?
我作为一名本科生正在从事机器人研究,并且我大部分时间都了解概念数学。但是,在实际实现代码以计算机器人的正向运动学时,我陷入了困境。我只是不了解找到的书或网站的解释方式。 我想计算XYZ角度给出的链路参数(Denavit-Hartenberg的参数),诸如以下: i123456αi−10−90∘0−90∘90∘−90∘ai−100a2a300di00d3d400θiθ1θ2θ3θ4θ5θ6iαi−1ai−1diθi1000θ12−90∘00θ230a2d3θ34−90∘a3d4θ4590∘00θ56−90∘00θ6\begin{array}{ccc} \bf{i} & \bf{\alpha_i-1} & \bf{a_i-1} & \bf{d_i} & \bf{\theta_i}\\ \\ 1 & 0 & 0 & 0 & \theta_1\\ 2 & -90^{\circ} & 0 & 0 & \theta_2\\ 3 & 0 & a_2 & d_3 & \theta_3\\ 4 & -90^{\circ} & a_3 & d_4 & \theta_4\\ 5 …

3
四足学习模拟器
我目前正在构建一个四脚(四足),3自由度(自由度)的机器人,在这里建议我使用模拟器在计算机上进行学习,然后将算法上传到机器人。我为机器人使用了Arduino Uno,可以使用什么软件来模拟学习过程,然后可以上载到Arduino开发板?

3
使用6轴机器人,在给定末端执行器位置和方向范围的情况下,如何找到最佳关节值
给定六轴铰接式机械手将工具固定在其末端执行器上,如果我具有所需的工具位置和工具方向,则逆运动学方程式中将有1个正确的解决方案,以使机器人到达该位置。 (或更确切地说,最多16种不同的解决方案,具体取决于关节的范围) 但是,如果机器人拿着类似笔的东西,并且我希望机器人用该笔在目标上标记一个特定点,那么我不在乎笔的方向,只要它垂直于标记的表面即可。 因此,逆运动学方程将具有无限多个解。 如何在这些解决方案中选择最接近当前配置的联合配置:需要最少移动量的联合配置? (或根据其他类似准则最佳的关节配置,例如所有关节角度均离其最大和最小值最远?)

3
使用遗传算法调整控制器
我已经阅读了一些有关控制非线性系统(例如非线性摆)的论文。有几种针对非线性系统的方法。最常见的是反馈线性化,后推和滑模控制器。 就我而言,我已经完成了控制简单摆的非线性模型以及C ++中其他操纵器问题的理论和实践部分。对于摆锤,我使用了后推控制器来解决角位移和速度的跟踪任务。结果是 θ¨+(k/m)θ˙+(g/L)sinθ=uθ¨+(k/m)θ˙+(g/L)sin⁡θ=u \ddot{\theta} + (k/m) \dot{\theta} + (g/L) \sin\theta= u 其中和g = 9.81。m=0.5,k=0.0001,L=.2m=0.5,k=0.0001,L=.2m=0.5, k=0.0001, L=.2g=9.81g=9.81g=9.81 效果不错。但是,调整控制器非常耗时。大多数论文使用遗传算法来调整其控制器,例如PD,PID和反推控制器。我在这一领域一无所知,希望有人对此概念有所了解,如果有一个MATLAB示例至少可以控制一个简单的摆锤,那是更好的选择。 到目前为止,我已经在C ++ / Qt中设计了一个简单的GUI,以便手动调整控制器。在下图中,控制器对步进功能的响应。
9 control 

1
如何确定感应和控制致动之间的时间步长?
我的背景: 我的经验是固体力学和有限元分析。因此,我在机器人/控制方面的经验为零。 问题描述 我正在开发一种控制策略,以稳定复杂的六足动力学系统。来自每条腿关节的扭矩Ti将用于在身体上产生净力矩M,从而使系统稳定。从预定的控制策略知道这一时刻M。(注意:动态求解器是非线性计算类型的) 由于缺乏背景,我对动力系统产生了根本性的困惑。我想使用关节扭矩Ti在身体上产生这个已知的净力矩M。此刻M是 所有腿段的当前位置/角度 每条腿的反作用力和力矩(无法控制) 每条腿可控制的关节扭矩Ti 时间 在给定时间(ñ - 1 )Δ T:(∗ )(∗)(*)(n − 1 )Δ(ñ-1个)Δ(n-1)\Delta -根据控制策略计算/知道所需的净力矩M t = (n − 1 )ΔŤ=(ñ-1个)Δt = (n-1)\Delta -从此信息中,矢量代数可以轻松产生产生净矩M所需的所需关节扭矩Ti (∗ ∗ )(∗∗)(**)(n )Δ(ñ)Δ(n)\Delta t = (n − 1 )ΔŤ=(ñ-1个)Δt=(n-1)\Delta -当然,这些扭矩Ti是在紧接的时间步长上施加的,因为它们不能立即施加 (∗ )(∗)(*)(∗ )(∗)(*)(∗ ∗ )(∗∗)(**) 问题 我是否正确理解机器人问题?解决这个难题的条件和策略是什么? 当然,我可以将感应和促动之间的时间步长设置为无限小,但这将是不现实/不诚实的。现实的时间步长和执行任务之间的平衡是什么?

2
向(羽毛石)铰接式刚体模型添加执行器或力
我正在做一个项目,在这个项目中,我需要对一个系统进行建模,该系统本质上是由一系列连接到基座的球窝接头组成的,该球窝接头又连接到棱柱形接头(导轨)上。 我已经阅读了Roy Featherstone的《刚体动力学算法》,并且还阅读了Springer机器人技术手册(也由Featherstone编写)中的“ 动力学”部分。 我花了很长时间适应了他的“空间矢量”和“空间矩阵”表示法,但是在练习中重新手工创建了所有表示法之后,结果证明这是连接3x3和将3x1矩阵和向量分为6x6和6x1矩阵和向量。当他劫持一些标准符号时,他发明的用于执行运算的数学可能有点乏味,但是总体而言,它非常紧凑,非常容易在MATLAB中实现。 我的问题是:如何在模型中添加执行器?他逐步明确地配置了关节定义,链接定义等,但是当涉及到执行器或作用力时,他会说:“只要在此处添加,鲍勃就是你的叔叔!” -完全没有讨论。他在《机器人手册》中建议给固定基座引入错误的加速度以添加重力项,但没有显示如何在局部坐标系中添加它,也没有提及如何添加执行器输入。τ一个τ一个\tau_a 任何帮助将不胜感激。我已经考虑过从另一本书开始,但这将是我花费大量时间重新适应另一种符号的方式。我想继续前进,但是我觉得我离终点线只有几英寸的距离。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.