标签: robotics

如何在Microsoft Robotics Studio 2.0中创建新类型的实体?

我正在尝试用MRS来教自己一些基本的AI; 我想要做的是制造一个火箭实体,包括矢量排气和分段.任何人都知道如何制作一个可以飞行的实体?或者我只需要不断向上施力?

robotics artificial-intelligence robotics-studio

6
推荐指数
1
解决办法
452
查看次数

单元测试具有不可预测的外部依赖性的代码

我参与了一个项目,除其他外,必须控制各种实验室仪器(机器人,读者等......)

大多数这些仪器都是通过基于DCOM的驱动程序,串行端口或通过启动具有各种参数的专有程序来控制的.其中一些程序或驱动程序包括模拟模式,有些则不包括.显然,我的开发计算机无法连接到所有仪器,虽然我可以为驱动程序包含模拟模式的仪器启动虚拟机,但如果没有实际仪器,则无法测试某些内容.

现在,我自己的代码主要不是关于仪器的实际操作,而是关于启动操作,确保一切正常,并在它们之间进行同步.它是用Java编写的,使用各种库与仪器及其驱动程序进行交互.

我想为各种仪器控制模块编写单元测试.但是,因为仪器可以在很多方面失败(其中一些是记录的,其中一些不是),因为代码依赖于这些部分随机输出,我对于如何为这些部分编写单元测试有点迷失.我的代码.我考虑过以下解决方案:

  • 只测试连接的实际仪器,可能是最准确的方法,但它根本不实用(在读卡器中插入板,运行单元测试,移除板,运行单元测试等......),更不用说有潜在危险了,
  • 使用模拟对象来模拟与事物实际通信的部分; 虽然这个肯定更容易实现(和运行),但它可能无法再现所有潜在的失败(如上所述,很多都是无证的,有时会导致不良意外)

虽然我目前正在考虑与后者合作,但我错过了一些东西吗?有一个更好的方法吗?

java junit robotics

6
推荐指数
1
解决办法
331
查看次数

使用单应性描述两个图像之间的非线性变换

已经在两个图像上的蓝点之间建立了一对一点匹配.image2是image1的扭曲版本.失真模型似乎是眼鱼镜头失真.问题是:有没有办法计算描述这种转变的转换矩阵.实际上是一个矩阵,它将第一张图像上的蓝点转换为第二张图像上相应的蓝点?这里的问题是我们不知道焦距(意味着图像是未经校准的),但是我们确实在两幅图像上的大约200个点之间进行了完美匹配. 此搜索(原) 扭曲的图像: eimage2

robotics image-processing computer-vision projective-geometry camera-calibration

6
推荐指数
1
解决办法
1494
查看次数

如何正确计算三角洲机器人的直接运动学?

我正在尝试为三角洲机器人组合一个简单的模拟,我想使​​用正向运动学(直接运动学)通过传递3个角度来计算末端执行器在空间中的位置.

我开始使用Trossen机器人论坛Delta机器人教程,我可以理解大部分数学,但不是全部.当我试图计算3个球体相交的点时,我在前向运动学的最后部分迷路了.我一般都看过球面坐标,但无法找出用于找到旋转的两个角度(到E(x,y,z)).我看到他们正在解决球体的方程式,但这就是我迷失的地方.

三角机器人直接运动学

三角机器人直接运动学

三角机器人直接运动学

三角洲机器人是并联机器人(意味着基座和末端执行器(头部)始终保持平行).基部和末端执行器是等边三角形,腿(通常)放置在三角形边的中间.

Delta机器人底座的侧面有标记f.三角机器人的效应器的一侧被标记e.腿的上部标记rf,下侧re.

原点(O)位于基本三角形的中心.伺服电机位于基本三角形的中间(F1,F2,F3).关节标记为J1,J2,J3.小腿在点E1,E2,E3处连接末端执行器,并且E是末端执行器三角形的中心.

我可以轻松计算点F1,F2,F3和J1,J2,J3.这是E1,E2,E3我遇到了问题.根据解释,我理解J1点向内翻转一点(末端效应器的中位数的一半)到J1',它成为半径re(小腿长度)的球体的中心.对所有关节执行此操作将导致3个球体在相同位置相交:E(x,y,z).通过求解球面方程,我们找到E(x,y,z).

还有一个公式解释:

dk等式1

dk等式2 但这就是我迷路的地方.我的数学技能不是很好.有人可以用更简单的方式解释这些,因为我们对数学的了解较少吗?

我还使用了提供的示例代码(如果您有支持WebGL的浏览器),您可以在这里运行.单击并拖动以旋转场景.为了控制三个角度,使用q/Q,w/W,e/E来减小/增加角度.

完整代码清单:

//Rhino measurements in cm
final float e = 21;//end effector side
final float f = 60.33;//base side
final float rf = 67.5;//upper leg length - radius of upper sphere
final float re = 95;//lower leg length - redius of lower sphere (with offset will join in E(x,y,z))

final float sqrt3 = sqrt(3.0);
final float sin120 = …
Run Code Online (Sandbox Code Playgroud)

java math robotics kinematics computational-geometry

6
推荐指数
1
解决办法
1万
查看次数

无人机的虚拟测试环境

有没有人知道机器人开发者环境非常适合测试无人机的AI程序(例如,四轴飞机,飞机,直升机等)?我想像微软机器人开发者工作室这样的东西,包括虚拟环境(如带有重力,风等的室外环境)来测试飞行动力学.我想选择向虚拟无人机添加传感器,例如gps,高度计,陀螺仪等,然后AI程序可以使用它来操纵无人机.

