unity – How to calculate the force for the fragments correctly?

I have a wall on which you can shoot cannonballs from a cannon, after hitting, I replace the wall with fragments of it.

How to correctly apply force to the fragments of the wall after being hit?

private void OnCollisionEnter(Collision collision)
{
    if (collision.gameObject.CompareTag("CannonBall")) {
        var fragments = Instantiate(_fragmentsPrefab);
        fragments.transform.position = transform.position;
        gameObject.setActive(false);
        Physics.SyncTransforms();
        var rigidbodies = fragments.GetComponentsInChildren<Rigidbody>();
        foreach (var rigidbody in rigidbodies) {
            rigidbody.AddForce(collision.relativeForce, ForceMode.Impulse);
        }
    }
}

I wrote this code but it doesn’t work as realistically as I wanted.