Wall Following / Obstacle Avoidance

Requests regarding how to set up experiments in ARGoS.
ahyoussef
Posts: 13
Joined: Sat Sep 03, 2016 3:15 pm

Wall Following / Obstacle Avoidance

Postby ahyoussef » Tue Jan 03, 2017 8:03 pm

Hello All,

I'm trying to implement a logic where a footbot can avoid an obstacle without losing focus of its target destination. i've been studying control theory from different sources to understand how it should be done, and im still very puzzled by it.

My robots initially use PSO to get their next step to move to, this logic works well, the robots also moves towards the direction of the points generated by the PSO logic, however when they hit a wall/barrier/obstacle they simply just move the other way of the collision vector generated from the obstacle.

Control Theory Courses like the one from Georgia tech has a very neat FSM that explains and describes a solution to the problem, but i was looking for a simpler way to actually do it.

it is not my area of focus that i implement the obstacle avoidance logic, so i was hoping if it could be easier than i expect it to be.

The help is very much appreciated.

pincy
Site Admin
Posts: 632
Joined: Thu Mar 08, 2012 8:04 pm
Location: Boston, MA
Contact:

Re: Wall Following / Obstacle Avoidance

Postby pincy » Thu Jan 19, 2017 6:46 am

Hello ayoussef,
I'm trying to implement a logic where a footbot can avoid an obstacle without losing focus of its target destination.
Do you mean going to a target while avoiding obstacles?
My robots initially use PSO to get their next step to move to, this logic works well, the robots also moves towards the direction of the points generated by the PSO logic
Are the target points specific locations, or they only designate direction?
however when they hit a wall/barrier/obstacle they simply just move the other way of the collision vector generated from the obstacle
I guess here a code snippet would be helpful to understand what you're calculating more precisely.
Control Theory Courses like the one from Georgia tech has a very neat FSM that explains and describes a solution to the problem, but i was looking for a simpler way to actually do it.
Can you link the specific solution you're referring to?

Cheers,
Carlo
I made ARGoS.

ahyoussef
Posts: 13
Joined: Sat Sep 03, 2016 3:15 pm

Re: Wall Following / Obstacle Avoidance

Postby ahyoussef » Sat Jan 28, 2017 10:23 pm

Hello Professor,

I'm trying to implement a logic where a footbot can avoid an obstacle without losing focus of its target destination.
Do you mean going to a target while avoiding obstacles?
Yes, this is exactly what i'm trying to achieve

My robots initially use PSO to get their next step to move to, this logic works well, the robots also moves towards the direction of the points generated by the PSO logic
Are the target points specific locations, or they only designate direction?
Specific locations X,Y on the arena

however when they hit a wall/barrier/obstacle they simply just move the other way of the collision vector generated from the obstacle.
I guess here a code snippet would be helpful to understand what you're calculating more precisely.
I've changed and removed lots of code parts in hope i reach a solution, currently i only implement the following, but the behaviour has changed where the robots just keeps hitting the obstacle (wall in my case).

Code: Select all

CVector3 globalPosition3d = m_pcPositioningS->GetReading().Position; CVector2 globalPosition2d (globalPosition3d.GetX(), globalPosition3d.GetY()); CQuaternion globalDirection3d = m_pcPositioningS->GetReading().Orientation; CRadians globalZAngle, globalYAngle, globalXAngle; globalDirection3d.ToEulerAngles(globalZAngle, globalYAngle, globalXAngle); CVector2 direction = current.position - globalPosition2d; direction.Rotate(-globalZAngle + ); SetWheelSpeedsFromVector(direction); bool collision; CVector2 collisionPath = DiffusionVector(collision); if(collision) { LOG << "Collision\n"; CVector2 newDirection = direction - collisionPath; newDirection.Rotate(-CRadians::PI_OVER_SIX); SetWheelSpeedsFromVector(newDirection); }
Control Theory Courses like the one from Georgia tech has a very neat FSM that explains and describes a solution to the problem, but i was looking for a simpler way to actually do it.
Can you link the specific solution you're referring to?
https://www.youtube.com/watch?v=U-TWPT0 ... r&index=46

thanks a lot


Return to “How to... ?”