tojvank / p1-gazebo-build-my-world

Robotics Software Engineer nanodegree, course 1: Gazebo.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

RoboND-Term1-P1-Build-My-World

Project 1 of Udacity Robotics Software Engineer Nanodegree Program

Overview

Overview

In this project you'll create your simulation world in Gazebo for all your upcoming projects in the Udacity Robotics Software Engineer Nanodegree Program.

  1. Build a single floor wall structure using the Building Editor tool in Gazebo. Apply at least one feature, one color, and optionally one texture to your structure. Make sure there's enough space between the walls for a robot to navigate.
  2. Model any object of your choice using the Model Editor tool in Gazebo. Your model links should be connected with joints.
  3. Import your structure and two instances of your model inside an empty Gazebo World.
  4. Import at least one model from the Gazebo online library and implement it in your existing Gazebo world.
  5. Write a C++ World Plugin to interact with your world. Your code should display “Welcome to ’s World!” message as soon as you launch the Gazebo world file.

Prerequisites/Dependencies

Setup Instructions (abbreviated)

  1. Meet the Prerequisites/Dependencies
  2. Open Ubuntu Bash and clone the project repository
  3. On the command line execute
sudo apt-get update && sudo apt-get upgrade -y
  1. Build and run your code.

Project Description

Directory Structure

.Build-My-World                    # Build My World Project 
├── model                          # Model files 
│   ├── gokart
│   │   ├── model.config
│   │   ├── model.sdf
│   ├── myfloorplan
│   │   ├── model.config
│   │   ├── model.sdf
│   ├── robot
│   │   ├── model.config
│   │   ├── model.sdf
├── script                         # Gazebo World plugin C++ script      
│   ├── welcome.cpp
├── world                          # Gazebo main World containing models 
│   ├── myoffice.world
├── CMakeLists.txt                 # Link libraries 
└──   
  • myoffice.world: Gazebo world file that includes the models.
  • myfloorplan: A single floor structure designed in the Building Editor tool of Gazebo.
  • gokart: A go kart designed in the Model Editor tool of Gazebo.
  • robot: A robot designed in the Model Editor tool of Gazebo.
  • welcome.cpp: Gazebo world plugin C++ script.
  • Overview.png: A screenshot of the final result.
  • CMakeLists.txt: File to link the C++ code to libraries.

Run the project

  • Clone this repository
  • At the top level of the project repository, create a build directory:
mkdir build && cd build
  • In /build directory, compile your code with
cmake .. && make
  • Export your plugin folder in the terminal so your world file can find it:
export GAZEBO_PLUGIN_PATH=${GAZEBO_PLUGIN_PATH}:/home/workspace/RoboND-Term1-P1-Build-My-World/build
  • Launch the world file in Gazebo to load both the world and plugin
cd /home/workspace/github/RoboND-Term1-P1-Build-My-World/world/
gazebo myoffice.world

Tips

  1. It's recommended to update and upgrade your environment before running the code.
sudo apt-get update && sudo apt-get upgrade -y

Code Style

Please (do your best to) stick to Google's C++ style guide.

Project Rubric

1. Basic Requirements

1.1 Does the project include a world directory containing the Gazebo world file, a model directory containing a structure and an object model files, a script directory containing the C++ plugin code, and a CMakeLists.txt file?

Yes, it does.

2. Building

2.1 Does the project include a house with walls?

Yes, it does.

3. Modeling

3.1 Does the project include an object built using the Model Editor?

Yes, it does.

4. Gazebo World

4.1 Does the project contain a Gazebo world with multiple models?

Yes, it does.

5. World Plugin

5.1 Does the project contain a C++ world plugin?

Yes, it does.

About

Robotics Software Engineer nanodegree, course 1: Gazebo.


Languages

Language:C++ 55.0%Language:CMake 45.0%