我想找到差动驱动机器人的瞬时旋转中心。

我知道机器人将以特定的线速度和角速度$(v,w)$行进,我可以使用以下等式(在圆弧之后到达指定范围和方位点的路径上给出),结果为:

$$ x_c = x_0-| \ frac {v} {w} | \ cdot sin(\ theta_0)$$
$$ y_c = y_0-| \ frac {v} {w} | \ cdot cos(\ theta_0)$$

我使用的是webots模拟器,并且我为机器人绕圆周运动(恒定的v,w(1,1))转储了gps点,而不是一个$ x_c $和$ y_c $我得到了每个点的中心点。如果我在matlab中进行绘制,效果会不太好:



图像中的红点是感知的中心,它们似乎只是在跟踪曲线本身。

我缺少一些细节吗?我对发生的事情真的很困惑。

我试图找出中心,以便检查障碍物是否在该圆上以及是否会发生碰撞。

#1 楼

很难确切知道发生了什么,特别是在没有看到代码或不了解传感器模型的情况下。就是说,您的轨迹通常是笔直的,因此$ w $几乎是零。这意味着:


在您的大部分实验过程中,您的旋转中心都很远-可能超出了图形的范围;
由于以下原因,您可能会遇到数值稳定性问题:除以极少数的数字。


评论


$ \ begingroup $
我调整了机器人的尺寸,假设机器人的位置/坐标指向中心,并且由于它是差动驱动机器人,所以半径必须是车轮距离的一半...所以现在我得到这样的东西docs.google.com/file/d/0BzLnU1-OKHh7eDZKd3hlUGRwekE / ...这些点已经足够接近,但是中心点就这样。不过,我没有将中心绘制为单个点。您是否认为是因为w太小?如果w为1,那不是太小了吧?那么我应该专注于坐标传感器模型吗?
$ \ endgroup $
–加拿大
2013年6月4日19:33

#2 楼

传感器读数中似乎有些噪音。确保您的模拟器报告的是地面实况,或者您对噪声有一定的容忍度。

请参见此处:http://www.cyberbotics.com/dvd/common/doc/webots/guide/section9。 2.html

特别是


在Supervisor代码中:

获取任何Transform(或派生)节点的3D位置在
主管代码中:您可以使用wb_supervisor_node_get_position()
函数。请检查《参考手册》中此功能的说明。当场景树完全折叠时可见),可以使用wb_supervisor_field_get_sf_vec3f()函数。这是一个示例。

Webots安装中包含一个模拟示例,其中同时显示了GPS和Supervisor
技术,您只需
打开这个世界:$ WEBOTS_HOME /projects/samples/devices/worlds/gps.wbt。



如果实际上状态估计中的噪声是问题(位IF),则
补偿此类错误的方法是使用状态和错误模型的估计值。不幸的是,这超出了问题的范围。如果您想避开障碍物并且可以确定传感器错误是问题所在,我建议您:


在宽频带(粗圆圈)中检查可能代表您的障碍物轨迹出现错误
运行过滤器以获取机器人位置的估计值,然后找到“可能”的碰撞
只在很小的距离内寻找障碍物。从短期来看,您的状态估算值应该不错。

评论


$ \ begingroup $
感谢@Josh。 webots部分不是我真正应该接触的部分,但我一定会调查一下。我正在为此机器人和webots模拟器使用ROS界面。即使有一些传感器噪音,我的估算值也应该彼此接近吗?在某些情况下,我跟踪了一个完整的圆,说v和w为1和1,但是中心偏离了。仅仅是传感器噪音还是我使用的数学方法有问题?即使速度不变化,瞬时旋转中心也保持变化吗?如果只是噪音,有什么办法可以解决吗?
$ \ endgroup $
–加拿大
13年6月3日在16:48

$ \ begingroup $
不,如果V,W和i + 1时刻的机器人位置等于i时刻的位置+从V,W进行的正确更新,则ICR不会改变。如果稍微微调一下新位置, ICR将会改变。较小的角度误差可能会导致大圆的ICR发生较大变化。
$ \ endgroup $
–乔什·范德·胡克(Josh Vander Hook)
13年6月3日在21:34

$ \ begingroup $
谢谢@Josh。有什么办法可以弥补这种错误?我正在尝试像在动态窗口方法中那样实现碰撞检测,并使用障碍物和ICC之间的距离来确定一个点是否在该圆上。
$ \ endgroup $
–加拿大
13年6月4日在2:42

$ \ begingroup $
我已经对问题进行了一点编辑。
$ \ endgroup $
–乔什·范德·胡克(Josh Vander Hook)
13年4月4日在2:59

$ \ begingroup $
谢谢乔希。我试图使用ICC通过计算ICC与障碍物之间的距离并将其与半径(v / w)进行比较来确定障碍物是否位于该曲线上。在这种情况下,这似乎是一个有效的选择吗?
$ \ endgroup $
–加拿大
2013年6月4日19:52