This week I worked more on the tuning of RTABMAP SLAM and eventually decided on using ORB SLAM instead because it is more robust, easy to tune, and faster. RTABMAP performs excessive calculations for our purposes and requires extremely stable x-y motion since it makes the assumption that there is constant elevation. As such, jiggling in the z-direction causes lots of problems but ORB SLAM solves this. I was able to get a basic ORB SLAM working in a simulation and somewhat working with an actual camera but more work needs to be done.
To better test our robot design, I created my own robot here in Florida using a Jetson, our depth camera, Arduino, motors, rubber wheels, caster wheel, motor shield, wood, wires, nuts and bolts, spacers, table saw to cut the wood, measuring tape to determine hole alignment and hardware placement. To make the gripper I used a funnel, balloon, motor, hose, and tape. I was able to get the depth camera to connect to the Jetson and run the RTABMAP SLAM packages along with the beginnings of the ORB SLAM code, control the wheel motors, get the gripper to grip a marker, and get two other motors to move which will be used for the arm in the future. A basket and the arm itself still need to be made. I also have an ultrasonic sensor which allows the robot to stop if there is something in front of it.
In terms of path planning, I decided to shift gears and do a more basic algorithm since the semester is coming to an end and there is still lots to do. The robot will move at a fixed distance from a wall, veer away from the wall when it gets too close. When a pink marked object is in sight, it will move towards it while storing and updating directions on how to get to the object. If on the way to the object, another one is found and is closer, it will move to that instead all while keeping the directions towards the other objects in mind. The robot will then move to each object seen in order of closeness. Once all of the objects that were detected have been collected and if there are still more to be collected, it will spin in circle to look for more. If none are seen, it will just drive forward and continue to veer away from walls. Every 10 seconds that have gone by without a tool being found, the robot will move perpendicular from the nearest wall by a set distance and spin in a circle to scan the room for objects. This cycle will keep repeating until all the tools have been collected.
Hojun and I tried to get the iRobot to move using the Xavier but had difficulties getting to work. We plan on getting the iRobot to move by the end of this week. If we cannot properly control it, we will just use the robot that I build since it can turn and move forward and use a camera for feedback which is all that is needed properly collect items.