Difference between revisions of "Holonomic Robotic Platform"

From RobotX
Jump to navigation Jump to search
Line 11: Line 11:
 
===[https://www.amazon.com/gp/product/B0721MTJ3P/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1 Raspberry PI Full Function Servo Motor HAT Controller]===
 
===[https://www.amazon.com/gp/product/B0721MTJ3P/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1 Raspberry PI Full Function Servo Motor HAT Controller]===
 
[[File:Motor_HAT.jpg|120px|thumb|right|Geekworm HAT]]
 
[[File:Motor_HAT.jpg|120px|thumb|right|Geekworm HAT]]
*Full function Robot Expansion Board (Support Stepper / Motor / Servo) for Raspberry Pi 3 Model B / 2B / B+
+
*Full function Robot Expansion Board (Support Stepper / Motor / Servo) for Raspberry Pi.
 
*Stepper motors are great for (semi-)precise control, perfect for many robot and CNC projects.
 
*Stepper motors are great for (semi-)precise control, perfect for many robot and CNC projects.
 
*HAT supports up to 2 stepper motors. The python library works identically for bi-polar and uni-polar motors
 
*HAT supports up to 2 stepper motors. The python library works identically for bi-polar and uni-polar motors
*For a complete in-depth explaination of using this HAT see the [http://www.raspberrypiwiki.com/index.php/Robot_Expansion_Board Raspberry PI Wiki: Robot Expansion Board].
+
*For a complete in-depth explanation of using this HAT see the [http://www.raspberrypiwiki.com/index.php/Robot_Expansion_Board Raspberry PI Wiki: Robot Expansion Board].
  
  

Revision as of 20:36, 1 January 2020

Engineering Project Data

Mechanical

Drive Motors with Gearboxes

Hardware Case for Raspberry PI 4

Electronic/Electrical

Raspberry PI4 4 Gig Ram

Raspberry PI 4

Raspberry PI Full Function Servo Motor HAT Controller

Geekworm HAT
  • Full function Robot Expansion Board (Support Stepper / Motor / Servo) for Raspberry Pi.
  • Stepper motors are great for (semi-)precise control, perfect for many robot and CNC projects.
  • HAT supports up to 2 stepper motors. The python library works identically for bi-polar and uni-polar motors
  • For a complete in-depth explanation of using this HAT see the Raspberry PI Wiki: Robot Expansion Board.


HDMI Video Adapter Cable

Micro SD 64 Gig Memory Card for PI Operating System, and Hard Drive

Software

Raspbian Operating System

Balena Flash Prom Programmer

Interface Window

Windows Python for Laptop Host Development

Winpython Logo

Spyder Development Environment

Spyder IDE

Spyder is a powerful scientific environment written in Python, for Python, and designed by and for scientists, engineers and data analysts, featuring the following options:

  • Editor
  • IPython Console
  • Variable Explorer
  • Profiler
  • Debugger
  • Help

Code and Mathematics

Code to Facilitate Development

To help easy development of specific modules in the Holonomic Robot, a communications interface is implemented between the Robot(Raspberry PI 4 Server) and a Laptop Development workstation(HP Client). The protocol is built on TCP Tx-Rx Exchange between the two devices. The code modules are Python running at both ends. The Robot starts out as a purely slaved device taking commands from the laptop. Motor control modules manipulating the GPIO interface run on the Robot but are commanded by the laptop. As the motor control is refined and routinized along with the growth of intrinsic autonomy, the code is transitioned from the Laptop to the Robot. Code is primarily developed in Python 3.7.

Laptop Code for Robot/Laptop Base Communication

import socket
message_from_server = ''
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(('192.168.1.43', 13000))
while True:
    message = ''
    message = input('Input lowercase sentence:')
    client.send(message.encode())
    message_from_server = (client.recv(4096)).decode()
    print (message_from_server)
    if message == "Stop the Server" : break 
client.close()
print ("You ended the session")

Robot Code for Robot/Laptop Base Communication

import socket
serv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serv.bind(('192.168.1.43',13000))
serv.listen(5)
while True:
    conn, addr = serv.accept()
    message_from_client = ''
    while True:
        data = conn.recv(4096)
        if not data: break
        message_from_client = data.decode()
        print ("Tx:" + message_from_client)      
        message = "RxAck:" + message_from_client
        conn.send(message.encode())
    conn.close()
    if message_from_client == "Stop the Server" : break
print ('Communication protocols termintated at Server by Client')