An Overview of Puck

The robot Puck

Puck is my current robot, as of this posting date. It is intended to be sufficient for autonomous navigation around my house and, eventually, to include a manipulator that will allow Puck to go to the refrigerator, open it, select a specific item off a shelf, grab it, close the refrigerator, and bring the item to me.

I typically name each generation of my robot with a name starting with the next letter of the alphabet. Over the last 3 or 4 years, I’ve gone from Arlene to Puck.

Puck weights in at about 56 pounds on the date of this posting.

The hardware changes all the time as I run experiments and learn what works and what doesn’t. The frame is constructed from 2020 T-slot aluminum extrusions and 1/8-inch thick, aluminum plates.

Motors, Shaft Encoders, Wheels

A motor, right angle coupler and wheel

The robot has a pair of motors beneath the bottom platform. The motors are model IG42 from Superdroid Robots (click on IG42 to see the specifications and on Superdroid to see the catalog item). The motors drive a right angle connector with a 1/49 gear ratio and run at a maximum of 122 RPM with 24 volt power, producing a maximum of 15 kg-cm torque. Note that 15 kg-cm = 1.47 N-m = 1.08 ft-lbs.

According to this site, a pair of motors with 1.5 N-m torque each should be able to propel a 27.22 kg (60 pound) robot with 0.1 meter (4 inch) radius wheels up a 3 degree incline at 1 meter per second (2.24 miles per hour) at an acceleration of 0.2 meters per second squared. This should suffice for my goals.

Each motor has attached a dual-channel, quadrature encoder to provide an estimate of how much rotation each wheel has made over time.

The wheels are 8 inches in diameter and come from RobotShop.

Electrical Power

The main power source is a 36 volt, 30 amp-hour LiFePo4 battery. This drives:

  • A 48-volt to 24-volt, 10-amp DC to DC converter. The 24 volts is supplied to a RoboClaw, dual 15-amp motor controller.
  • A 48-volt to 12-volt, 10-amp DC to DC converter. The 12 volts powers several components, including another DC to DC converter which supplies all the power to the main, AMD Ryzen 3700X processor and motherboard.
  • A 48-volt to 5-volt, 10-amp DC to DC converter. The 5 volts powers several components, including a custom monitor board and an 8-port Ethernet switch.

There is an emergency-off main power switch which feeds the battery voltage to a volt/amp/watt meter which then feeds the DC to DC converters. Through fuses, of course.

The battery terminals are brought out to a pair of Anderson Powerpole connectors which allow an external charger to charge the battery.

The Bottom Plate

The bottom plate

The bottom plate holds the motors, shaft encoders and motor temperature sensors underneath, and on top is:

  • The battery.
  • Three DC to DC power converters.
  • A custom PC board which monitors many sensors and the health of the system.
  • An 8-channel relay board which the monitor controls to power on or off various subsystems or to reset them.
  • The RoboClaw motor controller (mounted vertically just above the battery in the picture, not very visible).
  • A snubber circuit to prevent damage from back-EMF if the motors should be slowed down by external forces (also not very visible in the picture).
  • A pair of redundant current monitors for the motors (not very visible).
  • A terminal barrier strip which routes all the power wiring.

The Middle Plate

The middle plate

The middle plate holds a camera sensor array (not shown in the picture), the main computer (right in the picture) and a secondary computer (left in the picture). Below the aluminum plate is an 8-channel Ethernet switch, a bank of Anderson Powerpole connectors to distribute 12-volt power, and a bank of Anderson Powerpole connectors to distribute 5-volt power.

The main computer is an 8-core, AMD Ryzen 3700x processor with 32GB of RAM and 512GB of solid state (NVMe) disk. The motherboard is also holding a GeForce GT 1030 graphics card.

The secondary computer is an Nvidia Jetson Xavier NX computer, tasked with most of the artificial intelligence tasks for the robot.

The Top Plate

The top plate

The top plate currently hold a LIDAR from a Neato vacuum cleaner, and the control panel. The LIDAR will soon be replace with a different kind. Eventually, a gripper will sit on the top plate.

Partial view of the control panel

The control panel holds a pair of HDMI video/USB connectors (not shown in the picture) which feed the video/keyboard output from the two computers to external keyboards and monitors. Often I put the robot up on blocks and connect a keyboard and monitor to one or both computers for a better software development experience, as opposed to remote login to those systems over the network.

