Fixing youtube video sizes and math equations
This commit is contained in:
parent
5cf8ff1330
commit
784fd7ca08
5 changed files with 96 additions and 67 deletions
119
config.yaml
119
config.yaml
|
@ -40,66 +40,71 @@ module:
|
|||
target: static/fonts
|
||||
|
||||
markup:
|
||||
defaultMarkdownHandler: goldmark
|
||||
goldmark:
|
||||
duplicateResourceFiles: false
|
||||
extensions:
|
||||
cjk:
|
||||
eastAsianLineBreaks: false
|
||||
eastAsianLineBreaksStyle: simple
|
||||
enable: false
|
||||
escapedSpace: false
|
||||
definitionList: true
|
||||
extras:
|
||||
delete:
|
||||
enable: false
|
||||
insert:
|
||||
enable: false
|
||||
mark:
|
||||
enable: false
|
||||
subscript:
|
||||
enable: false
|
||||
superscript:
|
||||
enable: false
|
||||
footnote: true
|
||||
linkify: true
|
||||
linkifyProtocol: https
|
||||
passthrough:
|
||||
delimiters:
|
||||
block: []
|
||||
inline: []
|
||||
enable: false
|
||||
strikethrough: true
|
||||
table: true
|
||||
taskList: true
|
||||
typographer:
|
||||
apostrophe: '’'
|
||||
disable: false
|
||||
ellipsis: '…'
|
||||
emDash: '—'
|
||||
enDash: '–'
|
||||
leftAngleQuote: '«'
|
||||
leftDoubleQuote: '“'
|
||||
leftSingleQuote: '‘'
|
||||
rightAngleQuote: '»'
|
||||
rightDoubleQuote: '”'
|
||||
rightSingleQuote: '’'
|
||||
parser:
|
||||
attribute:
|
||||
block: false
|
||||
title: true
|
||||
autoHeadingID: true
|
||||
autoHeadingIDType: github
|
||||
wrapStandAloneImageWithinParagraph: true
|
||||
renderHooks:
|
||||
image:
|
||||
enableDefault: false
|
||||
link:
|
||||
enableDefault: false
|
||||
renderer:
|
||||
hardWraps: false
|
||||
unsafe: true
|
||||
xhtml: false
|
||||
|
||||
# markup:
|
||||
# defaultMarkdownHandler: goldmark
|
||||
# goldmark:
|
||||
# duplicateResourceFiles: false
|
||||
# extensions:
|
||||
# cjk:
|
||||
# eastAsianLineBreaks: false
|
||||
# eastAsianLineBreaksStyle: simple
|
||||
# enable: false
|
||||
# escapedSpace: false
|
||||
# definitionList: true
|
||||
# extras:
|
||||
# delete:
|
||||
# enable: false
|
||||
# insert:
|
||||
# enable: false
|
||||
# mark:
|
||||
# enable: false
|
||||
# subscript:
|
||||
# enable: false
|
||||
# superscript:
|
||||
# enable: false
|
||||
# footnote: true
|
||||
# linkify: true
|
||||
# linkifyProtocol: https
|
||||
# passthrough:
|
||||
# delimiters:
|
||||
# block: []
|
||||
# inline: []
|
||||
# enable: false
|
||||
# strikethrough: true
|
||||
# table: true
|
||||
# taskList: true
|
||||
# typographer:
|
||||
# apostrophe: '’'
|
||||
# disable: false
|
||||
# ellipsis: '…'
|
||||
# emDash: '—'
|
||||
# enDash: '–'
|
||||
# leftAngleQuote: '«'
|
||||
# leftDoubleQuote: '“'
|
||||
# leftSingleQuote: '‘'
|
||||
# rightAngleQuote: '»'
|
||||
# rightDoubleQuote: '”'
|
||||
# rightSingleQuote: '’'
|
||||
# parser:
|
||||
# attribute:
|
||||
# block: false
|
||||
# title: true
|
||||
# autoHeadingID: true
|
||||
# autoHeadingIDType: github
|
||||
# wrapStandAloneImageWithinParagraph: true
|
||||
# renderHooks:
|
||||
# image:
|
||||
# enableDefault: false
|
||||
# link:
|
||||
# enableDefault: false
|
||||
# renderer:
|
||||
# hardWraps: false
|
||||
# unsafe: true
|
||||
# xhtml: false
|
||||
|
||||
# Site parameters
|
||||
params:
|
||||
|
|
|
@ -26,10 +26,17 @@ Collaborated with:
|
|||
|
||||
An automated system that creates a seamless home-game experience by automating the tedious and repetitive tasks that occur during a game of cards while lowering the barrier of entry of knowledge for complex games, focusing on Texas Hold 'Em Poker as a proof of concept.
|
||||
|
||||
<div align="center">
|
||||
<iframe width="560" height="315" src="https://www.youtube.com/embed/PsuNezDvL1I" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
|
||||
<div style="position: relative; width: 100%; padding-top: 56.25%; margin: auto;">
|
||||
<iframe
|
||||
src="https://www.youtube.com/embed/PsuNezDvL1I"
|
||||
style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;"
|
||||
frameborder="0"
|
||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
|
||||
allowfullscreen>
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
|
||||
**Update (April 11, 2023): We won first place at the [Northeastern ECE Capstone Expo](https://coe.northeastern.edu/news/teams-share-top-honors-in-electrical-and-computer-engineering-capstone-presentations/)!**
|
||||
|
||||
## System Overview
|
||||
|
|
|
@ -24,7 +24,13 @@ This project incorporates several robotics concepts to perform a pick and place
|
|||
## Omnidirectional Mobile Base Kinematics (Mecanum Wheels)
|
||||
This robot uses mecanum wheels, which are omnidirectional wheels with 45-degree rollers that allow the robot to move in any direction without changing its orientation. When controlling the robot, we command the wheel velocities, which can be described by the following equation:
|
||||
|
||||
$$ u_i=\frac{1}{r_i}\overbrace{\begin{bmatrix}1 & \tan\gamma_i\end{bmatrix}}^{\text{driving direction}}\underbrace{\begin{bmatrix}\cos\beta_i & \sin\beta_i \\\ -\sin\beta_i & \cos\beta_i\end{bmatrix}}_{\text{linear velocity in wheel frame}} \overbrace{\begin{bmatrix}-y_i & 1 & 0 \\\ x_i & 0 & 1\end{bmatrix}}^{\text{linear velocity in body frame}} V_b $$
|
||||
<div style="overflow-x: auto; width: 100%;">
|
||||
\[
|
||||
u_i=\frac{1}{r_i}\overbrace{\begin{bmatrix}1 & \tan\gamma_i\end{bmatrix}}^{\text{driving direction}}
|
||||
\underbrace{\begin{bmatrix}\cos\beta_i & \sin\beta_i \\ -\sin\beta_i & \cos\beta_i\end{bmatrix}}_{\text{linear velocity in wheel frame}}
|
||||
\overbrace{\begin{bmatrix}-y_i & 1 & 0 \\ x_i & 0 & 1\end{bmatrix}}^{\text{linear velocity in body frame}} V_b
|
||||
\]
|
||||
</div>
|
||||
|
||||
where:
|
||||
- \\(u_i\\) is the wheel velocity
|
||||
|
@ -122,10 +128,12 @@ trajectory = np.concatenate(
|
|||
## Odometry
|
||||
Odometry is the process of estimating the mobile robot's pose by integrating the wheel velocities. The robot's pose is represented by the chassis configuration \\([\phi, x, y]\\), where \\(\phi\\) is the orientation and \\(x, y\\) are the position in the world frame. We can compute the body twist \\(V_b\\) using the wheel velocities \\(\dot{\theta}\\), the timestep \\(\Delta t\\), and the chassis configuration \\( F=pinv(H(0))\\):
|
||||
|
||||
$$
|
||||
<div style="overflow-x: auto; width: 100%;">
|
||||
\[
|
||||
\dot{\theta} = \Delta\theta / \Delta t \\\
|
||||
V_b = \underbrace{H(0)^{\dagger}}_{F} \cdot \dot{\theta}
|
||||
$$
|
||||
\]
|
||||
</div>
|
||||
|
||||
The body twist \\(V_b\\) can be integrated to get the displacement \\(T_{bk} = exp([V_b])\\), which is then applied to the chassis configuration to get the new pose.
|
||||
|
||||
|
@ -166,9 +174,11 @@ def odometry(chassis_config: np.array, delta_wheel_config: np.array) -> np.array
|
|||
## Task-Space Feedforward & Feedback Control
|
||||
To perform the pick and place task, we need to implement a control law that can track a desired end-effector trajectory. The control law is given by:
|
||||
|
||||
$$
|
||||
<div style="overflow-x: auto; width: 100%;">
|
||||
\[
|
||||
V_e(t) = \overbrace{[Ad_{X^{-1}X_d}]V_d(t)}^{\text{Feedforward}} + K_pX_{err}(t) + K_i \int X_{err}(t)
|
||||
$$
|
||||
\]
|
||||
</div>
|
||||
|
||||
where:
|
||||
- \\(V_e(t)\\) is the error twist required to track the desired trajectory
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
title: "Educational Robot Arm"
|
||||
date: 2024-01-05T09:00:00+00:00
|
||||
date: 2024-04-12T09:00:00+00:00
|
||||
description: Educational Kit for Introductory Robotics
|
||||
hero: images/kavar_background.jpg
|
||||
author:
|
||||
|
|
|
@ -16,10 +16,17 @@ tags: ["Python", "ROS", "RViz", "Moveit API", "Intel Realsense"]
|
|||
|
||||
Using a 7-DoF Franka Emika Panda Robot Arm, we developed a pick and place sequence using an Intel Realsense camera for identifying april tags.
|
||||
|
||||
<div align="center">
|
||||
<iframe width="560" height="315" src="https://www.youtube.com/embed/XGcdhWRo-iU" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
|
||||
<div style="position: relative; width: 100%; padding-top: 56.25%; margin: auto;">
|
||||
<iframe
|
||||
src="https://www.youtube.com/embed/XGcdhWRo-iU"
|
||||
style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;"
|
||||
frameborder="0"
|
||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
|
||||
allowfullscreen>
|
||||
</iframe>
|
||||
</div>
|
||||
|
||||
|
||||
## Robot Arm Control
|
||||
The Franka Emika Panda Robot Arm has a ROS package `franka_ros` which allows us to control the robot arm using the Moveit API.
|
||||
The Moveit API offers services and action servers to faciliate trajectory planning, end-effector operation, and motion profiling.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue