It was used to image the SD card with the Debian image for the BeagleBone Black
3D model for the chassis of the robot was designed using AutoCAD and STL files were exported for 3D printing.
Hand tools and fabrication machines
Soldering Station Power Supply, For Weller WX Soldering System
All PCB boards and connections that were not crimped were soldered by hand using a Weller soldering station.
Soldering Gun Kit, Instant Heat
Heat gun was used to shrink shrinking tube to isolate bare connections
3D Printer (generic)
The chassis of the robot was 3D printed. The designed was done using AutoCAD.
The robotic Claw was 3D printed and was downloaded from thingiverse
Texas Instruments MSP-FET - MSP MCU Programmer and Debugger
This tool was used to flash the binary to the MSP430 for the Servo Controller. It was also used to debug the microcontroller
Microchip MPLAB PICkit 4 In-Circuit Debugger
This tool was used to flash both PIC microcontrollers.
Crimp Tool, Heavy-Duty
The Crimp tool was used to create cables with headers for board-interconnection
Wire Cutter / Stripper, 5.25 " Overall Length
Used to cut and strip wires
Drill / Driver, Cordless
To drill holes were necessary
Step Drill Bit
To drill holes needed on the chassis
Heat-Set Insert Installation Tips
This is for a Weller WES51 Soldering station.
The development of mobile robots is important in the field of search and rescue teams. The robots can be used for different purposes such as searching for survivors in areas that are harmful or deemed impossible for humans to reach. This project aims to create a well-rounded baseline of a mobile robot with remote vision and actuators (like motors/servos) controlled using the internet through Wi-Fi. One of the philosophies used in this project is to use a modular design to build the robot, enabling the use of other projects to add functionality or change the scope of the specifications that the robot might currently have. The challenges chosen for this robot reflect the competition guidelines of the Mercury Robotics Challenge 2014 which contain the following:
It needs to be controlled remotely
It should be capable of going through an obstacle course
It should be able to perform maneuvers in the minimum amount of time
It must be able to pick-up and drop-off a payload
This project shows how to build a mobile robot that is composed of a front-end and a back-end.
The front-end is the part that the end-user uses to interact with the robot, in this case a Windows or a Linux machine with GStreamer and connected to the same network as the robot. This front-end will receive commands from a video-game controller that is disguised as an HID keyboard with the use of a microcontroller. The front-end will send the commands to the back-end (the robot) through an SSH terminal. The commands will tell the robot to move; pan/tilt the camera, raise/lower the robotic arm, open/close the claw, and turn on/off the headlight(s). The front-end will receive live video feed from the robot through GStreamer and display it to the end-user.
The back-end of the project is the actual mobile robot. The robot is composed of 4 main modules:
The "BeagleBone Black", which is in charge of connecting to the network and receive commands through SSH from the front-end. It also fetches video feed from a USB camera and sends the video stream to the front-end through the network.
The "Signal Distribution Board" (SDB), which is in charge of receiving commands in form of data packages from the BeagleBone through UART. This module separates and normalizes the commands depending on who the recipient should be and forwards them to the correct module.
The "Motor Controller Boards", which are composed of one digital signals PCB and one analog signals PCB. The digital board is in charge of receiving speed and direction commands forwarded by the SDB through SPI communication. The digital board will then create the PWM and direction signals and forward them to the analog PCB. The analog signal PCB is in charge of sending power to the motors and receive quadrature signals from the motors, then forward these quadrature signals to the digital signal board for processing.
And the "Servo Controller Board", which is in charge of receiving commands from the SDB through UART. This module will generate the appropriate waveforms to control the servos.
1) For the front-end, setup a BeagleBone Black by disabling the internal EMMC and the HDMI port. Then enable the UART4 port by applying the corresponding device tree overlay. Follow this link to use my other project to get this step done: Setup BeagleBone Black with Device tree overlays.
2) Enable the USB Wi-Fi Card on the list of material used, follow this link to use my other project to get this step done: 8821AU WIFI card and BBB
4) The last module needed for the front-end is the controller. This controller is connected to the host computer. The host computer will detect it as a normal keyboard. This controller will send sequences of characters very fast depending on the current state of the buttons. These "keystrokes" are sent through SSH. I have posted the instructions on how to build it here: HID Keyboard Device With Raspberry Pi Pico.
7) The last module needed for the back-end is the servo controller board. This board is in charge of controlling the servo motors in this robot. The servo motors are used for panning and tilting the camera, as well as controlling the robotic arm. I have posted this as a project here: Servo Controller Board with MSP430 & Timer Interrupts.
3D print the parts needed: the chassis and the claw
1 / 2 • Sliced using Cura, no adhesion support
While 3D printing, gather the tools to drill additional holes and heat insert the knurled threads.
1 / 5 • The soldering iron with brass insert tips to install knurled threads into the PLA
Once the 3D printing of the chassis is done, drill additional holes and install the inserts as the pictures bellow.
1 / 8 • This is how the inserts were installed using a soldering iron
Install the DC motor mounting brackets under the robot, follow the pictures bellow
1 / 6 • I used M3 to screw the mounting brackets
The next step is to mount the motors, follow the pictures bellow
1 / 5 • I placed the motor on the bracket, passing the cable through the rectangular opening
The next step is to install the mounting hubs on the motors
1 / 4 • Place the wheel hub so that the screw hole aligns with the flat side of the motor shaft
Now attach the wheels to the hubs, as shown bellow
1 / 2 • To install the tire, align the two holes on the wheel to two holes on the hub
On the next step, mount the voltage regulators on the sides of the robot chassis as seen below:
1 / 4 • This is the buck-boost converter to power the analog side of the robot
Now, install the M4 stand-offs and the ball-casters to continue working on the robot standing up:
1 / 5 • Use the M4 stand-offs to install the ball-casters
Now let's mount the externally powered USB hub on the back of the robot
1 / 3 • The holes on the back are needed to mount the USB hub.
On the next step, let's mount the front headlight
1 / 6 • For this type of LED, solder a wire to the anode and another to the cathode
For the next step assemble the robotic claw and mount it on the pan-tilt bracket.
1 / 5 • I assembled the claw according to Juergenlessner's instructions
Now attatch the whole arm to the robot:
1 / 8 • The holes on the front of the robot align with the holes on the arm. Also route the cables.
For the next part, solder wires to the small voltage regulator that will regulate to 6V for the Servo Motor Controller (the servo power supply). Then adjust the regulator with a multimeter to make sure that the output voltage is 6V. Then, connect the XT60 connectors to the wires, for the input we use male connectors and for the output we use female connectors. And finally we insulate the voltage regulator with shrinking tube.
1 / 6 • This voltage regulator needs to be set to 6V by turning the screw
Now, setup one of the small voltage regulators to output 5V for the USB hub and BeagleBone Black. In the input, wires will need to be soldered with a XT30 male connector. On the output, solder 2 pairs of wires, one pair goes to a 2-pin-JST connector for the USB hub, and the other pair to a 2.1mm ID x 5.5mm OD barrel connector for the BeagleBone Black. To set the voltage, remove the solder joint next to the potentiometer. And on the back, bridge the 5V option. Verify that the output is a constant 5V on the output with a multimeter. Finally, insulate it with shrinking tube.
1 / 7 • I disabled the adjustable feature by removing the solder ball that jumps these pads on the regulator
In order to interconnect all the systems, several wire harnesses are needed. For the digital systems, all the harnesses will be using the XT30 connector and all the analog/power systems will be using the XT60 connector. Any connector that receives power from another system or voltage regulator will be a male connector, and any module or voltage regulator sending (sourcing) power will be a female connector. Two additional cable harnesses are needed to connect the UART ports.
1 / 5 • The robot needs a set of wire harnesses to power the digital boards
Now, start getting ready to install and interconnect all the modules. Start by screwing 4 plastic standoffs as seen below:
1 / 3 • These stand-offs and nuts are used to attach the PCBs to the chassis
Now, prepare each module by connecting their corresponding power harnesses and other cables.
1 / 6 • Connect one of the XT30 connectors to the digital voltage regulator
After pre-connecting the modules, start stacking up the PCBs and start interconnecting the components.
1 / 6 • Mount the digital motor board to the stand-off in this orientation
In this step, setup the digital power supply module. To simulate the battery, I used a benchtop power supply. Now, continue by wiring the power modules and distributing the power to the digital boards. Place a main power switch for the digital side and connect it in series with the input of the main voltage regulator. Then, we adjust the voltage output for the main digital voltage regulator by turning a screw. Apply the max voltage that the battery can supply to the main power regulator module, which is 8.4V when fully charged (you can go higher just in case, but not necessary). The output voltage should be set to at least 7.5V, but 7.6V gives us a better margin without wasting too much power on the onboard linear voltage regulators. Then set the lab power supply to the lowest voltage the battery can give when discharged (6V, a little lower is better but not necessary). In both cases the digital power supply module should be very close to 7.6V.
1 / 5 • The power switch needs to be placed on the right side of the robot
In this step, connect all the digital modules and the smaller digital voltage regulator to the main digital voltage regulator.
1 / 2 • Connect the harness with several female XT30 to the output of the voltage regulator
In this step, connect and make sure that the main analog/power voltage regulator can supply 12V whether the battery is fully charge or mostly discharged. Use the same set up as in the previous regulator. First, connect a main power switch in series with the input of the main analog voltage regulator. Use a benchtop power supply to test the regulator at 6V and 8.4 volts, in both cases the output voltage should be close to 12V.
1 / 4 • Place the power switch on the left side of the robot, on the back hole
Now, connect all the analog modules and small voltage regulator to the main analog/power voltage regulator.
1 / 2 • Connect the splitter cable with 1 male XT60 and 2 female XT60 the output of the switch
Now that all the major power connectors are in place, let's do some cable managing. The batteries also need to be installed, one goes connected to the analog system and the other one to the digital. For the digital systems use an adapter that was shown earlier to convert a XT60 male connector to an XT30 female connector.
1 / 5 • Connect the other XT60 Female connector to the analog motor controller
In the following step, attach the camera along with the pan-tilt mechanism on the lid of the robot. Also, make sure to have all the holes reinforced with knurled metal threads.
1 / 8 • Put the pan-tilt mechanism with the servos and camera together, also label the servo wires
Let's finish the building process by screwing the lid and connecting the Wi-Fi adapter.
1 / 4 • Use the M3 screws and washers to secure the lid to the main chassis on the front
The code for each MCU is housed in its own folder with its name.
Motor_controller_board folder and signal_distribution_board folder are compiled with MPLABX.
Servo_controller_msp430 folder is compiled with Code Composer Studio