Fixing youtube video sizes and math equations

This commit is contained in:
Sharwin24 2025-01-20 14:01:40 -06:00
parent 5cf8ff1330
commit 784fd7ca08
5 changed files with 96 additions and 67 deletions

View file

@ -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:

View file

@ -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

View file

@ -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

View file

@ -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:

View file

@ -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.