Mobile Robot – Arduino Sensors (1) – BME 280

Comment on Getting Started Again

When I started this blog site a couple of years ago, I had a plan, but time and other interests got in the way. I’m ready to try this again with perhaps a little less rigorous view of what I want to write about. As before, my primary mobile robot blog objectives are to relate descriptions and comments on 1) the range of mobile robots I am working on; 2) supporting devices such as sensors, actuators, cameras … and 3) types of applications. My prior plan was to specifically work through a set of example robot types and implementations. At least for the present, my plan for topics is to describe what I’m working on and document descriptions, resources, things that work and don’t work and uses. Currently my interest and work are on the many, many sensors that are available and supported by the Arduino computers. Most will relate to mobile robots in some way; some will be applicable to topics outside of robotics. Sometimes topics will be in an orderly sequence and sometimes simply as I get to them. For a reader this is not ideal … but that’s the way I’m doing it.

This blog is essentially about things learned and implemented as a retired electrical engineer with at least a moderate amount of time and monetary resources. My general view is that if I haven’t at least implemented an example (not necessarily a pretty example) and learned from it, I won’t include it. That being said, only so much time and money is available and at some point, the effort on a topic (robots) becomes good enough (i.e., that’s all I care to know) or I have run up to the edge of my expertise or that which can be reasonably learned.

Nothing I include is intended to represent a basis for commercial or industrial design or production.

Where I might say a device or software doesn’t work, it is totally within my scope of development and test. It may be, and quite likely is that it does work in some context and that I can’t make it work in mine or don’t want to spend any more time trying. I will try to relate to a reasonable level, the basis of my conclusion.

Beginning on Sensors

This blog is titled ‘ … Sensors (1) – BME 280’. One of my activities is volunteering as a teaching naturalist at the Wehr Nature Center which is a unit of the Milwaukee County Park system. As a possible direction of instruction, the use of small computers and, primarily, environmental sensors to both study aspects of nature and also the basics of computers, sensing and data acquisition. Investigation this idea led to the accumulation of many different sensors which are applicable to the Nature Center’s objective. Also, many of these same sensors are applicable to the control, guidance and the mission of mobile robots. The primary small computer used is the Arduino in a number of forms. Sensor acquisition is an on-going process. There are lots of sensors. There are numbers of base suppliers or labels. These products are then sold through suppliers such as Amazon, Robot Shop, Digi-key and others. For most sensors, the base suppliers implement their version of the ‘chip’ or ‘package’ level sensor which come from electronic device manufacturer such as Texas Instruments, Bosch and others.

BME 280 Sensor Example

