Vahan - Swarm of Autonomous Guided Vehicles (AGVs)
About the Project
I worked as a Robotics Engineer in the ‘Automation and Hardware’ team of Udaan - a B2B Buying for Retailers (Similar to Amazon). We worked on developing a warehouse automation system called Vahan. It is a goods-to-person system comprising a swarm of Automated Guided Vehicles (AGVs). Each robot is capable of lifting up to half a metric ton of load. The robots would typically carry a rack and maneuver it around the warehouse to aid a human in picking the goods, thus enabling faster pick time.
About the Team
We are group of passionate engineers, working hard to innovate cutting edge warehouse automation systems. A few notable projects we work on are -
Project | Description |
---|---|
Dhirstri | A LxBxH measurement rig based on image processing to estimate the size of SKUs in warehouse |
Vahan | A swarm of robots bringing racks to the picker and helping in the picking process for faster delivery times. |
Airavat | A swarm of robots lifting heavy pallets and moving them to storage thus saving human efforts. |
Viman | A B2B drone delivery system used for refilling satellite warehouse with inventory. |
My Work in Detail
Some of the exact details of implementation are omitted to comply with the NDA signed. All the information here is openly available on the internet and only summarizes what kind of work I did.
Multi-Robot Path Planning
In a warehouse setting, multi-robot path planning optimizes the movement and task allocation of a fleet of robots.. Using path planning algorithms, the robots can efficiently navigate through the warehouse and avoid collisions with other objects. The goal of the system is to improve the overall performance of the warehouse by minimizing the time it takes for the robots to complete their tasks and maximizing the utilization of the robots. This potentially leads to increased productivity and efficiency in the warehouse, resulting in cost savings and improved customer satisfaction.
My Approach
The vahan system is comprised of robots, which navigate with the help of QR codes pasted on the ground. All the robots move in a grid pattern making only 90° turns. I opted for a simple solution: I used an entity reservation system to block passage for the robots. The path for any given robot is calculated using D* Lite algorithm. Here is a step-by-step breakdown of the process.
- A bot is assigned a task to move Rack-1 from point A to point B.
- The bot first checks whether or not Rack-1 is free for use and reserves that rack.
- Further, it computes the shortest path from its current location to point A and reserves the whole path. It also avoids already reserved nodes.
- Then, it moves to point A and picks up the rack.
- Then, the robot repeats step 3 to move to point B this time.
This approach was designed to be easily iterable. Hence we could do things like swapping the path-planning algorithm, changing the reservation method to reserve partial paths, or creating danger zones in case of hardware failure of a single robot.
Rotation Controller
The Problem
By far, this was one of the most exciting problems we encountered. When the bot was rotating with equal and opposite velocities applied to differential drive, it drifted from the center of rotation in a helical pattern. Despite our best efforts to construe the phenomena, we could not model the physics, which led to drifting, because of which the design of an open loop controller was out of the question. And a closed-loop solution was needed to be implemented.
The Solution
I opted for a closed-loop controller based on Springer Handbook. The controller followed a strategy of first defining a velocity trapezoid such that the displacement angle of the robot, which is the area under the curve, will be equal to the desired angle. I designed the velocity profile considering the maximum torque the motor could provide, safe operating speed, and no excessive acceleration to damaged items on the rack. The velocity curve is integrated to attain the angle of the displacement curve at any given time (t). The controller then generated the velocities for both wheels by assessing the reference and measured angles.
Figure of Velocity and Angle curves
|
|
Modbus Integration
Modbus is a serial communication protocol developed by Modicon to use with its programmable logic controllers (PLCs). In simple terms, it is a method of transmitting information over serial lines between electronic devices. The servo motors we used for the wheel communicated via Modbus. One of the major challenges in this task involved reading the datasheet of the motor controller and deriving the values for the register to be written over Modbus. It was painstaking work. Also, I developed a ROS-like lightweight pub-sub framework based on ZeroMQ, which was used to communicate at more than 100Hz with the velocity controller.
Project Pilot
Summary
When I joined the team, we had a robot purchased from OKAGV, which was lying around as our in-house robot was under development. This robot was purchased to gauge the feasibility of a goods-to-person system and study the internal working of such robots. To speed up the deployment, I picked up the integration of the OKAGV robot with the software developed so far. This was helpful for two things; firstly, it enabled use to fine-tune the software outside of the simulation. Secondly, this pilot helped us create awareness amongst the warehouse staff, train operators, and get in order the administrative setup to run a good-to-person system on the ground.
Pick Put Station
Description
Pick Put Station (PPS) is a designated space where a person (operator) stands and performs picking and putting operations. This is where the robots bring the rack for the item to be picked. I design all the hardware placed at the PPS and the flows in which that hardware will be used. I also created and integrated the PPS console, the web app displayed in the video. One warehouse can have multiple such PPS, and ideally, the robots will queue near the PPS, thus increasing the person’s efficiency. In future versions, small lights can be used to speed up the picking process further.
Console - Web App
This console indicates to the operator what task he has to perform at a glance. It contains information such as -
- Whether to ‘pick the item from the rack (PICK)’ OR ‘put the item into the rack (PUT).’
- Which item is to be processed
- What is the quantity of an item
- What is the location of the item on the rack.
- At what location item should be put.
The best thing about this console is that everything can be done hands-free using the barcode scanner. The Ui is automatically updated after the barcode of particular locations is scanned.