Hackster is hosting Hackster Holidays, Ep. 6: Livestream & Giveaway Drawing. Watch previous episodes or stream live on Monday!Stream Hackster Holidays, Ep. 6 on Monday!
Ajay Vishaal
Published © GPL3+

Aurora

A UV robot design with Autonomous, manual, and Voice Control to fight this covid-19 pandemic intelligently.

ExpertWork in progressOver 6 days3,907

Things used in this project

Hardware components

NVIDIA Jetson Nano Developer Kit
NVIDIA Jetson Nano Developer Kit
×1
LIDAR
×1
Arduino UNO
Arduino UNO
×1
Dual H-Bridge motor drivers L298
SparkFun Dual H-Bridge motor drivers L298
×1
PIR Motion Sensor (generic)
PIR Motion Sensor (generic)
×4
Buzzer, Piezo
Buzzer, Piezo
×2
5 mm LED: Green
5 mm LED: Green
×1
5 mm LED: Red
5 mm LED: Red
×1
Pi NoIR Camera V2
Raspberry Pi Pi NoIR Camera V2
×1
USB Microphone
×1
Geared 12V DC Motors
×2
12v 25Ah lithium ion battery
×1
12v to 230v inverter
×1
Gravity Analog UV Sensor V2
DFRobot Gravity Analog UV Sensor V2
×1
UV light/lamp
×5
Relay (generic)
×5
360 degree Servo Motor
×1
5V 4A DC-DC Buck Converter
×1
12V 2A DC-DC Converter
×1
UV Light Choke
×5

Software apps and online services

Robot Operating System
ROS Robot Operating System
Python3
Nvidia Jetpack SDK
Kivy Python Library

Hand tools and fabrication machines

Drill / Driver, Cordless
Drill / Driver, Cordless
Hot glue gun (generic)
Hot glue gun (generic)
Soldering iron (generic)
Soldering iron (generic)

Story

Read more

Custom parts and enclosures

Aurora Design

Schematics

Block diagram of Aurora bot

Code

A simple obstacle avoidance code with ROS

Python
#!/usr/bin/env python
#Author : Ajay Vishaal T
#Written on : 23/07/2020

import rospy
from move_base_msgs.msg import MoveBaseAction, MoveBaseGoal
import actionlib
from actionlib_msgs.msg import *

class GoForwardAvoid():
    def __init__(self):
        rospy.init_node('nav_test', anonymous=False)

	#what to do if shut down (e.g. ctrl + C or failure)
	rospy.on_shutdown(self.shutdown)

	
	#tell the action client that we want to spin a thread by default
	self.move_base = actionlib.SimpleActionClient("move_base", MoveBaseAction)
	rospy.loginfo("wait for the action server to come up")
	#allow up to 5 seconds for the action server to come up
	self.move_base.wait_for_server(rospy.Duration(5))

	#we'll send a goal to the robot to move 3 meters forward
	goal = MoveBaseGoal()
	goal.target_pose.header.frame_id = 'base_link'
	goal.target_pose.header.stamp = rospy.Time.now()
	goal.target_pose.pose.position.x = 3.0 #3 meters
	goal.target_pose.pose.orientation.w = 1.0 #go forward

	#start moving
        self.move_base.send_goal(goal)

	#allow TurtleBot up to 60 seconds to complete task
	success = self.move_base.wait_for_result(rospy.Duration(60)) 


	if not success:
                self.move_base.cancel_goal()
                rospy.loginfo("The base failed to move forward 3 meters for some reason")
    	else:
		# We made it!
		state = self.move_base.get_state()
		if state == GoalStatus.SUCCEEDED:
		    rospy.loginfo("Hooray, the base moved 3 meters forward")



    def shutdown(self):
        rospy.loginfo("Stop")


if __name__ == '__main__':
    try:
        GoForwardAvoid()
    except rospy.ROSInterruptException:
        rospy.loginfo("Exception thrown")

Credits

Ajay Vishaal

Ajay Vishaal

7 projects • 15 followers
I'm a science and technology enthusiast. Started developing projects at the age of 14. I love innovating new things.In Love with Robotics.

Comments