Skip to content

Commit 56defff

Browse files
committed
Auto-merge from CI
2 parents 6249fa4 + 3a0ba5a commit 56defff

File tree

204 files changed

+1120
-1214
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

204 files changed

+1120
-1214
lines changed

docs/Bowler-Kinematics/Advanced_Kinematics/index.html

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -131,30 +131,24 @@
131131
<div class="col-sm-9" role="main">
132132
<div class="bs-docs-section">
133133

134+
<h2 id="jacobian">Jacobian</h2>
134135

135-
##Jacobian
136+
<p>For Kinematic systems, the Task Space is used to describe the global coordinates, where the task is being performed. Forward Kinematics solves for the Task Space based on the robot properties. The Joint Space is the internal robot reference system, which typically includes the joint angles, lengths and offsets. Inverse Kinematics solves for the Joint Space from the Task Space. Both are important ways of modeling jobs and systems, and being able to convert between them are absolutely critical in modeling and job functionality.</p>
136137

137-
For Kinematic systems, the Task Space is used to describe the global coordinates, where the task is being performed. Forward Kinematics solves for the Task Space based on the robot properties. The Joint Space is the internal robot reference system, which typically includes the joint angles, lengths and offsets. Inverse Kinematics solves for the Joint Space from the Task Space. Both are important ways of modeling jobs and systems, and being able to convert between them are absolutely critical in modeling and job functionality.
138+
<p>A Jacobian Matrix defines the physical properties and is used in both Forward and Inverse Kinematics models to translate between the Task and Joint spaces. The Jacobian matrix, which is calculated from the DH parameters and current pose of the system, multiplied by the Joint Space Velocity matrix gives the Task Space Velocity. The Inverse Kinematics side can get much more complicated as adjusting this equation to solve for the Joint space means taking the inverse of the Jacobian matrix.</p>
138139

139-
A Jacobian Matrix defines the physical properties and is used in both Forward and Inverse Kinematics models to translate between the Task and Joint spaces. The Jacobian matrix, which is calculated from the DH parameters and current pose of the system, multiplied by the Joint Space Velocity matrix gives the Task Space Velocity. The Inverse Kinematics side can get much more complicated as adjusting this equation to solve for the Joint space means taking the inverse of the Jacobian matrix.
140+
<h2 id="inverse-jacobian">Inverse Jacobian</h2>
140141

141-
##Inverse Jacobian
142-
143-
By definition, the inverse of a matrix is what needs to be multiplied by a matrix to result in the identity matrix. Only square matrices can have inverses, and not all square matrices can be inverted (and are called noninvertible or singular). In kinematics, the Jacobian matrix size is based on both the number of links and degrees of freedom. The three possible conditions are where the system DOF and the number of links are: equal, greater than or less than. There will only be a square Jacobian when the system DOF and number of links are equal. When the system DOF is greater than the number of links, it is very possible that not all desired states are achievable. When the number of links is greater than the system DOF, over-articulation is possible. This means that there may be multiple poses that give a solution to one particular task space. A 6 link system in a 3 DOF space (x,y,z coordinates) will result in a Jacobian with 3 rows and 6 columns.
142+
<p>By definition, the inverse of a matrix is what needs to be multiplied by a matrix to result in the identity matrix. Only square matrices can have inverses, and not all square matrices can be inverted (and are called noninvertible or singular). In kinematics, the Jacobian matrix size is based on both the number of links and degrees of freedom. The three possible conditions are where the system DOF and the number of links are: equal, greater than or less than. There will only be a square Jacobian when the system DOF and number of links are equal. When the system DOF is greater than the number of links, it is very possible that not all desired states are achievable. When the number of links is greater than the system DOF, over-articulation is possible. This means that there may be multiple poses that give a solution to one particular task space. A 6 link system in a 3 DOF space (x,y,z coordinates) will result in a Jacobian with 3 rows and 6 columns.</p>
144143

145144
<script src="https://gist.github.com/mdiblasi/9925fd3572b30419c425.js"></script>
146145

147-
##Pseudo Jacobian
146+
<h2 id="pseudo-jacobian">Pseudo Jacobian</h2>
148147

149-
Generating the Inverse Jacobian for solving the Inverse Kinematics (assuming achievable poses), isn't possible for non-square Jacobians. In these cases, which are typically iterative rather than analytic, an approximation is appropriate, which is achieved with the Pseudo Jacobian. The Pseudo Jacobian is calculated by manipulating the Jacobian, which has the extra benefit of avoiding a case where two sequential limbs are locked straight out, also known as a singularity condition.
148+
<p>Generating the Inverse Jacobian for solving the Inverse Kinematics (assuming achievable poses), isnt possible for non-square Jacobians. In these cases, which are typically iterative rather than analytic, an approximation is appropriate, which is achieved with the Pseudo Jacobian. The Pseudo Jacobian is calculated by manipulating the Jacobian, which has the extra benefit of avoiding a case where two sequential limbs are locked straight out, also known as a singularity condition.</p>
150149

