Skip to content

Commit

Permalink
commit
Browse files Browse the repository at this point in the history
  • Loading branch information
micahhsu committed Jul 1, 2024
1 parent c4d28a6 commit 4565915
Showing 1 changed file with 15 additions and 120 deletions.
135 changes: 15 additions & 120 deletions content/portfolio/sixdofarm/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ date: 2023-10-24
type: project
math: false
tags:
- Python
- University Rover Challenge
image:
caption: 'Embed rich media such as videos and LaTeX math'
caption: '6 DoF Robotic Arm'
---

I built a 6 degree of freedom robotic arm for my mars rover team, competing in the University Rover Challenge. Leading it from design to the field, it was a tremendous success.
Expand All @@ -20,135 +20,30 @@ I'll talk about this project in three phases: design, manufacturing, and testing

## Design

## Manufacturing

## Testing

[Hugo Blox Builder](https://hugoblox.com) is designed to give technical content creators a seamless experience. You can focus on the content and the Hugo Blox Builder which this template is built upon handles the rest.

**Embed videos, podcasts, code, LaTeX math, and even test students!**

On this page, you'll find some examples of the types of technical content that can be rendered with Hugo Blox.

## Video

Teach your course by sharing videos with your students. Choose from one of the following approaches:

{{< youtube D2vj0WcvH5c >}}

**Youtube**:

{{</* youtube w7Ft2ymGmfc */>}}

**Bilibili**:

{{</* bilibili id="BV1WV4y1r7DF" */>}}

**Video file**

Videos may be added to a page by either placing them in your `assets/media/` media library or in your [page's folder](https://gohugo.io/content-management/page-bundles/), and then embedding them with the _video_ shortcode:

{{</* video src="my_video.mp4" controls="yes" */>}}

## Podcast

You can add a podcast or music to a page by placing the MP3 file in the page's folder or the media library folder and then embedding the audio on your page with the _audio_ shortcode:

{{</* audio src="ambient-piano.mp3" */>}}

Try it out:

{{< audio src="ambient-piano.mp3" >}}

## Test students

Provide a simple yet fun self-assessment by revealing the solutions to challenges with the `spoiler` shortcode:

```markdown
{{</* spoiler text="👉 Click to view the solution" */>}}
You found me!
{{</* /spoiler */>}}
```

renders as

{{< spoiler text="👉 Click to view the solution" >}} You found me 🎉 {{< /spoiler >}}

## Math

Hugo Blox Builder supports a Markdown extension for $\LaTeX$ math. You can enable this feature by toggling the `math` option in your `config/_default/params.yaml` file.

To render _inline_ or _block_ math, wrap your LaTeX math with `{{</* math */>}}$...${{</* /math */>}}` or `{{</* math */>}}$$...$${{</* /math */>}}`, respectively.

{{% callout note %}}
We wrap the LaTeX math in the Hugo Blox _math_ shortcode to prevent Hugo rendering our math as Markdown.
From requirements, napkin sketches, and material selection to mechanism design and revision, take a brief overview of the design process for this arm.
{{% /callout %}}

Example **math block**:

```latex
{{</* math */>}}
$$
\gamma_{n} = \frac{ \left | \left (\mathbf x_{n} - \mathbf x_{n-1} \right )^T \left [\nabla F (\mathbf x_{n}) - \nabla F (\mathbf x_{n-1}) \right ] \right |}{\left \|\nabla F(\mathbf{x}_{n}) - \nabla F(\mathbf{x}_{n-1}) \right \|^2}
$$
{{</* /math */>}}
```
### Overall Design

renders as
Looking back to the robotic arm I designed in the previous year, I realized that it lacked one thing: mobility. It had only five degrees of freedom, and the two most important axes had limited rotational range. This caused us difficulty in completing some tasks in the University Rover Challenge.

{{< math >}}
$$\gamma_{n} = \frac{ \left | \left (\mathbf x_{n} - \mathbf x_{n-1} \right )^T \left [\nabla F (\mathbf x_{n}) - \nabla F (\mathbf x_{n-1}) \right ] \right |}{\left \|\nabla F(\mathbf{x}_{n}) - \nabla F(\mathbf{x}_{n-1}) \right \|^2}$$
{{< /math >}}
To increase mobility, this new arm would have six degrees of freedom, with brushless motors at every axis, eliminating the linear actuators and brushed motors we had used before. The design was inspired by one that a previous team member had modeled.

Example **inline math** `{{</* math */>}}$\nabla F(\mathbf{x}_{n})${{</* /math */>}}` renders as {{< math >}}$\nabla F(\mathbf{x}_{n})${{< /math >}}.
### Electronics

Example **multi-line math** using the math linebreak (`\\`):
For the electronics, the most difficult thing to select were the brushless motors. To summarize, I chose to run with a 24V system as opposed to the 12V system I had run on last year to allow for higher torque density and more optimized thermals. I chose to run with brushless motors for a greater level of precision and efficiency, despite the more difficult controls required. I also created a spreadsheet calculating a ballpark of the expected torque required for each motor and gearbox combination at every axis. All this led to the selection of several EC Flat Maxon motors, which worked great!

```latex
{{</* math */>}}
$$f(k;p_{0}^{*}) = \begin{cases}p_{0}^{*} & \text{if }k=1, \\
1-p_{0}^{*} & \text{if }k=0.\end{cases}$$
{{</* /math */>}}
```
### Gearboxes

renders as
At each axis, a gearbox was used to produce the right amount of torque. I used strain wave gearboxes at the first three axes, which sustain the highest moment, and I used custom cycloidal gearboxes for the final three axes. These gearboxes were designed by a previous member but never successfully prototyped. I revised and tested them.

{{< math >}}
### Materials

$$
f(k;p_{0}^{*}) = \begin{cases}p_{0}^{*} & \text{if }k=1, \\
1-p_{0}^{*} & \text{if }k=0.\end{cases}
$$
For the materials selection, I had to consider that my machining capability essentially consisted of a CNC router and 3D printers, along with some other simple machines like bandsaws, drill presses, and bench grinders.

{{< /math >}}
Consequently, I chose the main frame to be designed from 6061-T6 aluminum, which is lightweight, sturdy, and easily machinable. I performed FEA on critical components to ensure safety under expected loads with a factor of safety.

## Code

Hugo Blox Builder utilises Hugo's Markdown extension for highlighting code syntax. The code theme can be selected in the `config/_default/params.yaml` file.


```python
import pandas as pd
data = pd.read_csv("data.csv")
data.head()
```

renders as

```python
import pandas as pd
data = pd.read_csv("data.csv")
data.head()
```

## Inline Images

```go
{{</* icon name="python" */>}} Python
```

renders as

{{< icon name="python" >}} Python
## Manufacturing

## Did you find this page helpful? Consider sharing it 🙌
## Testing

0 comments on commit 4565915

Please sign in to comment.