Skip to content

Latest commit

 

History

92 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RoboArm

A full‑stack motion‑planning and control platform for the RoboArmM3.
The core algorithm is a C++ implementation of Rapidly‑exploring Random Tree Star (RRT*), integrated with forward‑kinematics‑based collision checking and a UART command pipe to the arm.

*️⃣ Primary deployment target: BeagleBone Black (ARM Cortex‑A8) running Debian 11. *️⃣ Backup demo: Raspberry Pi Pico W submodule build of the same planner (wireless HTTP client)


✨ Key Features

  • 2‑D & 3‑D RRT planners with obstacle avoidance, path re‑wiring, and output CSV logging results
  • Forward kinematics * Forward kinematics tailored to the RoboArm M3 geometry: baseline float + experimental fixed‑point (DAISY‑generated) variant
  • Python utilities for plotting trajectories and analysing planner performance.
  • BeagleBone workflow – build with make rrt_3d_ARM, then auto‑stream the path to the arm over UART (JSON @ 115200 baud)
  • Pico W demo (Git submodule pico_armTest) that runs the same planner over Wi‑Fi.
  • FPGA UART testing (Verilog) echo/RX/TX cores + C host app, groundwork for future hardware acceleration

🗂️ Repository Layout

.
├── README.md                  
├── documents/                  # Reports & demo video
│   ├── EC535_Final_Report.pdf
│   └── Gautel_Gonzalez_EC535_Final_Video.mp4
│
├── pico_armTest/               # Backup wireless demo on Raspberry Pi Pico W
│   └── …   
│
└── src/                        # MAIN PROJECT SOURCE
    ├── rrt_base.*              # Common base rrt logic agnostic to dimension and DOF
    │
    ├── 2d_impl/                # 2‑D planner + plotting scripts
    │   ├── Makefile
    │   ├── rrt_2d.cpp/h
    │   └── results/*.csv
    │
    ├── 3d_impl/                # 3‑D planner + plotting scripts, FK lib & BeagleBone helpers
    │   ├── main.cpp            # Local entry
    │   ├── BB_main.cpp         # BeagleBone‑specific entry (rrt_3d_ARM)
    │   ├── forward_kinematics/
    │   ├── process_commands.py # Streams path over UART to RoboArmM3
    │   └── results/*.csv
    │
    └── UART_FPGA_Test/         # Verilog UART cores + C test harness
        ├── Verilog Files/
        └── data_test.c

Submodule notice – clone with --recurse-submodules to fetch pico_armTest.


🚀 Quick Start

1 – Clone the repo

git clone --recurse-submodules https://github.com/NaomiGonz/RoboArm.git
cd RoboArm

2 – Compile & run on BeagleBone Black

sudo apt update && sudo apt install build-essential python3-pip -y
cd src/3d_impl
make rrt_3d_ARM          # Produces ./rrt_3d_ARM

# Generate a path + auto‑streams over UART
./rrt_3d_ARM 

# (only stream found path to goal)
python3 process_commands.py --device /dev/ttyUSB0

3 – Desktop simulation + Graph viewer

For 2D implementation:

cd src/2d_impl
make && ./rrt_2d
python3 plot_results.py results/<name>.csv

For 3D implementation:

cd src/3d_impl
make && ./rrt_3d
python3 plot_results.py results/<name>.csv

4 – Raspberry Pi Pico W backup demo

cd pico_armTest
mkdir build && cd build
cmake .. && make
picotool load picow_http_client.uf2   # flash the board

The firmware connects and sends commands to RoboArmM3 through Wi‑Fi.

5 – FPGA UART tests (Basys3)

  1. Open src/UART_FPGA_Test/Verilog Files in Vivado 2023.1
  2. Apply Basys_3_Constraints_UART.xdc
  3. Generate bitstream & program board
  4. Wire Beaglebone UART pins to Basys3 physcially
  5. Host side: complile data_test.c and run ./data_test to send and recieve data from FPGA

📦 Dependencies

Component Requirement
BeagleBone build GCC 10 + , make, gprof (optional profiling)
Python tools Python ≥ 3.9, numpy, pandas, pyserial, matplotlib
Pico firmware Pico SDK
FPGA tests Xilinx Vivado 2023.1, Basys 3 board

All scripts assume Debian‑based Linux; Windows users can build inside WSL 2.


📖 Further Reading & Demo

Developed as the final project for EC535— Embedded Systems at Boston University (Spring 2025)

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages