0
$\begingroup$

My application is not specifically in Robotics, but the problem that I'm trying to solve seems to have been studied primarily from the viewpoint of Robotics, so I am hoping to get an answer here. Apologies if it's not the correct place.

Problem description

I am creating a virtual human agent in Unity. The agent will primarily interact with blocks on a table by sliding or carrying them from one point to another in 3D. Apart from the constraints that accompany human arms, the planned path should not result in arm colliding with other blocks, nor should the blocks collide with one another. The former case is a possibility since blocks could possibly be stacked on top of one another to form towers.

My solution

I don't have any experience in Robotics, so my solution may not be the best: First, use an IK solver to find initial and goal arm orientations, so I have initial and goal state in configuration space. This could be done by an IK solver. I'm thinking to use Cyclic Coordinate Descent, since it feels very easy to implement. Next, I'd have to implement RRT-Connect to find the path between those configurations. My knowledge on this is limited to what I've read in the RRT-Connect paper.

Questions

My questions are three-fold:

  • Does the stated approach seem to be reasonable? Lacking background in Robotics, I'm afraid I might be missing something obvious.
  • Is there a way to find initial and goal configurations for arm that are also collision free?
  • Finally, in the tradition of being lazy as a programmer, I've been looking at OMPL to use an existing implementation for a path planner, especially since there are so many, and they'll also be well optimized. Problem is I'm not sure if there's a way to build it for .NET (C#) since that's what is used in Unity for scripting.

Any help would be greatly appreciated!

$\endgroup$
2
  • $\begingroup$ One complexity, depending on how accurately you model the human arm, will be how you resolve the arm’s redundancy. You may need to wrap the IK solver with an optimization schema. And that’s only if you consider the arm revolute motions - if you add items such as shoulder shrugs or soft tissue effects, the IK solutions get even more challenging. $\endgroup$
    – SteveO
    Jan 22, 2019 at 18:36
  • $\begingroup$ @SteveO Interesting. I'm not looking to model the arm too realistically, as I'm only considering 7 DOF. However, the character may need to lean over, so maybe that adds 2 DOF due to the spine base? I'm not familiar with soft tissue effects, do you mean expansion of bones? If so, I'm not looking at that either. $\endgroup$
    – oczkoisse
    Jan 22, 2019 at 22:49

1 Answer 1

1
$\begingroup$

The steps you have identified are correct.

  1. You will need an IK solver if you want to plan in Cartesian space. Cyclic Coordinate Descent is one OK option if you always solve for points which are close to eachother. However, I would advise to look at Unity IK solvers. It will probably save you some time in implementation.

  2. RRT Connect is one option which is fairly easy to implement. Instead trying to include OMPL in a Unity3D Project, you might want to search for Unity3D implementations of RRT Connect or similar algorithms. There is TRRT open source for example, which might serve as in inspiration for implementation. As I know, Unity3D offers only 2D navigation algorithms "out of the box", however there are some path planning assets available in the assets store. One free asset which support 3D path planning is this, but you can look for others, maybe non-free ones also.

$\endgroup$
1
  • $\begingroup$ Thanks for replying. I've been looking at Unity IK, but apparently the implementation only allows one to control IK in the arm. The agent cannot lean over. FinalIK might be another option. Another problem is that I don't know if these products actually allow me to solve an IK problem to get initial and goal configurations without animating the character itself. Interesting find on TRRT, will take a look at it. Polarith AI doesn't seem to cover path finding for arms specifically, and I couldn't find an asset that does this as well. Can it be generalized for this scenario? $\endgroup$
    – oczkoisse
    Jan 21, 2019 at 18:50

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.