These Python Jupyter notebooks are designed for academic teaching laboratories in robotics, using Gazebo for simulation up to physical deployment on robotic platforms. The students are not expected to install or deploy the required ROS workspace on their personal computer, but rather use lab resources at the university. The laboratories were designed at École de technologie supérieure, in Montréal, Canada, and adapted for the University of Canberra. Robotic platforms are available for the students to test their algorithms along with shared laptop stations.
The notebooks are designed to be used with a ROS workspace that contains the following packages:
- Sphero RVR ROS - ROS packages for the Sphero RVR
- Kinova Gen3 lite ROS - ROS packages for the Kinova Gen3 lite
- Project 0 - Primers - Primers on Python, the terminal, and ROS
- Project 1 - Sense -> Think -> Act - Feedback & Robotic algorithm fundamentals
- Project 2 - Perception, Filters, and Navigation - Localization, Navigation & Mapping
- Project 3 - Kinematics - Kinematics for a Robot Manipulator
- Project 4 - Mobile Manipulators - Mobile Robotics & Manipulator Control
- Project 5 - Inference - Perception and Navigation
The software requires ROS to be installed to use the rospy
libraries. Follow the instructions for ROS Noetic
on the official website.
Setting up a python virtual environment for can be useful in some development situations. Run the following command in a terminal at the top level of this git repository.
# create virtual environment
python3 -m venv .venv
# linux
source .venv/bin/activate
pip install -r requirements.txt
The code is provided as Jupyter notebooks. In a terminal at the top level of this git repository, run the following.
source .venv/bin/activate
# start a jupyter notebook server
jupyter lab --ip=0.0.0.0 --port=8888
# open a web browser to the address provided in the terminal
# for example: http://localhost:8888/lab?token=...
# or run a voila server for the UI only version
voila . --port=8866
Contributions are welcome. Please read the contributing guidelines for more information.
Fork the repository, make a pull request or open an issue. Contributions are welcome.
The contents of this source is provided in an experimental state and does not guarantee safe or correct operation.
The contents of this source is subject to change, without prior notice. Any available APIs are to be considered unstable and are not guaranteed to be complete and / or functional.