Skip to content

Final project for ME35: Robotics & Mech. Spring 2023.

Notifications You must be signed in to change notification settings

jchoi2507/Robotic_Quadruped

Repository files navigation

Robotic Quadruped with ROS and OpenMV

Full writeup and documentation is here.

1. Overlay Demo

Clicking the thumbnails will redirect the current tab—these images are deceptively NOT embedded

Controlling Camera Servos Forward Walking
Dancing! April Tag Movements

2. Process

i) Electrical Stuff

Inside Preview
_______________
Electrical Bill of Materials
__________________________________________________

ii) Software Stuff

Each microcontroller represents a node in our ROS network. The only microcontroller actually running ROS is the Raspberry Pi, which then interfaces with the other microcontrollers through the RPi’s USB ports that allow serial communication over UART.

The Nicla node publishes commands to the topic: topic_actuate that the two RP2040 nodes are subscribed to. The keyboard node also publishes to the same topic, and allows for external manual control of the robot. The camera servo node is the only node not connected to the other nodes, because it controls the microservos that are directly hooked up to the Raspberry Pi’s GPIO pins.

Once a subscriber node receives a message on the topic, it serially sends a corresponding command to the respective microcontroller to actuate the command.

Overlay explanation:

1. Main roscore node: master node that handles all node communication
2. Camera servo node: to manually control camera position with keystroke inputs
3. Keyboard node: to manually control leg actuation with keystroke inputs
4. Arduino Nicla node: camera vision input
5. RP2040 node #1: RP2040 that controls right legs (4 servos)
6. RP2040 node #2: RP2040 that controls left legs (4 servos)

3. Extra

i) Repo Folder Tree

├── Brain_ROS
    ├── Arduino_cpp
    ├── ROS_cpp
    └── test_files
├── Camera
    ├── camera_for_jacob_to_test
    ├── rough_imageprocessing_examples
    └── tested_imageprocessing_examples
├── Inverse_Kinematics
├── Leg_Actuation
└── catkin_ws

/Brain_ROS: Arduino RP2040 code (servo control), C++ ROS code, node & UART setup
/Camera: Arduino Nicla Camera image processing code
/Inverse_Kinematics: Path-planning code
/Leg_Actuation: Servo angles
/catkin_ws: ROS catkin workspace folder

ii) Bloopers

Bloopers!
Dancing to Tennis Ball