Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

about singularity settings in the code #2

Open
huiwenzhang opened this issue Dec 19, 2024 · 3 comments
Open

about singularity settings in the code #2

huiwenzhang opened this issue Dec 19, 2024 · 3 comments

Comments

@huiwenzhang
Copy link

Hi, I saw the variable singul appears lot of times in the code, and there is a parameter in the yaml used to config the miminum linear velocity to avoid the singularity for the base. Does the variable singul means singularity? If yes, how to interpret the singularity for a mobile robot?

@CK1201
Copy link
Member

CK1201 commented Dec 20, 2024

Hi, thank you for your question!

The variable singul in the code refers to "singularity," specifically the singularity arising from the nonholonomic constraint of a differential-drive mobile base.

A differential-drive mobile base is subject to a nonholonomic constraint, meaning it can only move tangentially in its direction of travel. We plan trajectories in its flat output space, defined by the robot's $x$ and $y$ positions. However, when the robot's linear velocity approaches zero, the system encounters a singularity.

At this singularity (as described in Section III.B of the paper), the robot's orientation—computed from the flat outputs—becomes undefined. Additionally, the angular velocity and angular acceleration of the robot's wheels, derived from these outputs, theoretically approach infinity, causing numerical instability during optimization.

To address this issue, the YAML configuration file includes a parameter that defines a minimum linear velocity threshold. This ensures the robot's linear velocity does not reach zero, thereby avoiding singularities and maintaining computational stability.

Feel free to reach out if you have any further questions or need additional clarification!

@huiwenzhang
Copy link
Author

huiwenzhang commented Dec 23, 2024

Hi, thank you for your question!

The variable singul in the code refers to "singularity," specifically the singularity arising from the nonholonomic constraint of a differential-drive mobile base.

A differential-drive mobile base is subject to a nonholonomic constraint, meaning it can only move tangentially in its direction of travel. We plan trajectories in its flat output space, defined by the robot's x and y positions. However, when the robot's linear velocity approaches zero, the system encounters a singularity.

At this singularity (as described in Section III.B of the paper), the robot's orientation—computed from the flat outputs—becomes undefined. Additionally, the angular velocity and angular acceleration of the robot's wheels, derived from these outputs, theoretically approach infinity, causing numerical instability during optimization.

To address this issue, the YAML configuration file includes a parameter that defines a minimum linear velocity threshold. This ensures the robot's linear velocity does not reach zero, thereby avoiding singularities and maintaining computational stability.

Feel free to reach out if you have any further questions or need additional clarification!

Thank you for yr quick response. So the singularity happens because we plan in the flat output space instead of the original action space, e.g. sampling for linear velocity v and angular veloctity w. Besides, how can avoid the sigularity at the begining and end point, because the velocity always approach to zero.

BTW, what does the mobile_base_opt_gear means?

@CK1201
Copy link
Member

CK1201 commented Jan 2, 2025

Hi, thank you for your question!
The variable singul in the code refers to "singularity," specifically the singularity arising from the nonholonomic constraint of a differential-drive mobile base.
A differential-drive mobile base is subject to a nonholonomic constraint, meaning it can only move tangentially in its direction of travel. We plan trajectories in its flat output space, defined by the robot's x and y positions. However, when the robot's linear velocity approaches zero, the system encounters a singularity.
At this singularity (as described in Section III.B of the paper), the robot's orientation—computed from the flat outputs—becomes undefined. Additionally, the angular velocity and angular acceleration of the robot's wheels, derived from these outputs, theoretically approach infinity, causing numerical instability during optimization.
To address this issue, the YAML configuration file includes a parameter that defines a minimum linear velocity threshold. This ensures the robot's linear velocity does not reach zero, thereby avoiding singularities and maintaining computational stability.
Feel free to reach out if you have any further questions or need additional clarification!

Thank you for yr quick response. So the singularity happens because we plan in the flat output space instead of the original action space, e.g. sampling for linear velocity v and angular veloctity w. Besides, how can avoid the sigularity at the begining and end point, because the velocity always approach to zero.

BTW, what does the mobile_base_opt_gear means?

mobile_base_opt_gear indicates whether the state of the mobile manipulator is optimized at the transition point between forward and backward trajectories.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants