GithubHelp home page GithubHelp logo

venkisagunner93 / beertender_robot Goto Github PK

View Code? Open in Web Editor NEW
3.0 3.0 3.0 1.55 MB

A repository to learn navigation in ROS and C++

License: MIT License

CMake 6.16% C++ 89.06% Python 1.59% Shell 1.60% Lua 1.59%

beertender_robot's Introduction

beertender_robot

This repository is for building high-level software for beertender robot.

TO-DO:

  • Create-2 driver integration
  • Path planning
    • Global planning
    • Local planning
  • Localization
    • Setup basic cartographer
  • CI/CD
    • Build pipeline
    • Self-hosted runner
    • Testing pipeline
      • gtest/gmock
      • rostest
    • Code quality pipeline
      • clang-format
      • catkin_lint
      • roscpp_lint
    • Deployment pipeline
      • Containerize deployment
      • Robot as a docker registry
    • Data collection pipeline
      • Logs
      • Bag files
      • Metrics

How to run?

cd $HOME
git clone https://github.com/venkisagunner93/beertender_robot.git
cd beertender_robot
source tools/setup.sh
beertender --sdk
sdk

An rviz window should open up. Enjoy playing with create2 robot

rviz

ROS Graph

ros_graph

beertender_robot's People

Contributors

venkisagunner93 avatar

Stargazers

 avatar  avatar zhouzuhong avatar

Watchers

James Cloos avatar  avatar zhouzuhong avatar

beertender_robot's Issues

Setup simulator using gazebo

Make a simulator:

  • Setup gazebo model for create 2
  • Setup a test world (my apartment)
  • Deprecate existing simulation codebase
  • Add lidar to create 2 gazebo model
  • Clean up TF tree

Teleop capability

Add teleop capability such that the local planner should be preempted once the teleop kicks in.

Simple structure for planner

Create a simple structure for planner to do the following:

  • Able to get global goal
  • Able to generate a global path from global goal provided
  • Able to execute global path by providing it to local planner

Add a docker compose file to launch and tear down SW in robot

So far, the tools support pushing a docker image to the robot and pulling it locally in the robot's motherboard. But, the robot does not start its software automatically when a new updated image is pushed. In order for this to happen, the robot needs a docker_compose.yaml file that can architect containers spawning and tear down.

Improve laser simulation code

Laser simulation code is taking too much computational power right now. Modify code based on ray tracing approach. The idea is to use the co-ordinate transform between base_link and map frames and with a known occupancy grid map, we can simulate laser points. This repository implements ray tracer. Integrate the ray tracer with robot_sim class.

Deploy code as docker image

Binaries are being deployed as such. Needs to be deployed as docker images, where the images can be started from another machine remotely.

Refactor global_planner to have action server

Create global planner with action server.

##Current implementation:

  • Subscribed to nav/global_goal topic and publishes global path to nav/global_path
  • Not ideal way to do this. Should have preemption, abort, success and feedback capabilities

Docker registry in robot

Reflash the operating system in robot's computer and install only docker. Modify the computer as a docker registry

Complete simulation pipeline

Simulation is not implemented at the moment. Needs to be scoped out for future and implemented (at least barebones)

Implement pose graph from scratch

Notes:

  • Create two new classes for vertices and edges
  • Subscribe to odometry for a configurable sampling size and calculate relative motion composition
  • Subscribe to laser scans and add it into the corresponding vertex after accumulating enough motion through odometry
  • Perform local slam using ceres between successive vertices to keep initial cost of global slam low
  • Perform global slam by detecting loop closure between two vertices where the euclidean distance is lower than a threshold
  • Based on the diagonal elements of the reduced hessian matrix, determine which edges need to be adjusted to optimize totness of the edges so that the final answer is optimal

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.