Full writeup and documentation is here.
Clicking the thumbnails will redirect the current tab—these images are deceptively NOT embedded
Controlling Camera Servos | Forward Walking |
Dancing! | April Tag Movements |
Inside Preview _______________ |
Electrical Bill of Materials __________________________________________________ |
---|---|
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)
├── 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