This repository contains the software packages developed for the Robotics Lab exam project.
The goal of the project is the design and implementation of an automated workshop composed of:
- A fixed robotic manipulator
- A differential-drive mobile robot The system is designed to demonstrate autonomous navigation, task execution, and cooperation between heterogeneous robotic platforms.
The entire project has been developed using ROS 1. Future updates may include a migration to ROS 2 to take advantage of improved communication, real-time capabilities, and long-term support.
apriltag: is a Robot Operating System (ROS) wrapper of the AprilTag 3 visual fiducial detector.apriltag_ros: depends on the latest release of the AprilTag library. Clone it into your catkin workspace before building.kuka_iiwa: URDF description of Kuka Iiwa manipulator including its sensors and plugin.kuka_iiwa_config: configuration of Kuka Iiwa for using MoveIt.project_package: package that contain services, custom libraries and launchers necessary for the project.turtlebot3_description: URDF description of turtlebot including its sensors, plugin, SLAM and navigation stack configuration.
To build the packages in this repository follow these steps:
-
cdinto an existing ROS Noetic catkin workspace or create a new one:mkdir -p catkin_ws/src -
Clone this repository in the
srcfolder of your ROS Noetic catkin workspace:cd catkin_ws/srcgit clone https://github.com/AndreaMazzera/Project_Robotics_Lab.git -
Install the requried binary dependencies of all packages in the catkin workspace using the following
rosdepcommand (I added this command because I've read that it often helps with the dependency issue):rosdep install --from-paths src --ignore-src -r -y -
After installing the required dependencies build the catkin workspace:
catkin_ws$ catkin build -
Finally, source the newly built packages with the
devel/setup.*script, depending on your used shell:catkin_ws$ source devel/setup.bash
To test the project open three terminal and launch respectively:
- Launcher for Gazebo, Rviz, Moveit, Navigation Stack and a service server that us a tf listener (get_coordinates server):
roslaunch project_package project_bringup.launch- Launcher for servers of each robot. Each robot has its server for receive commands from user script, so in this console we can see the history of commands received from the two servers. Notice that, each notification is preceded by the name of the robot it is associated with (Ex. KUKA: Request for homing position successfully received).
roslaunch project_package servers.launch- Launcher for user script. In this console the user send commands to two robot, for example go take a specif tool.
roslaunch project_package script.launchNow in console of last launcher, the script ask to user if he wants to carry out the exploration phase or not:
- Case A – Negative Answer: the user script send first exploration command to manipulator and, when it finish, send exploration command to mobile robot.
- Case B – Affirmative Answer: the user script send auto-exploration command for both robots. This mean that we want skip this phase for both robots. So, information about delivery point and collocation of tools will be resolve automatically without any action from the robots.
| Kuka Exploration | Turtlebot Exloration |
|---|---|
![]() |
![]() |