151150
<script src="https://gist.github.com/mdiblasi/38c718158daeb0dda564.js"></script>
152151

153-
154-
155-
156-
157-
158152

159153
</div>
160154
</div>

docs/Bowler-Kinematics/Analytic_Solver/index.html

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -131,13 +131,14 @@
131131
<div class="col-sm-9" role="main">
132132
<div class="bs-docs-section">
133133

134-
##Analytic Solver Overview
134+
<h2 id="analytic-solver-overview">Analytic Solver Overview</h2>
135135

136-
Simple robot systems can be analytically solved when constraints and degrees of freedom align. Delta robots and 2 link revolute (rotational joint) arms are two examples of such robots that can be analytically analyzed. A delta robot is a system with 3 identical towers or points of rotation, all connecting to one tool tip. Depending on the configuration, it can pivot around a point or traverse the space, mirrored in 120 degree segments around the work space. This is also a great example of Parallel links, whereas a Series system, (like the 2 link revolute arm) is a series of sequential links connected one by one. There is one pose per achievable position since they aren't over-constrained. It may not be possible to fully orient in every position, but mapping forward and inverse kinematics is a direct affair.
136+
<p>Simple robot systems can be analytically solved when constraints and degrees of freedom align. Delta robots and 2 link revolute (rotational joint) arms are two examples of such robots that can be analytically analyzed. A delta robot is a system with 3 identical towers or points of rotation, all connecting to one tool tip. Depending on the configuration, it can pivot around a point or traverse the space, mirrored in 120 degree segments around the work space. This is also a great example of Parallel links, whereas a Series system, (like the 2 link revolute arm) is a series of sequential links connected one by one. There is one pose per achievable position since they arent over-constrained. It may not be possible to fully orient in every position, but mapping forward and inverse kinematics is a direct affair.</p>
137137

138-
##Analytic Solver Techniques
138+
<h2 id="analytic-solver-techniques">Analytic Solver Techniques</h2>
139139

140-
Direct systems can be analyzed as a series of linear equations or simplified to laws of triangles. A 2 link planar arm reaching for a point in 2D space has a limited number of ways to solve the end point. The base position and end point are known, so the end position of link 1 is the unknown. Drawing out the system to find that link position and with that the associated angles means equations of motion can be determined with a few simple lines of code or lower level math. There is no standard algorithm for finding the ideal pose, and it does not need to be recursively run for optimization purposes.
140+
<p>Direct systems can be analyzed as a series of linear equations or simplified to laws of triangles. A 2 link planar arm reaching for a point in 2D space has a limited number of ways to solve the end point. The base position and end point are known, so the end position of link 1 is the unknown. Drawing out the system to find that link position and with that the associated angles means equations of motion can be determined with a few simple lines of code or lower level math. There is no standard algorithm for finding the ideal pose, and it does not need to be recursively run for optimization purposes.</p>
141+
141142
</div>
142143
</div>
143144
</div> <!-- row -->

docs/Bowler-Kinematics/CAD_Scripts/index.html

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -131,11 +131,12 @@
131131
<div class="col-sm-9" role="main">
132132
<div class="bs-docs-section">
133133

134-
##CAD Scripts
134+
<h2 id="cad-scripts">CAD Scripts</h2>
135135

136-
Simulating is great for prototyping, finding issues and tweaking the design before much time or materials are invested. The next logical step is hardware, which is accomplished in Bowler Studio through the use of CAD Scripts. Once the design and function are sufficient, exporting to CAD for 3D printing, machining or other rapid prototyping methods is a simple button press away. Installing standard servos and connections couldn't be simpler, allowing for robots to go through the entire design process up to initial build quicker than ever before!
136+
<p>Simulating is great for prototyping, finding issues and tweaking the design before much time or materials are invested. The next logical step is hardware, which is accomplished in Bowler Studio through the use of CAD Scripts. Once the design and function are sufficient, exporting to CAD for 3D printing, machining or other rapid prototyping methods is a simple button press away. Installing standard servos and connections couldnt be simpler, allowing for robots to go through the entire design process up to initial build quicker than ever before!</p>
137137

138-
Allowing a designer to concentrate fully on function rather than form or compatibility allows for a richer design experience, as well as lowered development time. Robot arms, walkers or mobile robot platforms can be great productivity (or educational) tools and with the capability to have the non-function design work automated more advanced systems are possible faster than one can be ordered. Full system approaches like Bowler Studio lower the bar for manufacturing and learning yet raise the standard on robot design.
138+
<p>Allowing a designer to concentrate fully on function rather than form or compatibility allows for a richer design experience, as well as lowered development time. Robot arms, walkers or mobile robot platforms can be great productivity (or educational) tools and with the capability to have the non-function design work automated more advanced systems are possible faster than one can be ordered. Full system approaches like Bowler Studio lower the bar for manufacturing and learning yet raise the standard on robot design.</p>
139+
139140
</div>
140141
</div>
141142
</div> <!-- row -->

