<?xml version="1.0" encoding="UTF-8"?>
<CourseUnit xmlns="http://www.manchester.ac.uk/CUICourseUnitDetails" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.manchester.ac.uk/CUICourseUnitDetails.xsd">
  <UnitCode Applicant="Y" Label="Unit code" Student="Y">
    <Code>EEEN62021</Code>
  </UnitCode>
  <UnitTitle Applicant="Y" Label="Unit title" Student="Y">
    <Title>Software for Robotics</Title>
  </UnitTitle>
  <MaxUnits Applicant="Y" Label="Credit rating" Student="Y">
    <Units>15</Units>
  </MaxUnits>
  <TeachingPeriods Applicant="Y" Label="Teaching period(s)" Student="Y">
    <Period>Semester 1</Period>
  </TeachingPeriods>
  <AcademicCareer Applicant="Y" Label="Academic career" Student="Y">
    <Value>Postgraduate Taught</Value>
  </AcademicCareer>
  <UnitLevel Applicant="Y" Label="Unit level" Student="Y">
    <Level>Level 6</Level>
  </UnitLevel>
  <StaffList Applicant="Y" Label="Teaching staff" RoleLabel="Course Unit Role" Student="Y">
    <StaffMember>
      <Name>Murilo Marinho</Name>
      <Role>Unit coordinator</Role>
    </StaffMember>
  </StaffList>
  <OfferedBy Applicant="Y" Label="Offered by" Student="Y">
    <OrganisationList>
      <Organisation>
        <OrgName></OrgName>
      </Organisation>
    </OrganisationList>
    <GroupList>
      <Group>
        <GroupName></GroupName>
      </Group>
    </GroupList>
    <FheqLevels>
      <FheqLevel>
        <LevelNumber>1</LevelNumber>
        <LevelName>FHEQ level (Framework for Higher Education Qualifications) ' Masters/Integrated Masters P4 ' </LevelName>
      </FheqLevel>
    </FheqLevels>
    <Ects>
      <MaxUnits>European Credit Transfer &amp; Accumulation System Rating :   7.5</MaxUnits>
    </Ects>
  </OfferedBy>
  <MarketingOverview Applicant="Y" Label="Marketing Course unit overview" Student="">
    <Content>&lt;p&gt;Software is a fundamental element of robotic systems, both for embedded control and simulation. Students will use the Linux OS, which is widely used in the robotics community and programme in Python. Employing appropriate robotic middleware, they will produce custom code whilst following good software development practices. They will construct simulation environments allowing visualisation of robotic systems and hardware-in-the-loop integration and develop and implement a navigation stack for a robot within it. Key considerations such as cybersecurity will also be explored.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Topics covered:&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Introduction and installation&lt;/li&gt;&lt;li&gt;Python best practices&amp;nbsp;&lt;/li&gt;&lt;li&gt;ROS2 packages, nodes, and libraries&lt;/li&gt;&lt;li&gt;ROS2 Messages, Parameters, and Launch files.&amp;nbsp;&lt;/li&gt;&lt;li&gt;ROS2 services and actions&lt;/li&gt;&lt;li&gt;URDF &amp;amp; Describing Robots&lt;/li&gt;&lt;li&gt;Gazebo &amp;amp; Simulations&lt;/li&gt;&lt;li&gt;Navigation &amp;amp; Planning Pt. 1&lt;/li&gt;&lt;li&gt;Create a ROS2 package with a map (.pgm and .yaml files) for a Gazebo simulation environment.&lt;/li&gt;&lt;li&gt;Navigation &amp;amp; Planning Pt. 2&lt;/li&gt;&lt;li&gt;Create a ROS2 package which contains a suitable launch file and .yaml configuration files to run a semi-autonomous navigation of a simulated mobile robot using Nav2.&lt;/li&gt;&lt;li&gt;Behaviour Trees&lt;/li&gt;&lt;/ul&gt;</Content>
  </MarketingOverview>
  <UnitOverview Applicant="" Label="Course unit overview" Student="Y">
    <Content>&lt;p&gt;Software is a fundamental element of robotic systems, both for embedded control and simulation. Students will use the Linux OS, which is widely used in the robotics community and programme in Python. Employing appropriate robotic middleware, they will produce custom code whilst following good software development practices. They will construct simulation environments allowing visualisation of robotic systems and hardware-in-the-loop integration and develop and implement a navigation stack for a robot within it. Key considerations such as cybersecurity will also be explored.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Topics covered:&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Introduction and installation&lt;/li&gt;&lt;li&gt;Python best practices&amp;nbsp;&lt;/li&gt;&lt;li&gt;ROS2 packages, nodes, and libraries&lt;/li&gt;&lt;li&gt;ROS2 Messages, Parameters, and Launch files.&amp;nbsp;&lt;/li&gt;&lt;li&gt;ROS2 services and actions&lt;/li&gt;&lt;li&gt;URDF &amp;amp; Describing Robots&lt;/li&gt;&lt;li&gt;Gazebo &amp;amp; Simulations&lt;/li&gt;&lt;li&gt;Navigation &amp;amp; Planning Pt. 1&lt;/li&gt;&lt;li&gt;Create a ROS2 package with a map (.pgm and .yaml files) for a Gazebo simulation environment.&lt;/li&gt;&lt;li&gt;Navigation &amp;amp; Planning Pt. 2&lt;/li&gt;&lt;li&gt;Create a ROS2 package which contains a suitable launch file and .yaml configuration files to run a semi-autonomous navigation of a simulated mobile robot using Nav2.&lt;/li&gt;&lt;li&gt;Behaviour Trees&lt;/li&gt;&lt;/ul&gt;</Content>
  </UnitOverview>
  <Aims Applicant="Y" Label="Aims" Student="Y">
    <Content>&lt;p&gt;Introduce students to the key software technologies used within the robotics community. Students will make use of the Linux OS and programme in Python as they develop software engineering skills employing widely used middleware for robotic systems in a range of simulation environments.&lt;/p&gt;</Content>
  </Aims>
  <LearningOutcomes Applicant="Y" Label="Learning outcomes" Student="Y">
    <Content>&lt;p&gt;&lt;strong&gt;On successful completion of the course, a student will be able to:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;ILO 1:&lt;/strong&gt; Use the Linux operating system and programme in Python.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;ILO 2: &lt;/strong&gt;Demonstrate good software engineering practices in the development of code, including the use of version control and testing methodologies.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;ILO 3:&lt;/strong&gt; Employ appropriate middleware for robotic systems and produce custom code to integrate into it.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;ILO 4: &lt;/strong&gt;Construct simulation environments allowing visualisation of robotic systems and hardware-in-the-loop integration.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;ILO 5: &lt;/strong&gt;Design and implement a navigation stack for a robotic system and evaluate its performance in simulation.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;ILO 6: &lt;/strong&gt;Discuss the challenges of cybersecurity within software for robotic systems.&lt;/p&gt;</Content>
  </LearningOutcomes>
  <Knowledge Applicant="Y" Label="Knowledge and understanding" Student="Y">
    <Content></Content>
  </Knowledge>
  <IntellectualSkills Applicant="Y" Label="Intellectual skills" Student="Y">
    <Content></Content>
  </IntellectualSkills>
  <PracticalSkills Applicant="Y" Label="Practical skills" Student="Y">
    <Content></Content>
  </PracticalSkills>
  <TransferableSkills Applicant="Y" Label="Transferable skills and personal qualities" Student="Y">
    <Content></Content>
  </TransferableSkills>
  <EmployabilitySkillsList Applicant="Y" Label="Employability skills" Student="Y">
    <Skill>
      <SkillId></SkillId>
      <SkillDescription></SkillDescription>
    </Skill>
  </EmployabilitySkillsList>
  <Syllabus Applicant="Y" Label="Syllabus" Student="Y">
    <Content></Content>
  </Syllabus>
  <TeachingMethods Applicant="Y" Label="Teaching and learning methods" Student="Y">
    <Content>&lt;p&gt;This unit will be practically oriented with students using their laptops to complete exercises both asynchronously and synchronously. Technical topics will be supported by asynchronous teaching materials.&lt;/p&gt;</Content>
  </TeachingMethods>
  <AssessmentMethods Applicant="Y" Label="Assessment methods" Student="Y">
    <IntroText> </IntroText>
    <Method>
      <MethodId>0</MethodId>
      <MethodName>Other</MethodName>
      <MethodWeight>50%</MethodWeight>
    </Method>
    <Method>
      <MethodId>2</MethodId>
      <MethodName>Written assignment (inc essay)</MethodName>
      <MethodWeight>50%</MethodWeight>
    </Method>
    <OtherDescription>&lt;p&gt;Continuous assessment through weekly synchronous software activities (5% per weekly activity - 50% total)&lt;/p&gt;&lt;p&gt;Coursework 1 - bespoke software with supporting documentation (25%)&lt;/p&gt;&lt;p&gt;Courswork 2&amp;nbsp;- bespoke software with supporting documentation (25%)&lt;/p&gt;</OtherDescription>
  </AssessmentMethods>
  <FeedbackMethods Applicant="Y" Label="Feedback methods" Student="Y">
    <Content>&lt;p&gt;Continuous assessment through weekly synchronous software activites (5% per weekly activity - 50% total). Feedback provided in session or 1 week after session.&lt;/p&gt;&lt;p&gt;Coursework 1 - bespoke software with supporting documentation (25%). Feedback provided 3 weeks after submission, individual and group feedback is provided.&lt;/p&gt;&lt;p&gt;Coursework 2&amp;nbsp;- bespoke software with supporting documentation (25%).&amp;nbsp;Feedback provided 3 weeks after submission, individual and group feedback is provided.&lt;/p&gt;</Content>
  </FeedbackMethods>
  <RequirementsList Applicant="Y" Label="Pre/co-requisites" Student="Y">
    <Requirement>
      <UnitCode></UnitCode>
      <UnitTitle></UnitTitle>
      <RequirementType></RequirementType>
      <Description></Description>
    </Requirement>
    <AdditionalRequirement></AdditionalRequirement>
  </RequirementsList>
  <AcademicPrograms Applicant="Y" Label="Academic programmes" Student="Y">
    <AcademicProgram>
      <Program></Program>
      <Plan></Plan>
      <Level></Level>
      <Requirement></Requirement>
    </AcademicProgram>
  </AcademicPrograms>
  <FreeChoice Applicant="Y" Label="Available as a free choice unit?" Student="Y">
    <Content>N</Content>
  </FreeChoice>
  <Accreditation Applicant="Y" Label="Accreditation" Student="Y">
    <Content></Content>
  </Accreditation>
  <RecommendedReading Applicant="Y" Label="Recommended reading" Student="Y">
    <Content>&lt;p&gt;Joseph, L. and Johny, A. (2022). Robot operating system (ROS) for absolute beginners : robotics programming made easy. Second edition / Lentin Joseph, Aleena Johny. New York, NY: Apress.&lt;/p&gt;&lt;p&gt;Koubâa, A. (2021). Robot operating system (ROS) : the complete reference. (Volume 6). A. Koubâa, ed. Cham: Springer.&lt;/p&gt;</Content>
  </RecommendedReading>
  <StudyHours Applicant="Y" Label="Study hours" Student="Y">
    <IntroText> </IntroText>
    <ScheduledHours Applicant="Y" Label="Scheduled activity hours" Student="Y">
      <ActivityHours>
        <ActivityType>Lectures</ActivityType>
        <Hours>33</Hours>
      </ActivityHours>
      <ActivityHours>
        <ActivityType>Tutorials</ActivityType>
        <Hours>9</Hours>
      </ActivityHours>
    </ScheduledHours>
    <PlacementHours Applicant="Y" Label="Placement hours" Student="Y">
      <ActivityHours>
        <ActivityType></ActivityType>
        <Hours>0</Hours>
      </ActivityHours>
    </PlacementHours>
    <TotalHours Applicant="Y" Label="Independent study hours" Student="Y">
      <Hours>108</Hours>
    </TotalHours>
  </StudyHours>
  <Notes Applicant="Y" Label="Additional notes" Student="Y">
    <Content></Content>
  </Notes>
</CourseUnit>
