100% found this document useful (1 vote)
146 views

SLAM Autonomous Car Using ROS + Arduino

This document describes a project to build a small autonomous car using SLAM (simultaneous localization and mapping) with ROS (Robot Operating System) and an Arduino. Key aspects include: 1) The car is designed with a wood body, motorized wheels, and holes to mount sensors to enable SLAM capabilities like lidar, sonar, etc. 2) ROS is used as the brain to process sensor data and control actuators. The gmapping package constructs maps from laser and pose data, and the navigation stack outputs safe velocity commands. 3) Sensors include an IMU, 3 ultrasonics to mimic lidar, and encoders for position data. Simulation in Gazebo

Uploaded by

Mahmoud Elsayed
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
146 views

SLAM Autonomous Car Using ROS + Arduino

This document describes a project to build a small autonomous car using SLAM (simultaneous localization and mapping) with ROS (Robot Operating System) and an Arduino. Key aspects include: 1) The car is designed with a wood body, motorized wheels, and holes to mount sensors to enable SLAM capabilities like lidar, sonar, etc. 2) ROS is used as the brain to process sensor data and control actuators. The gmapping package constructs maps from laser and pose data, and the navigation stack outputs safe velocity commands. 3) Sensors include an IMU, 3 ultrasonics to mimic lidar, and encoders for position data. Simulation in Gazebo

Uploaded by

Mahmoud Elsayed
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 5

SLAM autonomous car using ROS + Arduino

Introduction

Over recent decades, robots have been used in tasks that are dangerous in their nature. And since
robots have proven their success in doing these tasks, more complicated tasks are being assigned
to them instead of humans such as space exploration, surgeries, deep sea exploration, and
autonomous driving.

All these tasks require a robot capable of acting intelligently in dynamically changing
environments. For this to be feasible, the robot has to be able of positioning itself and building a
map of its environment autonomously. In times past, GPS was the main source of navigation
information, but GPS signal doesn’t reach all locations and is not available indoors, so robots need
an alternative source of navigation information in GPS-denied areas.

One of the alternative sources is simultaneous localization and mapping (SLAM) method, which
estimates the robot pose and builds a map of its surroundings enabling the robot to avoid obstacles
while moving, and to generate the best path between current and goal poses of the robot by the aid
of other types of sensors than GPS such as: lidar, sonar, radar, … etc.

In this project we are going to build a small car equipped with some sensors and implemented
SLAM algorithm on arduino side by side with a Robot Operating System (ROS) ready PC.

Mechanical Design

First we started by drawing cad model of a potential car that can be used to do the mission.
As shown in the 2 figures above, the car is made of wood with four motor driven wheels, and the
design was made on solidworks software. This design step perceded the sensors selection step, so we
laser cutted the wood with multiple holes that allow the fixation of common sensors in the market.

Sensors selection

In order to select sensors needed, first we have to choose the platform that will act as the car brain.
After surveying available platforms, we chose ROS. It is a mature and flexible open source
framework for robotics programming. ROS provides the required tools to easily access sensors
data, process that data, and generate an appropriate response for the motors and other actuators of
the robot. The whole ROS system has been designed to be fully distributed in terms of
computation, so different computers can take part on the control processes, and act together as a
single entity (the robot). For this reason, ROS is widely used and is compatible with a variety of
simulators.

Having a big community, a lot of packages are already there that can fit your project easily. Out
of them, we chose to use gmapping package and navigation stack. On one hand, gmapping package
is used to construct 2D occupancy grid map of surrounding environment using laser and pose data.
On the other hand, navigation stack takes as input odometry information, goal pose, and sensors
readings to output safe velocity commands to the actuators. Accordingly, the following sensors
were used:

- imu
- 3 ultrasonics
- Encoders

The imu unit was used for orientation info, the ultrasonics were used to mimic lidar sensor
readings, as lidar is expensive, and encoders were used for position estimation.

Ultrasonic readings of 180 degrees coverage, deg/reading

Simulation

Testing a newly created system is a very crucial stage of development stages of any system. A
good testing should be done in the same situation as the real situation. Due to time, effort, cost,
and other factors concerns, tests of new systems are done on simulators first. In case of robotics
simulators, systems are experimented in a well-controlled environment that simulate real situations
of usage. In general, simulators simulate real world using physics engines, but designing a perfect
physics engine is impossible. So, there exist a gap between reality and simulation till the time.
In this project we used Gazebo simulator. Gazebo is a well-known robotics simulator that is
compatible with ROS platform. It can simulate rigid body physics and generate realistic sensor
feedback. Gazebo has a wide community and is open source.

Car testing in Gazebo

Navigation stack velocity commands


Real car

You might also like