Java 机器人在碰撞时跨越边界,而不是在实施粒子滤波时反弹
我已经编写了下面的代码,我正在尝试创建一个粒子过滤器。我面临的问题是,即使在使用交叉方法和其他条件后,机器人有时也会与障碍物重叠。此外,它会在一次又一次的摆动后通过左上角离开边界 我检查碰撞情况,然后如果有碰撞,我将机器人反向移动x 我通过以下方法计算金额x,其中x表示当前位置Java 机器人在碰撞时跨越边界,而不是在实施粒子滤波时反弹,java,swing,collision-detection,Java,Swing,Collision Detection,我已经编写了下面的代码,我正在尝试创建一个粒子过滤器。我面临的问题是,即使在使用交叉方法和其他条件后,机器人有时也会与障碍物重叠。此外,它会在一次又一次的摆动后通过左上角离开边界 我检查碰撞情况,然后如果有碰撞,我将机器人反向移动x 我通过以下方法计算金额x,其中x表示当前位置 public void setXPosition_robot(int x) { double distance=0; distance = unit_moved + randomD
public void setXPosition_robot(int x)
{
double distance=0;
distance = unit_moved + randomDouble(0, forwardNoise);
robot_x= (int) (x + Math.sin(Math.toRadians(robot_orientation))*distance);
//System.out.println("Robot_X:"+robot_x);
}
我正在使用以下代码检查碰撞:
private void adjustRobotOrientation(Graphics2D g)
{
int x=robot_x;
int y=robot_y;
if((x<0)&&(y<0))
{
robot_orientation=robot_orientation+randomDouble(160, 180);
}
if((x>620)||((y>395))||((x<1))||((y<1)))
{
robot_orientation=robot_orientation+randomDouble(160, 220);
}
}
private void collisionAvoidanceRobot(int x, int y, int r)
{
boolean collide1=false;
boolean collide2=false;
boolean collide3=false;
boolean collide4=false;
boolean collide5=false;
boolean collide6=false;
x+=unit_moved;
y+=unit_moved;
Shape collisionrobot=new Ellipse2D.Double(x,y,r,r);
collide1=collisionrobot.intersects(obst1);
if(collide1)
{
robot_orientation=robot_orientation+randomDouble(160, 220);
}
collide2=collisionrobot.intersects(obst2);
if(collide2)
{
robot_orientation=robot_orientation+randomDouble(160, 220);
}
collide3=collisionrobot.intersects(obst3);
if(collide3)
{
robot_orientation=robot_orientation+randomDouble(160, 220);
}
collide4=collisionrobot.intersects(obst4);
if(collide4)
{
robot_orientation=robot_orientation+randomDouble(160, 220);
}
collide5=collisionrobot.intersects(obst5);
if(collide5)
{
robot_orientation=robot_orientation+randomDouble(160, 220);
}
collide6=collisionrobot.intersects(obst6);
if(collide6)
{
robot_orientation=robot_orientation+randomDouble(160, 220);
}
}
private void adjustmentrobotorientation(图形2d g)
{
int x=机器人_x;
int y=机器人y;
如果((x395))| |((x如果机器人的速度使其在时钟节拍之间通过障碍物,则不会检测到碰撞。您可以
- 如所引用的
KineticModel
中所示,使用更细的记号和更大的对象来消除这种效果
- 如图所示,预测效果并对其进行补偿
这两个例子都使用了所引用的向量方法。1)为了更快地获得更好的帮助,请发布一个(最小、完整、可验证的例子)。将其发布在此处,而不是链接上。2)另请参见。如果adjustRobotOrientation
中的第一个如何处理?