UVC_Disinfecting_Robot uses SLAM (ROS) with a Kinect to navigate in its environment. It is powered by ROS running on a Jetson Nano and an Arduino Mega that controls two motors with encoders.
In its current state the robot uses SLAM (RTABMap) to create a map of its surroundings (using the Kinect depth perception and converting it into a laserscan type message to detect wall and obstacles) and localize itself within the map. It plans a path multiple goals to achieve autonomous navigation with obstacle avoidance and human detection features.
UVC_Disinfecting_Robot is a differential drive robot with the motors placed on the same axis. The base is made of clear acrylic and metal brackets with one caster wheel for support.
This package includes all the robot files that are needed to setup the robot. The package includes several launch files used to test the robot, start the mapping and begining the navigation. The launch file "urdf.launch" launches the joint and robot state publisher as well as RViz to display the model.
This package includes the URDF file.
This package includes the URDF description of the robot and the associated CAD files for display in RViz.
The arduino subscribes to "cmd_vel" node and receives the command order from the move base node which specifies the motor speeds. It also sends back the encoder data needed for the odometry to be used in localisation through ROSSerial.
The software for the UVC_Disinfecting_Robot project was developped with ROS Melodic and Ubuntu 18.04. More recent versions should work as well but might require some tweaking.
To use UVC_Disinfecting_Robot you will need the following packages (most of them should already be installed by default or requested when building the UVC_Disinfecting_Robot packages):
- The navigation stack.
- The freenect package (for connecting to the Kinect)(https://github.com/reachpranjal/install-kinect-in-jetson-nano).
- RViz.
- TF Publisher.
- Joint State Publisher.
- Robot State Publisher.
- ROSSerial package (for connecting to the Arduino Mega).
- rtabmap_ros.
- jetson-inference.
In order to navigate UVC_Disinfecting_Robot you will need to start two launch files.
Then connect using vnc viewer on your laptop/PC and now you have access to the jetson nano from your remote pc.
Use the following command to start the testing program:
roslaunch uvc_robot driver.launch
It will launch the serial controller node connected to the Arduino, the odometry node and the joint state publisher.
In order to be able to map you have to use a launch file.
roslaunch uvc_robot slam.launch
It will launch the kinect node, rtabmap_ros node, telop keyboard and RViz. Using the ROS teleop keyboard to control the robot to map the environment:
Use the following command to start the main program:
roslaunch uvc_robot uvc_robot_bringup.launch
It will launch the map server to save the map files (map1.pgm and the yaml file), the navigation stack - (acml.launch, move_base.launch), the cmd_vel mux and RViz.
##Voila
- Addition of imu for a more accurate position by sensor fusion.
- Implementation of the continous move base goal script, by adding the BFS script to publish move base sequence goals to move_base_msg/seq.
- Using a slightly lighter slam algorithm such as gmapping by using a 2D Lidar for more accurate mapping.
- Marwan Hesham
- Omar Atef
- Abdulrahman Atef