docs/Bowler-Kinematics/CustomKinematics/index.html

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,9 +131,11 @@
131131
<div class="col-sm-9" role="main">
132132
<div class="bs-docs-section">
133133

134-
Users can customize the kinematics engine with user defined D-H chains as well as custom Inverse Kinematics solvers. This lets the user define every part of the kinematic chain and control law.
134+
<p>Users can customize the kinematics engine with user defined D-H chains as well as custom Inverse Kinematics solvers. This lets the user define every part of the kinematic chain and control law. </p>
135135

136-
<script src="https://gist.github.com/madhephaestus/0e6454891a3b3f7c8f28.js"></script>
136+
<script src="https://gist.github.com/madhephaestus/0e6454891a3b3f7c8f28.js"></script>
137+
138+
137139
</div>
138140
</div>
139141
</div> <!-- row -->

docs/Bowler-Kinematics/Iterative_Solver/index.html

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -131,19 +131,20 @@
131131
<div class="col-sm-9" role="main">
132132
<div class="bs-docs-section">
133133

134-
##Iterative Solver Overview
134+
<h2 id="iterative-solver-overview">Iterative Solver Overview</h2>
135135

136-
Complex robot systems may not have a 'one-size fits all' solution to kinematics, and require some sort of decision or criteria matrix to specify and choose tool paths. Robots that have many limbs may have a large array of possible solution poses, so building a robust system to prioritize hypothetical energy efficiency, torque curves or minimize link motion can take a control system to the next level. With more conditionals, optimizations and search criteria, the control algorithm greatly expands in complexity and computational requirements.
136+
<p>Complex robot systems may not have a one-size fits all solution to kinematics, and require some sort of decision or criteria matrix to specify and choose tool paths. Robots that have many limbs may have a large array of possible solution poses, so building a robust system to prioritize hypothetical energy efficiency, torque curves or minimize link motion can take a control system to the next level. With more conditionals, optimizations and search criteria, the control algorithm greatly expands in complexity and computational requirements.</p>
137137

138-
##Iterative Solver Techniques
138+
<h2 id="iterative-solver-techniques">Iterative Solver Techniques</h2>
139139

140-
Standard binary search tree methods work by looking at branches to see which option is better. By traversing the tree it's possible to directly compare each branch path and find the optimal path through the system, and by iteratively repeating the search, the ideal matches can be found.
140+
<p>Standard binary search tree methods work by looking at branches to see which option is better. By traversing the tree its possible to directly compare each branch path and find the optimal path through the system, and by iteratively repeating the search, the ideal matches can be found. </p>
141141

142-
The kinematic equivalent of this function is to have a starting pose, and 'build the tree' towards the desired end conditions. Starting from a base position, shift the first link one step in either direction (clockwise and counterclockwise, forward and back, etc) and determine which one is closer to the end state, and saving that state. Next, go to the next link and do the same thing, finding which direction a single step would provide a larger step towards the end goals. When each link is tested this way, the whole operation is started again from the top, repeated until the end conditions are met or a timeout is reached.
142+
<p>The kinematic equivalent of this function is to have a starting pose, and build the tree towards the desired end conditions. Starting from a base position, shift the first link one step in either direction (clockwise and counterclockwise, forward and back, etc) and determine which one is closer to the end state, and saving that state. Next, go to the next link and do the same thing, finding which direction a single step would provide a larger step towards the end goals. When each link is tested this way, the whole operation is started again from the top, repeated until the end conditions are met or a timeout is reached.</p>
143143

144-
Gradient Descent is another iterative kinematic model, which maps the entire achievable space of the system. By rating each pose in a 2D or 3D grid, it's possible to trace through the map to find the ideal path or system state, although compared to other methods it is typically much more computationally expensive as there can be a lot of achievable poses that may not be realistic but still take up more than a small level of computation power and time.
144+
<p>Gradient Descent is another iterative kinematic model, which maps the entire achievable space of the system. By rating each pose in a 2D or 3D grid, its possible to trace through the map to find the ideal path or system state, although compared to other methods it is typically much more computationally expensive as there can be a lot of achievable poses that may not be realistic but still take up more than a small level of computation power and time.</p>
145145

146-
<img src="/img/IterativeKinematicSolver.png" alt="Iterative Kinematics Example" class="img-responsive">
146+
<p><img src="/img/IterativeKinematicSolver.png" alt="Iterative Kinematics Example" class="img-responsive" /></p>
147+
147148
</div>
148149
</div>
149150
</div> <!-- row -->

0 commit comments

Comments
 (0)