Code Monkey home page Code Monkey logo

turtlebot-gazebo-navigator's Introduction

Gazebo Turtlebot Simulator (Final Project for Integration Engineer)

GitHub stars GitHub followers GitHub forks Twitter Follow

kiwi_banner

GitHub labels GitHub repo size GitHub All Releases GitHub issues GitHub pull requests GitHub language count License GitHub release (latest by date) GitHub contributors GitHub last commit Made from

Kiwibot

Hi Human!

Kiwibot links on-demand customers with you. We move atoms from point A to B safely, efficiently and affordably. We're improving people's lives with the world's most affordable and technologically advanced delivery service for local commerce worldwide. Since our start in 2017, Kiwibot has made over 90,000 deliveries and built over 500 robots. This has allowed us to be the number one robot delivery platform on earth.

Since early stages Kiwibot has shown amazing ideas, strategies, and developments to propose a new way to perform last mile delivery. All of that was embodied in a single box, our first version. However, over the years, different versions have significantly improved our logistics, operations, design, and especially software, using not only pure robotics, but also artificial intelligence. At this stage, we are ready to perform astonishing new developments for our industry as a world-leading company in the last mile delivery with new versions of robots.

Kiwibot Technology

Autonomous navigation is at the core of most robotics companies, however despite claims that you may have heard no robot in the outdoors delivery market is 100% autonomous, instead all of them need to fall back to human teleoperators in challenging situations that they cannot solve by their own. At Kiwibot's AI&Robotics team we are working hard to increase further the amount of time the robots can navigate on their own; for that we rely on a combination of custom made software and high quality open source libraries in ROS2's ecosystem (to which we often contribute) like Nav2, robot_localization, gazebo among others. This is the codebase you will be working on when you become part of the team.

The Project's Context

Nav2 is a very flexible and configurable system that sits at the core of our autonomy stack. It aims to provide autonomous navigation capabilities to mobile robots and comprises several modules (servers) with smaller tasks that can be combined together to achieve this goal or can be used independently to provide specific functionalities to the system (ex: localization, path planning, etc).

This modular architecture makes it really easy to swap the algorithmic component of the different modules, allowing developers to choose the most suited approach for their needs or making it easier to program their own functionalities if the defaults don't fit their needs. Since you will have to make heavy use of nav2 is highly recommended that you read its documentation before getting started

You will probably use Nav2 in your everyday work at Kiwibot so consider this project as the beginning of your training.

The main idea of the project is to build a simple navigation system with Nav2 and a simulated Turtlebot3 on gazebo. You will start using Nav2’s low-level interfaces in order to understand how the system works, and then you will progressively scale up to use its high-level interfaces. In the end, your robot should be able to follow an arbitrary set of waypoints and perform actions when arriving to each of them. According to your skill level you may take 5-10 hours to solve all the tasks we propose.

This project aims to assess your ability to develop new features in complex software systems using ROS2 and Nav2 as a case study. When we review your project we will assess how well understood the systems in nav2 that you used so be ready to answer some theoretical questions.

The project will comprise three sections that will be as independent of each other as possible, so if you feel stuck on one of them feel free to jump to the next one. Each section will have some extra points that will allow your solution to stand out and you to score extra points. Doing everything perfectly + the extra points will allow you to get up to double the score you would if you only did the required points. Additionally to the project’s functionality, which account for 80% of the total grade, we will perform a general evaluation of

  • [10%] The way you structure your solution (nice OOP will be rewarded)
  • [5%] How you write documentation
  • [3%] The use you make of git
  • [2%] The code style (use a linter)

You may be asked to defend your project solution with some members of the team on a live meeting, so be ready to explain your code and answer some questions around it.

Dependencies

For running the project you will need:

  1. A computer with Ubuntu 22 or 20. Though you can certainly use other ubuntu distributions or virtual machines on another OS we won't provide support if you are not using the former.
  2. docker-ce
  3. docker-compose

As you may have inferred by the above dependencies the project runs on a docker container. We recommend using VS Code as the main IDE for development. Install the Remote development extensions and follow the running_dev_container instructions to write and test code inside the docker container.

You can also use other IDEs but note that all the project dependencies are installed in the docker image so you may have a hard time setting all that up on a different environment (VS Code does everything for you). Also we expect to be able to run your solution in the same docker image in our computers using vscode.

The simulator has been tested on a computer having a core i3 processor and no GPU, so you shouldn’t run into issues if you don’t have a super pro computer. However, if you have a small processor we do recommend setting ubuntu to work in performance mode and keeping your computer plugged into the AC adapter at all times.

General Guidelines

Before you start follow the instructions on the running_dev_container document to get everything up and running. You will know you are ready to get to work when you can move the simulated turtlebot around using rviz.

TODO: Nico, don't forget to delete this solution branch

[40% (60% with extra)] Section 1

In this section you are expected to move the turtlebot programmatically using nav2's controller, planner and behavior servers directly (which we call low-level interfaces) by completing the code on a python package we have made for you. At the end of this section your robot should move between two waypoints when calling the python navigator package.

You can score up to 20% extra on the overall project grade doing the bonus points we propose.

Follow the instructions on section 1 to complete this section.

[60% (90% with extra)] Section 2

After completing section 1 you may be thinking that using python for putting together the low-level interfaces into a navigation application may not be the best idea. To get to know how nav2 solves the problem in this section you are expected to move the turtlebot trough a set of waypoints using the BT navigator server and the /navigate_to_pose action. Unlike the above interfaces, the BT navigator handles all the low level logic you did by hand using a behavior tree and receives only your goal (this is the server rviz uses as well).

In this section you will have to develop all the code from the ground up. We will provide one python and one C++ empty packages that have the build system ready for what you will need to do; you can choose to solve this section using python OR C++, however if you use python your grades will be lower by a factor of 0.7. This means that if everything works but you did your code in python you will make 3.5/5.0, while if you did it in C++ you will make 5.0/5.0. To be clear once again, you DON'T have to solve everything in Python AND C++, if it works in one of them you are good to go.

You can score up to 30% extra on the overall project grade doing the bonus points we propose. Bonuses wont be affected by the language you choose.

Follow the instructions on section 2 to complete this section.

[50% extra] Section 3

In this section you will have to write a custom goal checker plugin and use it to play a sound each time the robot gets to a waypoint.

This section is completely optional, but can score up to 30% extra on the overall project grade doing it.

Follow the instructions on section 3 to complete this section.

License

This project is licensed under Apache 2, and thus all contributions will be licensed as such as per clause 5 of the Apache 2 License:

  1. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.

Kiwibot AI & Robotics Team

Meet our amazing team in charge of designing, building, manufacturing and giving life to our most loved friend the Kiwibot.

kiwi_ai_team

🤖 AI & Robotics: John Betancourt [AI&Robotics Team Lead - Robotics Engineer], Marcela Gomez [QA and testing], Davidson Daniel [Ai & Robotics Engineer], Carlos Alvarez [Senior ML Engineer], Pedro Gonzalez [Ai & Robotics Engineer ], Nicolas Rocha Pacheco [Ai & Robotics Engineer ], Wilmer David Garzón Cáceres [Ai & Robotics Engineer], Salomón Granada Ulloque [Ai & Robotics Engineer], Alejandro Serna Escobar [Ai & Robotics Engineer], Camilo Pinzon [Service Desk Engineer], Alejandro Naranjo [Routing and Mapping Engineer] / Old Members (❤️ We couldn't have done it without you - may the force be with you ❤️): Santiago Hincapie [ML Engineer], Rafael Rincon [Ai & Robotics Engineer], Camilo Alvis, David Cardozo, Juan Galvis, Robin Deuber, Juan Jurado, Jason Oviedo, [Juan Rios], Camila Rincones, Juan Ramirez, Mario Morales, Milad Noori, Mauricio Reyes, Cristian Garcia.

There is also a huge team out of the engineering area which gives a lot of work for our Kiwibot. Even if they are not listed here, they are the key to achieve our goals as a company:

CEO: Felipe Chávez Cortés / Design: Alejandro Otalora [Head designer], Leonardo Correa[Mechanical designer] / Manufacture: Natalia Pinilla[Manufacture manager] / Hardware: Andres Rengifo[Electronic designer] / All Kiwi Family: here .


Kiwibot Around The World

(USA) Berkeley (Asia) Taipei (LATAM) Medellin Around The World
kiwibot_berkeley kiwibot_taipei kiwibot_medellin kiwibot_streets
(USA) San Jose (USA) Denver (USA) Los Angeles (USA) Miami
kiwibot_st-jose kiwibot_denver kiwibot_la kiwibot_miami
(Arab Emirates) Dubai (Virtual) Minecraft Coming soon! Coming soon!
kiwibot_dubai kiwibot_minecraft kiwibot_minecraft kiwibot_minecraft

Kiwibot In The News

Portfolio Businessinsider The New York Times Techcrunch Newscientist

Kiwibot's Media

📷 Instagram: kiwibot_us, kiwibot.taipei, kiwicampus/ 🤖 Facebook: kiwicampus. Follow us and give us a star ⭐ if this project helped you or you like it!


Kiwibot's Projects Media

turtlebot-gazebo-navigator's People

Contributors

pepisg avatar nicolasrochapacheco avatar juancarlos-tiquerangel avatar

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.