Master's Thesis group project working on creating a quadruped capable of use in elderly care, specifically fall detection and autonomous supervision. Built using ROS 2, with a Raspberry Pi Zero 2W attached to the quadruped frame, issuing data to the master pc.
Packages broken down in a standard way:
.devcontainer
: Configuration for the development container environment.clyde_audio
: Source code for wakeword and command detection.clyde_bringup
: Contains launch files used in all the other packages.clyde_control
: Package for body motion planning and gait generation.clyde_description
: Files needed for representation of Clyde's model.clyde_driver
: Code needed to communicate with Bittle's serial interface.- Contains the code to be run on the raspberry pi.
- Contains publishers for audio, vision and pose.
clyde_msgs
: Package detailing all messages defined within the system.clyde_nav
: Code used for autonomous navigation.clyde_teleop
: Code required for teleoperation of clyde (controller, configuration files).clyde_vision
: Source code for human and fall detection.
To build Clyde, ensure that ROS 2 is installed and run the following commands:
source /opt/ros/<ros2-distro>/setup.bash
mkdir -p ~/clyde_ws/src
cd ~/clyde_ws
colcon build --symlink-install
For dependencies of both systems ensure the following are installed:
- Docker
- nvidia-container-toolkit
- VSCode
- Devcontainers for VSCode
Upon opening the project in VSCode, the option to open in a devcontainer will show up. Build the container then proceed.
To launch the Clyde system, use the included launch files in clyde_bringup
while inside the docker container:
On the PC:
source ~/clyde_ws/install/setup.bash
ros2 launch clyde_bringup clyde_full.launch.py
In a new terminal:
serverstart
On the Pi:
source ~/clyde_ws/install/setup.bash
ros2 launch clyde_bringup clyde_pi_full.launch.py
We welcome contributions via pull requests. For major changes, please open an issue first to discuss what you would like to change. Ensure to update tests as appropriate. Contact @el-geuse for more information or clarification.