Giter Club home page Giter Club logo

clyderos2's Introduction

clyderos2

EM501 Project -- Group C

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.

Folder Breakdown

Packages broken down in a standard way:

  1. .devcontainer: Configuration for the development container environment.
  2. clyde_audio : Source code for wakeword and command detection.
  3. clyde_bringup : Contains launch files used in all the other packages.
  4. clyde_control : Package for body motion planning and gait generation.
  5. clyde_description : Files needed for representation of Clyde's model.
  6. 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.
  7. clyde_msgs : Package detailing all messages defined within the system.
  8. clyde_nav : Code used for autonomous navigation.
  9. clyde_teleop : Code required for teleoperation of clyde (controller, configuration files).
  10. clyde_vision : Source code for human and fall detection.

Building

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

Dependencies

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.

Launching

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

Contributions

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.

clyderos2's People

Contributors

el-geuse avatar

Stargazers

 avatar

Watchers

 avatar

Forkers

jsble

clyderos2's Issues

Husarnet can't connect through the docker container

Seems husarnet does not have the correct port permissions to send external communications while in the docker container, as expected.

Most likely solution is to change the way the server is formed, as is done with xml files here. This directory also suggests opening a husarnet container seperately, could be an option for configuration.

Github actions failing without compiling

All of the linters are failing their tests due to not compiling.

The error is 'NoneType' object is not subscriptable.

Not very indicative, but a search of when this problem started happening should be more helpful

FastDDS server startup

Current manual method for starting up the server (startserver command) is a bit unwieldy being manual, and I think an automated solution would be a lot cleaner.

Ideal solution would be refactoring the repo to use docker compose, similar to this. This would allow for close to instant launch of all relevant files, and introduce the possibility of running automatic server configurers.

Finish updating README

README needs to be updated with:

  • Required software and packages to be able to run
  • Required hardware
  • Operating instructions
  • Breakdown of system parts
    These should help provide a good understanding of the system from just the repo.

Pi DDS xml files

The pi xml files needed to be changed so networking could work, but they're now stored locally.
Ideally they would be backed up to the github, figure out a way to do this.
It would be nice if this was the same for the bashrc file too, it would be good to have that saved.

Slow RViz performance in Docker container

RViz runs super slowly (~16fps) while running inside the docker container, and 60fps without. There doesn't seem to be any obvious problem that is causing this:

  • Checking inside the container, it has access to all 16Gb of RAM.
  • It has access to the GPU.

The last thing to obviously check is its compatibility with the GPU drivers. The best way I can think of doing this is switching from the base ROS image that we're using to the cuda image. That should definitely have the configuration set right to be optimising with Nvidia GPUs. If not, most likely some problem with RViz that has to be checked out.

Enhancing serial interface

Current serial interface is pretty barebones, quite a few improvements that can be made:

  • Currently only handles sending messages over the interface, no receiving.
    • Receiving would be super useful, allow us access to the IMU and current state data.
  • Better command parsing, the current method only allows for basic sending, being able to issue specific commands with more parameters would be more useful.

All of this needs to be done with Petoi's serial interface protocol here.

Superclient permissions fix

Superclient, the workaround that lets ROS introspection tools (rqt_graph, topic list) see into FastDDS discovery servers, is currently implemented with the superclient command, which changes the xml configuration file and reboots the ROS daemon.

The problem then occurs when a new terminal is opened, the superclient configuration stays, even through it is not set as FASTRTPS_DEFAULT_PROFILES_FILE. The currently implemented solution is restarting the daemon at the beginning of each bash file, which is unwieldy, so a better solution should be found.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.