You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Fix format to show contents properly
Lots of contents were not displayed correctly. I empty lines and :math: labels and fixed it.
* Rewrote one subscript as _{rho}
This is just a try to see if subscript renders properly.
* Added a gif animation for move to pose robot
* Added gif; Removed png
* Added the into
* Changed Param. Def. style to bold text
* Added algorithm logic and math
* Update docs/modules/control/move_to_a_pose_control/move_to_a_pose_control.rst
Co-authored-by: Atsushi Sakai <[email protected]>
* Update docs/modules/control/move_to_a_pose_control/move_to_a_pose_control.rst
Co-authored-by: Atsushi Sakai <[email protected]>
* Changed Eqs 1 and 2 color to black
* Added cross-reference labels for Equations 1 and 2
Co-authored-by: Atsushi Sakai <[email protected]>
Copy file name to clipboardExpand all lines: docs/modules/control/move_to_a_pose_control/move_to_a_pose_control.rst
+84-24Lines changed: 84 additions & 24 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,57 +1,111 @@
1
-
Move to a pose control
1
+
Position Control of non-Holonomic Systems
2
+
-----------------------------------------
3
+
4
+
This section explains the logic of a position controller for systems with constraint (non-Holonomic system).
5
+
6
+
The position control of a 1-DOF (Degree of Freedom) system is quite straightforward. We only need to compute a position error and multiply it with a proportional gain to create a command. The actuator of the system takes this command and drive the system to the target position. This controller can be easily extended to higher dimensions (e.g., using Kp_x and Kp_y gains for a 2D position control). In these systems, the number of control commands is equal to the number of degrees of freedom (Holonomic system).
7
+
8
+
To describe the configuration of a car on a 2D plane, we need three DOFs (i.e., x, y, and theta). But to drive a car we only need two control commands (theta_engine and theta_steering_wheel). This difference is because of a constraint between the x and y DOFs. The relationship between the delta_x and delta_y is governed by the theta_steering_wheel.
9
+
10
+
Note that a car is normally a non-Holonomic system but if the road is slippery, the car turns into a Holonomic system and thus it needs three independent commands to be controlled.
11
+
12
+
Move to a Pose Control
2
13
----------------------
3
14
4
-
This is a simulation of moving to a pose control.
15
+
In this section, we present the logic of PathFinderController that drives a car from a start pose (x, y, theta) to a goal pose. A simulation of moving to a pose control is presented below.
Constructs an instantiate of the PathFinderController for navigating a 3-DOF wheeled robot on a 2D plane.
19
32
20
33
Parameters:
21
-
- Kp_rho: The linear velocity gain to translate the robot along a line towards the goal
22
-
- Kp_alpha: The angular velocity gain to rotate the robot towards the goal
23
-
- Kp_beta: The offset angular velocity gain accounting for smooth merging to the goal angle (i.e., it helps the robot heading to be parallel to the target angle.)
34
+
35
+
- | **Kp_rho** : The linear velocity gain to translate the robot along a line towards the goal
36
+
- | **Kp_alpha** : The angular velocity gain to rotate the robot towards the goal
37
+
- | **Kp_beta** : The offset angular velocity gain accounting for smooth merging to the goal angle (i.e., it helps the robot heading to be parallel to the target angle.)
The distance :math:`\rho` is used to determine the robot speed. The idea is to slow down the robot as it gets closer to the target.
70
+
71
+
.. math::
72
+
v = K_P{_\rho} \times\rho\qquad
73
+
:label: eq1
74
+
75
+
Note that for your applications, you need to tune the speed gain, :math:`K_P{_\rho}` to a proper value.
76
+
77
+
To turn the robot and align its heading, :math:`\theta`, toward the target position (not orientation), :math:`\rho\vec{u}`, we need to compute the angle difference :math:`\alpha`.
Constructs an instantiate of the 3-DOF wheeled Robot navigating on a 2D plane
66
121
67
122
Parameters:
68
-
- name : (string) The name of the robot
69
-
- color : (string) The color of the robot
70
-
- max_linear_speed : (float) The maximum linear speed that the robot can go
71
-
- max_angular_speed : (float) The maximum angular speed that the robot can rotate about its vertical axis
72
-
- path_finder_controller : (PathFinderController) A configurable controller to finds the path and calculates command linear and angular velocities.
123
+
124
+
- | **name** : (string) The name of the robot
125
+
- | **color** : (string) The color of the robot
126
+
- | **max_linear_speed** : (float) The maximum linear speed that the robot can go
127
+
- | **max_angular_speed** : (float) The maximum angular speed that the robot can rotate about its vertical axis
128
+
- | **path_finder_controller** : (PathFinderController) A configurable controller to finds the path and calculates command linear and angular velocities.
73
129
74
130
Member function(s)
75
131
~~~~~~~~~~~~~~~~~~
76
132
77
133
.. code-block:: ipython3
134
+
78
135
set_start_target_poses(pose_start, pose_target)
79
136
80
137
Sets the start and target positions of the robot.
81
138
82
139
Parameters:
83
-
- pose_start : (Pose) Start postion of the robot (see the Pose class)
84
-
- pose_target : (Pose) Target postion of the robot (see the Pose class)
140
+
141
+
- | **pose_start** : (Pose) Start postion of the robot (see the Pose class)
142
+
- | **pose_target** : (Pose) Target postion of the robot (see the Pose class)
0 commit comments