This repository contains assignments and a final project completed for the course DD2410 - Introduction to Robotics at KTH Royal Institute of Technology. The assignments provide hands-on experience with ROS (Robot Operating System), kinematics, path planning, and simulation environments like Gazebo.
- ROS Melodic
- Ubuntu 18.04 or compatible with ROS Melodic
- Gazebo, Rviz, and other ROS-related tools
This programming exercise helps you get acquainted with ROS and development tools through the simulation of a Kobuki differential drive robot. The goal is to make the robot follow a wall using distance sensor data.
- Installing Ubuntu and ROS Kinetic
- Linux and ROS tutorials (ROS tutorials 2–10, 12–13)
- Understanding the Kobuki robot: Kobuki ROS Wiki
- Simulating Kobuki: Simulated Kobuki Navigation Tutorial
You will implement inverse kinematics solutions for two robot manipulators: a Scara robot and a Kuka robot.
- Modify
IK_functions.pyin the ROS package. - Analytic IK solution.
roslaunch kinematics_assignment scara_launch.launch- Advanced IK problem using Jacobians.
- For Jacobians, refer to Springer’s book: Robotics: Modelling, Planning and Control
roslaunch kinematics_assignment kuka_launch.launchLearn to model a car-like robot using Dubin’s paths.
- Tutorial: Dubin's Car
- Clone the repo:
git clone https://github.com/cisprague/dubins.gitConstraints to keep in mind:
- -π/4 ≤ controls[i] ≤ π/4
- time[i+1] > time[i]
- ∆t ≥ 0.01s
Mapping is a fundamental capability for autonomous robots. The robot builds a map from scratch using onboard sensors.
Use SLAM techniques for mapping, and ensure it works in uncertain, dynamic environments.
You will simulate a TIAGo robot in Gazebo to perform manipulation tasks such as pick, carry, and place.
- Pick & Place with visual sensing #1
- Pick & Place with visual sensing #2
- Pick & Place with navigation
Clone and build the project:
cd ~/catkin_ws/src/
git clone https://github.com/kth-ros-pkg/Robotics_intro.git
cd ~/catkin_ws
catkin_make -DCATKIN_ENABLE_TESTING=0
source devel/setup.bashLaunch simulation:
roslaunch robotics_project launch_project.launchHandle model resets:
- Manually delete
tiago_steelandaruco_cubemodels in Gazebo after stopping simulation. - Relaunch both launch files if needed.
Some components rely on probabilistic models. Failures such as AMCL divergence, cube drops, or MoveIt trajectory issues are expected. Implement feedback/error handling in your state machine to account for these.
Feel free to fork, open issues, or submit pull requests!
MIT License