robotics artificial-intelligence machine-learning robotics-studio ar.drone

6
推荐指数
1
解决办法
845
查看次数

根据旋转角度计算新的点偏移量?

我正在处理一个过去几周的申请,涉及一些三角学,目前我被困住了.如下图所示,我有一个圆形项目(位置#1的绿色圆圈),我知道中心点(让我们称之为X1,Y1).圆圈有另一个点(橙色圆圈)偏离中心位置 - 在另外两个标记(蓝色圆圈)之间.这些标记可以四处移动.计算橙色点的坐标(我们称之为X2,Y2),并计算蓝色线相对于圆的水平线的角度(称之为角度).

图

我可以通过以下方式计算圆心和点之间的差异:

deltaX = X2-X1

deltaY = Y2-Y1

我需要移动并旋转绿色圆圈(CW或CCW - 以较短者为准)从它的起始位置(位置1)到位置2.这意味着角度可以是负的或正的.蓝线必须以垂直方向结束,橙色点位于位置2的中心(红色方块).我知道位置2中心的坐标(让我们称之为X3,Y3).位置#1和位置#2彼此正好相差90度.

我以为我可以使用一些计算点的旋转的trig标识公式,如下所示:

offsetX = deltaX*cos(90-Angle) - deltaY*sin(90-Angle)

offsetY = deltaX*sin(90-Angle)+ deltaY*cos(90-Angle)

当我移动/旋转到位置2时,我希望这些偏移是我需要将圆圈调整到它的新中心.

X3 = X3 + offsetX

Y3 = Y3 + offsetY

但是,当我尝试使用这个数学时,它不会将圆圈的橙色标记放在方形的中心.不确定我的方程和计算是否正确,基于旋转角度(正或负,CW或CCW)或我是否正确使用角度(我从90度减去已知角度).如何正确计算最终点/位置?任何帮助和示例将不胜感激!

非常感谢您的宝贵时间!

.net c# math robotics trigonometry

6
推荐指数
1
解决办法
4484
查看次数

理解逆运动学 pybullet

我正在尝试使用pybullet中的模拟 PR2 机器人进行笛卡尔控制。在 pybullet 中,函数calculateInverseKinematics(...)可以选择采用关节下限、上限、关节范围和静止姿势来进行零空间控制。

首先,使用零空间控制而不是“常规”逆运动学可以获得什么实际好处?

其次,为什么要指定关节范围,这不完全是由上下限决定的吗?连续关节的范围是多少?

休息姿势到底是什么?这只是机器人开始执行任务之前的初始姿势吗?

robotics inverse-kinematics bulletphysics

6
推荐指数
1
解决办法
6499
查看次数

如何避免机器人陷入局部最小?

我有一些时间占据机器人的运动规划,并且有一段时间想要探索改善"潜在领域"方法提供的机会的可能性.我的挑战是避免在使用"势场"方法时机器人被困在"局部最小值".我没有使用"随机游走"方法来避免机器人陷入困境,而是考虑是否有可能实现A*的变体,这可以作为一种准确的指南,以避免机器人被困在"当地最低".

是否有这种经验,或者可以参考文献,它们以比"随机游走"方法中使用的更有效的方式避免局部最小化.

robotics a-star motion-planning

5
推荐指数
1
解决办法
1348
查看次数

Python中的机器人运动

我正在尝试编程一个机器人来移动.机器人根据当前的位置移动.有四个地方可以:

LOCATION1 Motion Plan is like so,
5 6
3 4
1 2
Initial positon is (x1,y1)
This gets coded as (x1,y1)->(x1+dx,y1)->(x1,y1+dy)->(x1+dx,y1+dy) ... and so on

LOCATION2 Motion Plan is like so,
5 3 1
6 4 2
The initial position is (x1,y1)
This gets coded as (x1,y1)->(x1,y1-dy)->(x1-dx,y1)->(x1-dx,y1-dy) ... and so on

LOCATION3 Motion Plan is like so,
6 5
4 3
2 1
Initial positon is (x1,y1)
This gets coded as (x1,y1)->(x1-dx,y1)->(x1,y1+dy)->(x1-dx,y1+dy) ... and so on

LOCATION4 Motion Plan …
Run Code Online (Sandbox Code Playgroud)

python robotics

5
推荐指数
1
解决办法
842
查看次数

室内自主机器人位置检测

我制造了一个由Arduino和Processing控制的机器人,它通过自身旋转(如球体)在房间内移动.

我需要的是能够在地板上移动后获得新位置(假设在一个3米x 3米的房间内).我正在使用9DOF传感器(3轴加速度计数据,3轴陀螺仪和3轴磁数据)来确定其滚转,俯仰和偏航以及它的方向.

如何准确识别机器人在笛卡尔坐标(x,y,z)坐标相对于其起始位置的位置?我不能使用GPS,因为每次旋转运动少于20厘米,机器人将在室内使用.

我找到了一些室内测距和3D定位解决方案,如pozyx或使用固定相机.但是我需要它具有成本效益.

有没有办法转换9DOF数据以获得新位置或任何其他传感器来做到这一点?任何其他解决方案,如算法?

robotics artificial-intelligence arduino sensor sensor-fusion

5
推荐指数
1
解决办法
983
查看次数