Reference no: EM132339147
Assignment Project -
Intent: To analyse a set of specifications, design, test, document and practically evaluate code to perform analysis of sensor data and simple actions based on data on a simulated robotic platform.
Assignment Background - Rationale: In a Mechatronics System, sensors produce data at varying rates. Decisions need to be made based on correctly associated data in near real-time. Threading and synchronisation are ways to ensure the system performs as intended, with guarantees on the responsiveness of the system to incoming data changes, processing constraints and system behaviour. Functions that exploit the data require unit testing to ensure they behave correctly. Documentation of your own code allows other developers to utilise it as intended and anticipate outcomes, in the same fashion you use a number of APIs (ROS/OpenCV).
Task: Write a series of components using the ROS CBSE framework that will process data originating from a range of sensors on a simulated robot. Employ appropriate multi-threading and data structures to enable time synchronisation and subsequently interrogation of data which allow simple actions of a robotic platform. Supply appropriate auto-generated documentation utilising inline source mark-up. Exploit unit testing framework with test cases evaluating code.
Students can select from two projects
1) Exploration of Frontiers
2) Rapidly Exploring Random Trees
3) Path Following
Project 1: Frontier Based Exploration
The starting configuration is the current position of the robot; the goal position is to be determined and requested via a Service call.
Create a ROS node that:
Subscribes to the OgMap and the Robot Position on /odom and /map_image/full topics.
The inner working of component is such that it performs following every 10 seconds.
Determines the frontier cells of the OgMap and stores them in a STL container
Determines a Goal Pose from the frontiers as:
- Closest location to the current robot position (shortest distance) within free space neighbouring a frontier cell.
- Angle (heading - yaw) such that that the goal pose has a heading towards unknown space
Determines all the frontier cells that are visible from that goal pose (use the goal pose computed and current map)
Publish an image on /map_image/fbe topic that shows: (1) input OgMap, (2) Frontiers (blue), (3) Goal Pose (green) and (4) Frontier Cells that will be seen from Goal Pose (red)
Transforms coordinates between coordinate systems of:
- local (ogmap - pixel / map centre )
- global (robot position)
Request the Goal Pose in global coordinates via the service call /request_goal
Have ability to receive requests for the path on /path topic using the PoseArray message and thereafter publish an image of current OgMap on /map_image/fbe topic
Unit test
- Local to Global and Global to Local Transform
- Goal pose computation on two sample OgMap images
- Frontier cells that will be covered from that Goal pose on two sample OgMap images
(For D/HD)
- When storing the Frontiers cells in STL container, group them based on connectivity (frontier cells that are 8-connected are deemed to be connected).
Note - This project has to do on Ubuntu 16.04, that is a version of Linux, and ROS kinetic.
Attachment:- Ubuntu Project Assignment Files.rar