I’m new to ROS and using a simple domestic “problem” as a platform to build a robot from the ground up while I learn ROS and robotics in general.
I have a formal background in electronics, plus 15+ years building business applications, and I also have a lot of mechanical and fabrication background… so, I thought robotics would be a fun way to put all these skills together… and presumably I will find some opportunities somewhere along the way to make this somewhat profitable.
BennyBot… which is just a play on my last name (Benson)… is (going to be) an autonomous platform that will find my garbage bin, load it up, transport it to the end of my driveway and drop it off at the curb on collection day, then go retrieve the empty bin after it’s been emptied. Every second week, it will do the same with the compost bin.
I’m still very early stages, but I have some of the mechanical, electronic, and ROS nodes operational… the mechanical and electronics are relatively easy for me… ROS is my learning curve, but it’s all making sense so far.
I am using one (or more) raspberryPi 3 SBCs, one Arduino, two Dimension Engineering 2x32 Sabertooth motor controllers with Kangaroo X2 PID controllers, 4 AndyMark PG71 gear motors, a single RPLidar A2 scanner, some sort of IMU (currently experimenting with an LSM9DS1 from SparkFun), and probably a 3d camera, and maybe a GPS for fun.
My platform is a bit unique in that the rear wheels are not fixed to the frame, they pivot on a swingarm. The idea is that this will allow the platform to “kneel” at one end in order to pull the garbage/compost bin on board, then raise up again once the bin is properly positioned. What makes this unique is that the wheels themselves are used to raise and lower the platform… there is a locking mechanism on the swingarm… when locked in the upgright position, the platform can travel around to transport the bin. When unlocked, if I drive the front and rear wheels in opposite directions, the frame will kneel down at one end as the swingarms swing upward. Driving the front and rear wheels towards each other will lift the platform, followed by locking the swingarms in place in preparation for travel. I know this is hard to envision… so here are some videos that might help:
This is the swingarm with a servo motor that locks/unlocks it to the robot frame. The servo is controlled by the Arduino using the RosSerial Arduino bridge… I can publish messages to lock and unlock the swingarm from a terminal window , this was my first real robot movement controlled by ROS… I’m calling that Benny’s birthday
This is a side view of the frame, with both wheels being controlled by ROS using the kangaroo_x2_driver by smd-ros-devel.