A modified RC car UGV

This ugv runs on top of a 35km/h RC Car.The drive system is an Ackerman type of drive, whereby the front two wheels are used to steer ( control turning angles) whilst the back wheels provide for throttle. It uses a raspberry pi for computing and runs ROS Melodic and OpenCV libraries. It is equiped with camera for vision and 2D lidar for obstacle detection and to aid navigtion. Two modes are supported, that is a manually controlled navigation mode and an autonomous mode.

To support autonomous mode the robot uses slam. This is a simultaneous navigation localization and mapping technique. It is used to build a map of an area, by manually driving in an unknown area, whilst taking sensor readings required for map building. Aftewards the robot is localized in previously built map, and uses sensor fusion to obtain its most probable orientation and position within the map as it moves. With this approach the robot can autonomously drive to any location within the map.It is also able to avoid obstacles and travels to its global goal by calculating the shortest distance to the goal. To implament above features hector slam package is used and tuned for this robot model.

A modified RC car UGV

The Control inputs are Speed and direction. These velocities vectors commands can be relayed via a wireless joypad by using the teleoperation package. They are then translated to suite the implemented drive system, then sent to the Ros serial package, which is the interface to the rc receiver(speed controller in the original rc car).

Ros nodes interchangeable publish to the motion topic depending on the selected mode i.e manual drive or autonomous.

Mapping stage

Above videos display the map building stage using hector slam.

The map server runs on the actual robot, whilst a different computer in the network is used to view the live map and location of the robot during the live map build.