Sorry for the late answer, these last few days have been very busy for me.
Using root motion and local avoidance is unfortunately quite tricky. The reason is that those two paradigms work against each other to a large part. Root motion restricts the ways that the character can move to only those possible using animations and local avoidance wants to be able to move the character in any way it wants to be able to avoid collisions.
Personally I would recommend using either root motion or local avoidance, but not both. I know that might be a disappointing answer, but I haven’t found nice and stable way to unify them both.
One approach that may work for you is to separate the position of the agent from the position of the rendered agent. If you set ai.updatePosition/ai.updateRotation to false the agent will not longer be synced with the Transform position/rotation. Then you can use root motion to somehow approximate if movement of the agent, and if it gets too far away then you can bypass root motion a bit and move it towards the right spot. This is not something that I have currently implemented in the package however.
Currently I have a script called ‘MecanimBridge’ for using mecanim with this package, however unfortunately I have no example of this in the package yet. The reason is that it has been hard to find a 3D character and animations that I can distribute with this package (there are some Unity built-ins, but they are usually missing one or two animations that I want), most do not allow it because of licensing issues. Right now I’m considering just hiring an animator to make some custom animations that I can distribute in order to get some examples.
I’m sorry that there aren’t any good examples of root motion with this package at the moment.
For an up to date example of some similar code, check this section in the documentation: https://arongranberg.com/astar/docs/iastarai.html#MovementUpdate
Also I cannot really speak for the ICE integration as it is not I who maintain it, it is the ICE developers.