The BME 280 is manufactured by BOSCH (https://pdf1.alldatasheet.com/datasheet-pdf/view/1132060/BOSCH/BME280.html). It is a mechatronics device and measures temperature (0 degrees C to 65 C), relative humidity (20 to 80 % RH) and pressure (300 to 1100 hPa; 4 to 16 psi). There are of course lots of qualifiers and secondary specifications in the 55-page specification. The supply voltage is 1.7 to 3.6. Output communication is via I2C (Inter-Integrated Circuit) or SPI (Serial Peripheral Interface). The I2C address is 0x76.

Adafruit (https://www.adafruit.com/product/2652) and others put the BOSCH BME280 on a printed circuit board with supporting power and communication electronics and sells it as an Arduino or other computer mountable and connectable sensor. I don’t have price data on the raw BME280 sensor; however, the Adafruit board is approximately $15 with the supportive additions. Adafruit also provides (usually) Arduino (and other computers) loadable software for BME280 functions in a program. The software provides user effective program commands through interface to the BME280 commands plus the driver (BOSCH).

There will be more on the software handling later.

Other like suppliers are SeeedStudio/Grove (https://www.seeedstudio.com/Grove-BME280-Environmental-Sensor-Temperature-Humidity-Barometer.html), WaveShare (https://www.waveshare.com/wiki/BME280_Environmental_Sensor), SparkFun (https://www.sparkfun.com/products/13676), HiLetgo (http://hiletgo.com/ProductDetail/1953483.html), DFRobot Gravity and Fermion (https://www.dfrobot.com/search-bme280.html) and there are probably others. Each vendor provides application software which is all similar and may be interchangeable but may include unique functions for that vendor. In addition, other software writers may provide their own versions. Generally, these are available on ‘GitHub’.

Arduino Test Platform

As a base for testing environmental related sensors as well as other aspects of Arduino devices, a board was layed out and built which included the following: Arduino Mega 2650 Rev 3; Gravity; IO Sensor Shield; 4×4 digital input keyboard; I2C 4 x 20 LCD display; I2C real time clock; I2C 3 color LED; cadmium sulphide analog light sensor (upper left corner); mechanical switch (low left corner); analog temperature sensor (middle right); ADXL 345 Adafruit I2C accelerometer board (under BME 280); and … an Adafruit BME280 board.

This board was constructed to provide a prototype student exercise board for learning about basic computer operation, data collections and sensor monitoring. The IO sensor shield board includes a micro-SD socket for data acquisition. There will be more discussion in the future of the components and configuration of this and related computer boards. The BME280 board is connected to the Arduino through the I2C socket hub in the prototyping section of the IO sensor shield.

Arduino Software for the BME280 and Testing

At the present (12/5/22) I have loaded Arduino IDE 2.0.3 (https://docs.arduino.cc/software/ide-v2/tutorials/getting-started/ide-v2-downloading-and-installing). A search of the IDE library results in 18 includes supporting the BME280. There are includes by Adafruit and SparkFun. The rest are names of Arduino software support organizations or individuals. Adafruit and SparkFun are installed.

To make the BME280 test more complete (and interesting), additional devices of the test board are used. The keypad for command; the display for information; the IO sensor shield SD card for data acquisition; and the RTC for timing. The process will be to build up to the final program by adding each of the components to complete the test board.

4×20 LCD I2C Display

At ‘Tools/Manage Libraries…’ opens the Library Manager. Searching on ‘LiquidCrystal’ gives a list of liquid crystal display includes. The main one is ‘LiquidCrystal by Arduino, Adafruit’ version 1.0.7 (latest, 12/4/22). This is installed and shows up in the ‘Sketch/Include Library’ as ‘LiquidCrystal.h’. However, this include is for a digital selection connected display. For an I2C connected display ‘include’, search for that. The result is about 33 includes. Which is best?? At https://www.arduino.cc/reference/en/libraries/liquidcrystal-i2c/ the Arduino library include is by Frank de Brabander. Searching for ‘Frank’ finds this include. This WEB site lists the include functions. When installed it is listed as ‘LiquidCrystal_I2C.h’. Finally, a bit of code is needed to test the I2C controlled liquid crystal display. There are numbers of options. One is to go to ‘more info’ in the Manage Libraries list which then goes to the GitHub site. Download the ‘Code’; unzip and within that there are example sketches. One more thing … in this particular case the examples show up as .pde program types. This is an earlier Arduino file type. The present file type is .ino. The .pde files can be opened by the Arduino IDE and will be saved as .ino files. For a simple test the ‘Hello World’ sketch is used. It is downloaded to the Arduino (Mega 2650 in this case) and run successfully. Note that the ‘LiquidCrystal_I2C.h’ default I2C address is 0x27. In this simple program the only functions used are to place the cursor and display a specified line of text.

Through the preceding, the first test board device is tested and some of the process for setup is explained.

4×4 Keypad

The 4×4 keypad has 10 pins. The outer pins (0 (left) and 10 (right) on each end are not used. The right set of 4 pins are for rows. Pin 1 is the low number row pin and, for the test board is connected to DIO 33. The right most pin of the column set of 4 pins is connected to DIO 37. Note that any set of DIO pins can be used. Only issue is getting them correctly connected and listed in the program. Again, there are lots of keypad include options. In the libraries list is a ‘Keypad.h’ include. A simple program is at https://www.instructables.com/Arduino-Keypad-4×4-Tutorial/. In this sketch the Serial Monitor is used to display the key press.

Data Acquistion on SD Card

The next function to work on is the saving of the BME 280 data on a micro SD card. The IO Sensor Shield has an micro SD slot. More specifically this is the DFRobot Mega IO Expansion Shield V2.3 at ‘https://wiki.dfrobot.com/Mega_IO_Expansion_Shield_V2.3__SKU_DFR0165_’. A guide to SD card data storage is at ‘https://docs.arduino.cc/learn/programming/sd-guide’. The example at this site is used. The sketch uses the SPI.h and SD.h include files. Both are in the Sketch/Include Library list. Communication with the SD card is via SPI protocol. The test sketch initializes the file. Waits while the file is opened. Writes some descriptive text. Writes 20 numbers to the file and then closes the file. Once the sketch is run, the SD card can be removed, inserted in a card reader and the content verified. If a data file, it can be transferred to an Excel file for analysis or other processing.

Get Time (RTC)

When data is read is of obvious importance. Thus, the next step is to find and test a sketch that reads real time clock (RTC) data. The RTC used is the Gravity: I2C SD2405 RTC Module at ‘https://www.dfrobot.com/product-1600.html’. This RTC counts Seconds, Minutes, Hours, Day, Date, Month, and Year with Leap Year Compensation Valid Up to 2100. Its internal battery is to last 5 – 8 years. On the test board the RTC is under the LCD. The RTC include and sketch information is at: ‘https://wiki.dfrobot.com/Gravity__I2C_SD2405_RTC_Module_SKU__DFR0469’. In this case the include file must be loaded from the GitHub reference. This is done by downloading the code as a zip file and extracting as ‘Arduino-Keypad-main’ folder. Sketch/Include File/Add .ZIP Library … is used to load the RTC’s include file. At the GitHub site download the ‘Code’ and then ‘Extract All’. Open the ‘Gravity-I2C-SD2405-RTC-Module-master’ file and use the Sketch/Include File/Add .ZIP Library … to add the ‘GravityRtc.zip’. In the GravityRtc/Examples is a RtcTime_Test.ino sketch. The include is ‘GravityRtc.h’. The RTC can be set manually in the sketch if needed.

Read BME 280 Data

The next step in this exercise is to read data from the BME 280. The BME 280 sensor board used is the Adafruit BME280 as previously shown. The BME 280 include obtained by installing the Adafruit BME280 Library Version 2.2.2 from the Library Manager. Test sketches are available from several sources; one is ‘https://randomnerdtutorials.com/bme280-sensor-arduino-pressure-temperature-humidity/’. This sketch is set up for use of both SPI and I2C communication with the sensor; I2C is the default. As noted before the BME 280 include is contained in the Adafruit library. Running the test sketch results in the reading of the temperature, pressure, relative humidity and altitude. Note that the altitude is based on the default ambient pressure. A requirement for use is that in ‘Setup’ the BME 280 must be initialized (Begin). After that data can just be read as needed.

ADXL 345 Accelerometer

The ADXL 345 Accelerometer IC is mounted on a Adafruit circuit board. This is a basic 3 axis acceleration sensor. It has 4 sensitivity ranges from +/- 2G to +/- 16G and it supports output data rates ranging from 10Hz to 3200Hz. On the prototype board it is mounted under the BME 280. Communication with the Mega 2650 is via I2C. The Adafruit reference is at ‘https://learn.adafruit.com/adxl345-digital-accelerometer/overview’. The include is in the Library Manager under Adafruit. A sketch reference is at ‘https://github.com/adafruit/Adafruit_ADXL345’. The example sketch allows for selection of access rate and scale.

DS18B20 Waterproof Digital Temperature Sensor

The DS18B20 digital temperature sensor is based on the Dallas One-wire protocol. A reference is ‘https://www.adafruit.com/product/381’. While the sensor is good up to 125°C the cable is jacketed in PVC so we suggest keeping it under 100°C. Because they are digital, you don’t get any signal degradation even over long distances! These 1-wire digital temperature sensors are fairly precise (±0.5°C over much of the range) and can give up to 12 bits of precision from the onboard digital-to-analog converter. They work great with any microcontroller using a single digital pin, and you can even connect multiple ones to the same pin, each one has a unique 64-bit ID burned in at the factory to differentiate them. Usable with 3.0-5.0V systems. The only downside is they use the Dallas 1-Wire protocol, which is somewhat complex, and requires a bunch of code to parse out the communication.

A library reference is ‘https://github.com/milesburton/Arduino-Temperature-Control-Library’. The Library Manager has an include for the DS18B20 by Miles Burton. Installing the Dallas Temperature include also installs a OneWire.h include. GIKFUM Dat is connected to DIO 46. From the GitHub download the ‘Simple.ino’ example is used. Note that the sensor code connections are not the same across DS18B20 products. One used reversed the power/ground connection pins.

Blinkm RGB LED

Blinkm is an I2C controlled three LED (RGB) device. Each color can be controlled over a 0 – 255 range. Other options are blinking and color ramping. Blickm is a product of Thing M which has a number of other LED control products. The Library Manager has no Blinkm include. At the ‘https://thingm.com/products/blinkm’ site I found nothing that would allow Arduino control. SparkFun has a Blinkm site at ‘https://todbot.com/blog/2011/03/22/blinkm-smart-led-as-the-smallest-arduino/’ but no simple .h or .ino to load and run. Going to ‘https://github.com/todbot/BlinkM-Examples’ resulted in numbers of application programs for the Blinkm. These require loading BlinkM_funcs.h into the IDE library. At ‘https://docs.arduino.cc/software/ide-v1/tutorials/installing-libraries’ is a discussion of Arduino IDE libraries and how to load third party includes plus reference to the ‘Arduino Library Reference‘. The ‘todbot’ GitHub didn’t have a .zip to load. Another source at ‘https://github.com/darach/BlinkM’ was found which resulted in a successful ‘BlinkM_Arduino_main’ load. When applied to a sketch ‘BlinkM_Arduino_main’ shows up as ‘BlinkM.h’.

Cadmium Sulphide (CS) Light Sensor

A photoresistor (Cadmium Sulphide (CS)) light sensor is located at the left front of the Mega 2650. This is an analog sensor with a binary level detect output set by the potentiometer. The sensor is connected to A15. The level output is not connected. A photoresistor include is in the Library Manager and is installed. In ‘https://github.com/alextaujenis/RBD_LightSensor&#8217; is a sketch for monitoring. The include is listed as ‘<RBD_LightSensor.h>’. The sketch is very simple as it just reads the analog input and multiplies to get a percentage.

Mechanical Switch

In the interest of simplicity and completeness a mechanical limit switch was added. This is connected to DIO 44.

Simple LED

An LED is controlled by DIO 43.

Composite Sketch for BME 280

The final step for this blog is to describe the software used to display the data from the BME 280, RTC, light sensor, temperature probe, mechanical switch, and accelerometer and the process of saving the data to the SD card. In addition, code was written to change the color of the BlinkM LED array and turn the on-board LED on and off. Arduino IDE 2.0.3 was used. The process was to test the code for each sensor and function and then add the device code to the overall code for the test board. It many cases some modification of the sensor and function (i.e., keypad) code was required. In the main loop code, the keypad is monitored. Pressing a keypad number selects a sensor or function for display. These are: 1/RTC hours, minutes and seconds, 2/3 axis acceleration, 3/ temperature probe, 4/ BME temperature, RH, barometric pressure, 5/ altitude from BME, 6/ light level, 7/ mechanical switch status, 8/set BlinkM LED array color and intensity, 9/ turn on board LED on/off, 0/ save sensor data and time to SD card as selected period. For RTC, accelerometer, and light level the data is shown continuously until the function is de-selected. The data is saved to the SD card in selectable periods of 10 seconds, 1 minute or 1 hour. Five hundred samples are taken. The SD save function can be ended via the keypad. Twenty entries are written to the SD card file at each time period. One of the entries is a data count. Besides the actual data, four data entries are available for other information as needed.

Data Saved and Processing in Excel

The data saved to the SD card is a sequential list. To complete the data processing, the SD card is removed and inserted in a computer (Windows in this case). The data is read in Notepad and then transferred as a column into Excel. A macro in Excel is used to parse the data into a row per period (or count). The data can then be plotted as desired. An example follows. This is for 10 second sampling. A lot can and, in application, would be done to add more plots and provide additional data description. The objective at this point is to illustrate the completion of the process.

Summary of Arduino Test Board

This blog describes an Arduino2650 based instrumentation and display board which might be applicable to studying the outdoor environment. The primary sensor array of interest was the BME 280 which provides temperature, relative humidity and barometric pressure. A primary objective of the blog was to describe where information and code for the sensors and other functions of the board can be found. The data acquisition capability is of the board is described through the Excel processing and final through a plot of the light level at 10 second intervals. The test board is in a prototype form with wiring pin connected to the Arduino. An addition step for another time is to provide portable power so that the board could be taken to the field for environmental monitoring.

Next Blog

The next blog will (most likely) extend the sensors used with the Mega 2650 to include GPS, IMU and a number of light sensors.

Robot 28 – Spy Gear Trakr Track Tank Drive

Robot 28, the Wildplanet Spy Gear Video Trakr was purchased and added to the teaching content for robotics classes for middle school students. With multiple machines, it effectively illustrated numbers of robotic functions which, for the time period of 2011, were fairly advanced. The product proved to be reliable both mechanically and electrically. Some apps were downloaded while the Wildplanet site was active but no work was done on creating original apps using the C language compiler.

The Trakr was introduced in 2010 by Wildplanet as an integrated robotics educational system with a wide range of functions on the robot and controller plus a supporting WEB site for apps creation and distribution. This level of development and support was innovative but unfortunately lasted only a couple of years as Wildplanet was acquired and support was ended.

The four Trakrs acquired for robotics classes are still functional and at some future time it would be interesting to try to get a compiler working to create apps as this robotic is still very applicable to studying robotic functions.

Robot 12 – Tank Track with Airsoft Gun

The first robot described is the Tank Track With Airsoft Gun; Robot 12. There is not a specific sequence to the robots described of the prior list. I’m starting with Robot 12 because its the one I’m currently working on. This robot is functioning as described in the documentation which follows. As with all the built and programmed robots, there is always more that can be done in construction, programming and description. However, I have to stop somewhere as there are many robots and functions of interest.

Summary of Mobile Robot Menagerie – 3

This is the third set of descriptions of the mobile robots either built or purchased … or a bit of both. At the end of this set are summary pages of with some status and software information. The total I have listed is 30 robots of various varieties. A legitimate question is whether I will ever complete and program the constructed one or investigate the purchased ones. I’ll accept that the numbers are not too favorable since there are lot on my list and new materials, computers, sensors and complete robots become available all the time and some are worth looking at. My intent is not to go down the list but to work on and add comment to those that are of greatest interest or in the case of purchased / vendor machines are more investigation and observation. Also in some cases I will consolidate information on sensors, computers, batteries and other topics.

Robot 21 – Parallax Boe-Bot: The Parallax Boe-Bot is a small two wheel with an idler wheel, tank drive robot built on an aluminum pad. The computer is a Basic Stamp and Parallax sensors are used. Simple as it is, this robot has served for numbers of years as a starting robot. The primary interest at this point is its application for autonomous sumo bot competition (I have 2) and for autonomous line following.

Parallax Boe-Bot

Robot 22 – Nerf Gun Mechanism: The Nerf Gun Mechanism is not a mobile robot but is a computer driven target acquisition, target tracking and pneumatic firing of nerf projectiles. The Nerf gun part is the gun assemble of a Air Hogs Battle Tracker. The firing control is with a VEX V5 computer, sensor and communication / controller system. The nerf gun mechanism will be mounted on a mobile base. The functions of interest are the use of the V5 camera for target tracking and the overall system for fire control.

Nerf gun and base; computer and other devices not mounted yet.

Robot 23 – Hexpod Robot: The Hexpod robot started as a structural kit with a PIC controller. The 18 servos have been upgraded and a Modern Robotics Fusion computer is used to control two servo control modules. Communication is via Bluetooth using a Logitech controller. A lithium ion battery is used. IR motion sensors and distance sensors are used. As apparent this hexpod is circular. A linear hexpod has also been constructed. The primary function of interest is leg control of a hexpod.

Hexpod Robot; computer and servo controller changes pending.

Robot 24: High Clearance Wheel Tank Drive: This robot is planned but has not yet been constructed. The objective is to use Intel Realsense devices (i.e. LIDAR L515) for navigation and object detection. Computer requirements remain to be determined as well as additional sensors and communication implementation. The robot is planned to have 8 inch pneumatic wheels. The functional objectives include high clearance drive system and Realsense device navigation and objective analysis. There is not yet a picture.

Robot 25: Yahboom Nvidia Jetson Nano Robot: This robot is purchased as a kit. It is tracked tank drive and is a multi-function tank AI education robot based on NVIDIA Jetson Nano A02 or B01 computer. Communication is via Wi-Fi to smart devices. The provided Python based software supports face recognition, object tracking, obstacle avoidance and other functions. The objective of investigating this robot is to learn about NVIDIA GPU based processor application.

Yahboom Nvidia Jetson Nano Robot

Robot 26 – DJI EP Core: The DJI EP Core is a mecanum drive robot with a gripper and arm. Through the SDK it can be programmed for object and text recognition with machine learning applications. Sensors ports allow third party sensors to be used. This robot is of interest as it provides the potential to investigate AI based object recognition functions combined first person viewing, integrated arm/gripper coordination and inter robot communication with other DJI products.

DJI EP Core

Robot 27 – Robotis Swerve Drive Robot: The combination of Robotis servos and software provide a unique approach to motion control. The digital servos include internal sensing including position and current. The software provides the capability to set positions and then use these in the operational program for the robot. The swerve drive versatility is an effective implementation to investigate this mechanical and software coordination of control. This robot is yet to be constructed.

Robot 28 – Spygear Track Tank Drive: The Spygear robot was released as a product in 2010. It was and still is significant for the range of functions as well as the open source programming possible. The robot provided audio in and out, video in for both visible and infrared for first person viewing and programmability for autonomous operation. While used in numbers of classes, this robot still has functional capability to investigate.

Robot 29 – iRobot Roomba Pet Series: The Roomba series of cleaning autonomous robots as well as similar autonomous products by other vendors and for other functions is a class of consumer robotic products in their implementation provide a range of both cost based simplicity and increasingly complex operation. The objective for the Roomba is to investigate the implementation of drives, sensors and function, particularly the recent SLAM function.

Robot 30 – Mercedes 2020 GLB 250: I have the GLB 250. It is a robot by the previous definition. It is a high instrumented machine that uses machine learning functions to either directly control or at least influence a number of the automobiles operation. This is somewhat of a love/hate relationship. The objective of including the GLB 250 in this robot list is that understanding and evaluating the effectiveness of its robotic functions is certainly of interest for present and future driving.

Mercedes 2020 GLB 250 … mine is red.

The following lists the robots I plan to discuss as part of this blog series. As noted previously, there are a lot and there will be new ones so to anticipate being ‘done’ is not realistic.

In addition to the specific robots, there are important topics as part of their implementation. In a future blog I’ll list at least some that will be discussed. I would note again that some of this list represent work that goes back 10+ years. In that time many capabilities have changed although as in the case of the Spygear robot and the Robotis humanoid, some things have not changed all that much.

Summary of Mobile Robot Menagerie – 2

This blog continues the summary of the descriptions of mobile robots which have been build or acquired and their general characteristics. Most were built or acquired because of one or more unique functions I wanted to learn about. Note again that the photographs of these robots in some cases are not completely up to date with their current forms.

Robot 11 – VEX Based Battle Bot: This robot started out as a VEX gripper kit machine. For classes on battle bots the arm was modified to be a flipper. It was then used with a duplicate or other small machines for competitions. While basically an RC machine using the VEX Cortex computer and wireless communication, it included an accelerometer to detect when it was no longer upright and LED’s indicating status. An addition function is that two controllers can be connected for two operators. The primary function was/is a middle school student example of a battle bot and two operators.

VEX battle bot

Robot 12 – Tank Track With Airsoft Gun: Like it or not mobile robots are armed. This medium sized tracked robot using a Lynxmotion track kit includes an airsoft gun and laser target pointer. The computer is a Modern Robotics Spartan, essentially a packaged Arduino. An objective of this robot was to have visual feedback through first person viewing and to use an RC controller to get an extended communication range. It is also an exercise in multiple batteries. The primary functions are: airsoft gun, RC communication and visual status feedback.

Tracked robot with airsoft gun.

Robot 13 – Two Wheel Balancing: Using a Lego Mindstorms computer and sensors plus Lego structural components and motors a two wheel balancing robot is demonstrated. In addition to ‘simply’ balancing the robot does line following. The primary function is two wheel balance and operation.

Lego two wheel balancing robot.

Robot 14 – Large Six Wheel Tank Drive: This robot is a FIRST Robotics competition scale machine. It uses a National Instruments RoboRio computer and a structure from AndyMark. It has a two speed pneumatically switched gearbox. Communication is via Wi-Fi through the National Instruments Windows support software. At this point it is a base structure; plans are for a mechanism to be added. The primary functions are two speed gear box, six wheel tank drive with center wheel offset.

FIRST Robotics class six wheel tank drive robot.

Robot 15 – Six Wheel Tank Drive With Suspension: The structure is a purchased Mantis 6WD Off-Road Rover Kit. The computer is a VEX Cosmos with the associated wireless communication and controller. The sensors include a ultrasonic range sensor and an RC camera. A lithium ion battery is used. The primary objective of this robot is investigate how a wheeled tank drive with all wheel suspension functions.

Robot 16 – Ball With Weighted Drive: This robot is the Sphero Bolt. It is an app-enabled robot ball with programmable sensors + LED matrix, infrared & compass. The ball is 2.9 inches in diameter and is rotated by an internally driven weight. Communication with a smart device is via Bluetooth. The primary interest with this robot is it’s unique approach to motion using a sphere and driven weight.

Sphero Bolt

Robot 17 – Biped Humanoid Robot: Using the Robotis robotics kits humanoid robots were constructed. These robots use Robotis digital servos and have 18 degrees of freedom for arms and legs plus sensors. Communication is using the Robotis wireless RF system. The humanoids run a number of types of provided programs for walking and other actions. These robots are of interest to investigate requirements for biped functions.

Robotis Biped

Robot 18 – ROS With TurtleBot3: The TurtleBot3 but Robotis is a platform which runs the Robot Operating System (ROS). This is a purchased kit which is based on the Raspberry Pi. It includes a number of sensors one of which is a 360 degree LIDAR. The reason for this robot is to study ROS. This is an ongoing process but after many hours it is still a wall of obscurity.

TurtleBot3

Robot 19 – DJI FPV: The DJI FPV is a quadrotor design for first person viewing. It is capable of speeds up to 80 miles per hour with a one degree of freedom stabilized camera, obstruction sensors, GPS and status feedback to the head mounted display. This along with two other DJI quadrotors were purchased to use their capabilities in a number of applications. As a robot the objective was to learn about the control and capabilities of drones and the use of FPV for operation.

DJI FPV Quadrotor

Robot 20 – Five Degree of Freedom Arm and Gripper: A five degree of freedom arm and gripper was built to be mounted on a mobile base. The arms structure uses Actobotics channels, Progressive linear actuators (150 pound and 50 pound), and VEX V5 computer, communication, motors and sensors. The gripper is also VEX. The gripper has 3 degrees of freedom plus a target identification camera. The primary functions of interest were operation of a large arm, the operation of 3 degree of freedom gripper and control of object acquisition and gripping.

Large 5 degree of freedom arm and gripper

This is the next set of ten robots or robot components. The next blog will finish these description summaries. I’ll then start descriptions of individual robots mixed with some specifics on other aspects of the robot such as computers used, batteries used and issues and others.

Summary of Mobile Robot Menagerie – 1

As a start to the Build Mobile Robots blog I will summarize the ‘menagerie’ of robots I have. There are numbers of words used for groups of robots … swarm, fleet … ; menagerie works for mine as they fit into the definition ‘a strange or diverse collection of things’. As they have been built or acquired to explore many aspects of mobile robots there is no common structural or functional theme. My ‘menagerie’ includes 25 to 30 robots. These are at various stages of construction, programming or use. For example the ‘tracked airsoft gun’ robot is complete and is programmed to carry out three demonstration functions. The DJI FPV drone robot is in use with flights every couple of weeks. The ‘large mecanum drive robot’ is constructed but has not been programmed. With a few exceptions, most of the robots were constructed to learn about one or more specific aspects of mobile robot implementation and/or use. This includes different drive systems, computers, sensors, software, construction materials, use/mission … and others. The robots also represent many years of acquisition by construction or purchase.

In this blog and one or two more the mobile robot menagerie will be described through a picture or two and a brief description. The latter will include what about the robot specifically makes it of interest. Note that the robot pictures may not be up to date with respect to all components mentioned. A summary table will be provided when all current robots have been described. As the blog progresses specific aspects of these robots will be looked at in some detail.

Robot 1 – Ackerman Steering and Suspension: This is a Traxxas 1/10 scale truck chassis with a Modern Robotics Fusion computer and sensors added. Teleoperation is with a Bluetooth connection to a Logitech controller. Of primary interest for this robot is the Ackerman steering and four wheel drive with suspension. It has front and rear first person viewing cameras (FPV) and uses a Lithium-Ion battery. It has no interaction mechanism.

Robot 1 – Ackerman steering with suspension

Robot 2 – Omni Drive: This robot was constructed with Tetrix beam components. It uses a Lego Mindstorms computer and sensors. Teleoperation is with a Mindsensors transmitter/receiver and Logitech controller. Of primary interest is the control of the omni drive. Tetrix motors with Sabertooth controllers are used. It has a nickel metal hydride battery. A VEX gripper is used for grasping and moving objects.

Omni Drive

Robot 3 – Medium Mecanum Drive: A Tetrix beam frame and motors are used for a medium sized Mecanum drive robot. The computer is a National Instruments RoboRio. Teleoperation and camera communication is via a Wi-Fi module. A CAN network is used with Talon motor controllers. It uses a nickel metal hydride battery. A VEX gripper is used for grasping and moving objects. The primary characteristics of interest for this robot are the Mecanum drive and CAN network.

Medium Mecanum Drive

Robot 4 – VEX Track Drive: VEX structure materials are used for a basic tank drive robot. The robot system uses the VEX V5 computer, motors, communication and battery. A V5 camera is used in one direction for object detection and tracking. An RC camera is used in the other direction for first person view control. The object detection camera and FPV camera with a Fatshark headset are the primary interest aspects of this robot.

VEX Track Drive

Robot 5 – Tetrix Tank Track Drive: This is a tracked robot using tank drive built on a Tetrix frame structure. It uses a Modern Robotics Fusion controller and Modern Robotics sensors, core modules and motors with rotation sensing. Teleoperation is through a Logitech controller and Bluetooth. Ground sensors are used for step detection. An infrared sensor is used for navigation. Power is via a lithium ion battery.

Tetrix Tank Track Drive

Robot 6 – Tetrix Swerve Drive: The swerve drive robot is constructed using a: 1) Tetrix channel frame, 2) Tetrix motors, 3) 3D printed wheel mounting supports, 4) Sabertooth motor controllers and Hitec servos. The computer, communication and sensors are of the VEX V5 system. A Lithium ion battery is used with the V5 and nickel metal hydride for motor power. The swerve drive capability is the primary feature of interest.

Swerve Drive

Robot 7 – Six Wheel Medium Tank Drive: This robot uses a Tetrix channel frame, 4 standard wheels and two omni wheels. A motor and gear box on each side use sprockets and chains to drive the wheels. The VEX V5 computer, communication, controller and sensor system are used. A 14 amp hour 12 volt battery is used with Talon motor controllers. The plan is to add a mechanism to the base. This mechanism as well as the wheels plus omni tank drive are the features of interest.

Six Wheel Medium Tank Drive

Robot 8 – Mekamon Quadped – The Mekamon quadped is a purchased robot. It was developed in 2016-18 as a part of a augmented reality game system. The product was discontinued in 2019. The robot itself is a very good example of a quadped walking system. The computer, servos and sensors of the Mekamon are internal. Control is via Bluetooth to a smart phone or tablet run app. The capability of interest is the operational characteristics of an effectively programmed quadped.

Mekamon Quadped

Robot 9 – Kobra Arm and Gripper With Dual Tracks – This is a purchased ‘qualified’ robots. It’s essentially all RC but does provide a camera for remote sensing. It has a number of features of interest: 1) a six degree of freedom arm and gripper system, 2) dual tracks allowing some degree of climbing, 3) and Wi-Fi camera working with the gripper. In addition, with two of these machines the complexity of arm coordination can be tested.

Kobra Arm and Gripper with Dual Tracks

Robot 10 – Large Mecanum Drive: This robot is constructed with aluminum angle and plate and is 32″ x 32″ x 10″. Each wheel is driven by dual CIM motors through a two speed pneumatic switched gearbox. Each motor is controlled with a Talon motor controller. The computer is a National Instruments RoboRio. Communication is Wi-Fi through a computer connected via USB to the controller. The battery is a 7 amp hour lead acid. The features of interest are: 1) controlling a robot of this size, 2) use of 2 speed transmission 3) Wi-Fi communication and 4) using pneumatic control.

Large Mecanum Drive

This is the first set of robots. The next blog will include another set.