+
**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
diff --git a/content/posts/mobile-manipulation/index.md b/content/posts/mobile-manipulation/index.md
index 1c3060f..c7693b1 100644
--- a/content/posts/mobile-manipulation/index.md
+++ b/content/posts/mobile-manipulation/index.md
@@ -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 $$
+
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))\\):
-$$
+
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:
-$$
+
where:
- \\(V_e(t)\\) is the error twist required to track the desired trajectory
diff --git a/content/posts/robot-arm-edu/index.md b/content/posts/robot-arm-edu/index.md
index 55147ab..f46ce17 100644
--- a/content/posts/robot-arm-edu/index.md
+++ b/content/posts/robot-arm-edu/index.md
@@ -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:
diff --git a/content/posts/toastbot/index.md b/content/posts/toastbot/index.md
index 0da765c..35d8653 100644
--- a/content/posts/toastbot/index.md
+++ b/content/posts/toastbot/index.md
@@ -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.
-
-
+
+
+
## 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.