Shown in the picture is the red power-on/emergency shutdown switch (lower right), a voltage/current/wattage meter (lower left) and the control panel for the custom monitor (upper left). The custom monitor panel is a touch screen and can be used to control power to several subsystems or to reset some subsystems. It also shows the real-time readings of several sensors.

The control panel also holds the charging plug for the battery (not shown in the picture).

The Sensors

Mounted to the frame of the robot are 4 sonar sensors and 8 time-of-flight laser sensors. These 12 sensors are used to provide better proximity detection of obstacles near the computer. Readings further than about a meter from the periphery of the robot are ignored by these sensors and other sensors provide distance measuring out to at least 6 meters. Since each kind of sensor has its own special set of materials it can see or not see, I use two different kinds of proximity sensors.

The camera sensor array

In front of the robot, on the middle plate, is mounted a camera sensor array. There are a pair of Intel Realsense D435 stereo cameras which can provide color images, infrared images and depth images. The pair are mounted such that together they give almost a 180 degree view from the front edge of the robot.

Between the D435 cameras, facing upwards, is an Intel Realsense T265 camera which can provide infrared imagery, black and white imagery, but primarily visual odometry for the robot. Motor shaft encoders are poorly suited for robot odometry, although they are used to advise the T265 camera.

In the picture, below the cameras on a cross member you can see one of the sonar sensors.

Shown previously is the LIDAR sensor for 2-dimensional, distance visualization of the environment. The Realsense cameras provide 3-dimensional distance visualization.

The Network

Below the middle plate is mounted an 8-channel, gigabit Ethernet switch. Connected to the switch are the main and secondary computers, the monitor and sometimes a cable is routed from the household Ethernet network. The main computer provides a WiFi connection to the household network, so the robot talks to my other household computers as needed as it roams the house. Mostly this is so I can run visualization software on my laptop or desktop computer to see how the robot is performing.

The main computer also provides a Bluetooth network connection so that I can use a gaming controller to manually drive the robot around the house, if needed. This is especially useful when I bring the robot to offsite locations to show it off, as the robot is rather heavy to carry very far.

The Motivation

Source: https://ourworldindata.org/population-aged-65-outnumber-children

Worldwide, the number of elderly people (65 years and older) surpassed the number of children under 5 years of age in 2019. It is likely, in my lifetime, that there will be more people needing assistance in their lives than there will people who can provide it. I don’t expect to be able to afford especially extraordinary care, nor do I expect not to need it as I age. My alternative is to create the needed technology so it will be there when I need it.

Wimble Robotics is a one-person effort to create an assistive robot for my personal use.

I understand that this will be hard. In fact, having spent several years on the effort so far, I know that everything about robots is hard. This is a theme that you will see me remind you again and again.

For years I have been creating various experimental robots, from tiny robots the size of your hand, to robots the size of an electric wheelchair. My expectation was not that I would quickly reach even that dreamed of major goal of the home roboticist, that of fetching a drink from the refrigerator and bringing it to you. Rather, there is so much technology that is required for a robot to be useful even in a tiny way. This is the hardest learning journey of my life, so far.

Creating a robot that is trustworthy (it won’t harm me or my possessions), reliable (it will work when I turn it on) and predictable (it will do the tasks as designed, repeatedly as needed) is a tall order, indeed.

As I’ve often said in my talks to various groups about robotics, just because you tell a motor controller to move the motors, doesn’t mean that the motors actually move. If the motors move, it doesn’t mean that the attached wheels turn. If the wheels turn, it doesn’t mean that the robot will move at all. If the robot moves, it doesn’t mean that it will move as commanded.

Everything about robots is hard. Batteries fail, Electronics fail. Screws loosen or fall out. Wires break from vibration. Networks stop communicating. Wheels get slippery. Robots are a breeding ground for failure.

Every few months, I create a new robot which improves on the predecessor because of what I learned up to that point. Sometimes I want to explore one new aspect, like reliable sensing of the position of the robot over time, relative to some time in the past. Sometimes I want to try out a new bit of technology, like stereo depth-sensing cameras, or time of flight distance sensing. Sometimes I work on just one dimension of the overall problem, such as fallback technology for when the network fails, or reliable startup of the robot. Progress is made with each generation. But the progress is slow. Especially for a single-person effort made by a retired computer scientist.

This blog is a somewhat free form brain dump of the journey to make a personal, assertive robot, to be ready when I need it.