Skip to content
@JMU-ROBOTICS-VIVA

JMU-ROBOTICS-VIVA

Teaching Materials for Autonomous Robotics

Introduction

This organization contains projects, template programs and utilities, and other learning materials for an autonomous robotics course targeted to computer science undergraduates. It corresponds with a course at James Madision University (CS 354) and the book Just Enough Robotics by Nathan Sprague.

Listed below are the general topics covered by the book/course and a brief description of the corresponding projects, labs and repositories to support that material.

Some of these projects use ROS (Robot Operating System) and have been tested using the ROS2 Foxy release. Where applicable, these projects utilize the Turtlebot3 Waffle Pi robot platform.

Portions of this work were supported by a grant from the Virtual Library of Virginia (VIVA).

Textbook

The LaTeX source files for the textbook are available in the robotics-book-public repository. A PDF version of the book can be downloaded here:

Sample Course Schedule

The following course schedule includes links to lab activities, homework assignments, and readings. The posted readings are primarily from Just Enough Robotics and the official ROS2 Tutorials.

Course Materials By Topic

Learning Python

  • Bumperbot Project This is a warm-up project designed to introduce some ideas in robotics and provide a starting point for students without Python programming experience.

Learning ROS

These activities are primarily focused on getting students comfortable with ROS2 and working with the Turtlebo3 platform, both in simulation and on the physical robots.

Closed Loop Control and PID (Proportional, Inverse, Derivative) Controllers

  • Locomotive Simulation Activity [repository] [writeup] A warm-up activity in which a one dimensional train needs to stop at a point on the track and the only control the student can apply is a force (both positive and negative). This activity motivates the need for a controller algorithms.

  • PID Practice Lab [repository][writeup] Activity for learning about multidimensional PID parameters and how to pass ROS2 parameters use launch files. This includes a rocket visualization where the job of the PID controller is to make the rocket climb and maintain a specific altitude. The rocket simulator is available from the rocketbot repository.

  • Skibot Project [repository][writeup] Practice with 2D PID controller and ROS services. A skier has a goal location passed via a ROS service and the PID controller must navigate the skier to this location. The program must be able to accept new goal locations. This simulated skier accepts linear as well as angular/rotational forces. A graphical simulator is provided so the student can visualize how well their controller is functioning. The simulator is located in the skibot repository.

Kinematics and Coordinate Frames

Planning

  • PyArm A 2D robotic arm simulator that can be used to develop and test planning algorithms.

  • Planning Project [repository] Allows students to explore using a deterministic and optimal planner (A*) versus a few probabalistic ones. Uses the PyArm for simulation and visualization.

  • Planning Visualizations This is a playlist of animations for the algorithsm described in the planning chapter of Just Enough Robotics.

Robot Navigation Navigation

  • Introductory ROS2 Navigation Lab [writeup]

  • Random Navigation Lab [repository][writeup]. Utilizes ROS navigation and occupancy grids. Students write code to select a random unoccupied location in the map, and use the ROS2 navigation system to move the robot to that location.

  • Zeta Rescue - A Final Challenge Project [repositories][writeup] This project involves conducting a time-limited search to "rescue" individuals, each marked with an AR tag and identified using the robot's camera. A ROS occupancy map is provided at the time of the competition (but not before, so, essentially it is an unknown space). It has been tested with the Turtlebot-3 Waffle Pi. Many aspects of this project can be enhanced, for example, computer vision methods can be employed to better spot individuals from far away. The supporting repositories that contain Zeta in the name are in support of this project.

Localization

ROS and Turtlebot Support Packages

These packages augment the ROS2 Foxy programming Python API language and the Turtlebot-3 Waffle Pi platform to support the projects/labs.

  • Transform service A ROS2 service that performs transforms between frames. This is useful because TF2, the ROS2 transform library, is not fully supported under Foxy.

  • JMU ROS utilities Provides some useful utility code, including a module that makes it easier to work with OccypancyGrid messages.

  • JMU Turtlebot3 Bringup This package makes the Turtlebot code more ROS2 Foxy friendly.

  • ros2_aruco Wrapper for OpenCV Aruco Marker tracking for use with ROS2.

Popular repositories Loading

  1. ros2_aruco ros2_aruco Public

    ROS2 Wrapper for OpenCV Aruco Marker Tracking

    Python 75 68

  2. rocketbot rocketbot Public

    Python 4 1

  3. python_node_demos_ros2 python_node_demos_ros2 Public

    Simple examples of writing Python publishers and subscribers.

    Python 3

  4. py_arm py_arm Public

    Simple 2D Arm Simulator in Python

    Python 2

  5. jmu_ros2_util jmu_ros2_util Public

    Python 2

  6. rrt_rrtstar rrt_rrtstar Public template

    A programming assignment to introduce the ideas of probabilistic planning using the RRT and RRT* adaptions.

    Python 1

Repositories

Showing 10 of 20 repositories
  • ros2_aruco Public

    ROS2 Wrapper for OpenCV Aruco Marker Tracking

    JMU-ROBOTICS-VIVA/ros2_aruco’s past year of commit activity
    Python 75 MIT 68 3 2 Updated Feb 16, 2024
  • zeta_competition Public

    CS 354 Final Project Competition

    JMU-ROBOTICS-VIVA/zeta_competition’s past year of commit activity
    Python 1 MIT 0 0 0 Updated Oct 27, 2023
  • random_nav Public template

    ROS2 navigation lab

    JMU-ROBOTICS-VIVA/random_nav’s past year of commit activity
    Python 1 MIT 0 0 0 Updated Oct 24, 2023
  • zeta_rescue Public template

    CS 354 Final Project Competition (Student Starter Code)

    JMU-ROBOTICS-VIVA/zeta_rescue’s past year of commit activity
    Python 1 MIT 0 0 0 Updated Oct 20, 2023
  • particle_filter Public template

    ROS2 Particle Filter

    JMU-ROBOTICS-VIVA/particle_filter’s past year of commit activity
    Python 0 MIT 0 0 0 Updated Oct 6, 2023
  • skibot Public
    JMU-ROBOTICS-VIVA/skibot’s past year of commit activity
    Python 0 MIT 2 1 0 Updated Sep 13, 2023
  • python_node_demos_ros2 Public

    Simple examples of writing Python publishers and subscribers.

    JMU-ROBOTICS-VIVA/python_node_demos_ros2’s past year of commit activity
    Python 3 MIT 0 0 0 Updated Aug 31, 2023
  • py_arm Public

    Simple 2D Arm Simulator in Python

    JMU-ROBOTICS-VIVA/py_arm’s past year of commit activity
    Python 2 MIT 0 0 0 Updated Jul 6, 2023
  • JMU-ROBOTICS-VIVA/robotics-book-public’s past year of commit activity
    TeX 1 0 0 0 Updated Jan 18, 2023
  • .github Public
    JMU-ROBOTICS-VIVA/.github’s past year of commit activity
    1 0 0 0 Updated Jan 13, 2023

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…