Example: Simple Joystick-Drive Robot: Difference between revisions
(Clones from Tank-drive) |
No edit summary |
||
Line 1: | Line 1: | ||
'''''<u>NOTICE: This page consists of information on a feature currently in [[Beta]]. Information is liable to change or be incomplete.</u>''''' | '''''<u>NOTICE: This page consists of information on a feature currently in [[Beta]]. Information is liable to change or be incomplete.</u>''''' | ||
While a [[Example: Simple Tank-Drive Robot|tank-drive robot]] is the most simple type of robot that you can make with a RoboPad, many people want to control both drive motors of a simple two-motor robot with a single [[Joystick Node|Joystick]]. This page aims to give you a walk-through of building a robot that can be driven in this manner. | |||
The nodegraph from this example can be found [https://yelllowcube.sharepoint.com/:u:/s/BlayzeTechLimited/EZw9oIJKxlpOpjSIfN2ZZmgBktOBPOnqY55PVyKPJLDxrQ?e=gjRYLT here]. | The nodegraph from this example can be found [https://yelllowcube.sharepoint.com/:u:/s/BlayzeTechLimited/EZw9oIJKxlpOpjSIfN2ZZmgBktOBPOnqY55PVyKPJLDxrQ?e=gjRYLT here]. | ||
The IO Configuration can be found [https://yelllowcube.sharepoint.com/:u:/s/BlayzeTechLimited/EdDMS4fiFFNBk0XiUJGwuLEB8vUZF1rG9RE07kyvFVDZIw?e= | The IO Configuration can be found [https://yelllowcube.sharepoint.com/:u:/s/BlayzeTechLimited/EdDMS4fiFFNBk0XiUJGwuLEB8vUZF1rG9RE07kyvFVDZIw?e=3PVTYd here]. | ||
== Hardware == | == Hardware == | ||
Line 22: | Line 22: | ||
By adding the H-Bridge Motor IO Units, the [[Chip Node]] in the [[Nodegraph Editor]] gains 2 new inputs and 2 new outputs: | By adding the H-Bridge Motor IO Units, the [[Chip Node]] in the [[Nodegraph Editor]] gains 2 new inputs and 2 new outputs: | ||
[[File:Chip Node with Default IO.png|center|thumb|437x437px|The Chip Node gets a pair of "<motor name> armed" output and "<motor name>" inputs, allowing you to drive the motors and get their status.]] | [[File:Chip Node with Default IO.png|center|thumb|437x437px|The Chip Node gets a pair of "<motor name> armed" output and "<motor name>" inputs, allowing you to drive the motors and get their status.]] | ||
The two input ports - here named "M1" and "M2" (because that's the name of each motor in the IO Configuration) - drive each motor. They expect values between 0 and 1, with 0 being "full reverse" and 1 being "full forward". The two outputs - here named "M1 armed" and "M2 armed" - indicate whether the motors are [[IO Config Editor#Actuators|armed]]. The concept of actuator arming can feel a little complex, but it is important because without it the chance of accidentally driving a motor is much higher: any actuator is considered "armed" once the actuator has recieved a drive signal corresponding to it's "safe state" | The two input ports - here named "M1" and "M2" (because that's the name of each motor in the IO Configuration) - drive each motor. They expect values between 0 and 1, with 0 being "full reverse" and 1 being "full forward". The two outputs - here named "M1 armed" and "M2 armed" - indicate whether the motors are [[IO Config Editor#Actuators|armed]]. The concept of actuator arming can feel a little complex, but it is important because without it the chance of accidentally driving a motor is much higher: any actuator is considered "armed" once the actuator has recieved a drive signal corresponding to it's "safe state" (see the [[Example: Simple Tank-Drive Robot|Tank Drive example]] for more information on this - in this example, we assume knowledge of arming mechanics, and include armed status indicators). | ||
In order to drive the motors M1 and M2, we will employ the use of a [[Joystick Node]] and a [[Joystick Mixer Node]]. By default the Joystick Node outputs two values: The position of the "stick" within the joystick in terms of it's X and Y position, between 0 and 1. We could hook this directly up to the M1 and M2 inputs if we wanted to: | |||
The nodegraph for this example is actually the default configuration of the RoboPad, so resetting the nodegraph and IO Configs via the [[The Management Page|Management Page]] should set it to this. However, you can download the nodegraph for yourself [https://yelllowcube.sharepoint.com/:u:/s/BlayzeTechLimited/EZw9oIJKxlpOpjSIfN2ZZmgBktOBPOnqY55PVyKPJLDxrQ?e=gjRYLT here]. The IO Configuration can be found [https://yelllowcube.sharepoint.com/:u:/s/BlayzeTechLimited/EdDMS4fiFFNBk0XiUJGwuLEB8vUZF1rG9RE07kyvFVDZIw?e=jLDhIO here]. | |||
Revision as of 02:30, 21 August 2024
NOTICE: This page consists of information on a feature currently in Beta. Information is liable to change or be incomplete.
While a tank-drive robot is the most simple type of robot that you can make with a RoboPad, many people want to control both drive motors of a simple two-motor robot with a single Joystick. This page aims to give you a walk-through of building a robot that can be driven in this manner.
The nodegraph from this example can be found here.
The IO Configuration can be found here.
Hardware
Tank drive robots have only two actuators: A left drive motor and a right drive motor, both attached to a wheel. After attaching your power supply to the "+" and "-" pins, it simply requires that two motors be soldered - one each to the M1 and M2 pin pairs on the RoboPad.
IO Configuration
In order to tell the RoboPad that there are two motors attached, you will need to configure the IO Units on the device. The RoboPad has special IO Units available for drive motors called "Built-in H-Bridge Motor" units. These use the internal H-bridges to drive the motors forwards and backwards:
They allow you tot set a "Forward Scale" and a "Reverse Scale" for each, which lets you change how fast the attached motors spin when told to go all the way forward or backward, which is useful for tuning a robot if it's not driving straight when you tell it to go forward or backward, or just to slow it down if forward or backwards is too fast. They should be there by default, and if not you can add them with the "Add" menu at the top of the IO Configuration page.
Nodegraph Configuration
By adding the H-Bridge Motor IO Units, the Chip Node in the Nodegraph Editor gains 2 new inputs and 2 new outputs:
The two input ports - here named "M1" and "M2" (because that's the name of each motor in the IO Configuration) - drive each motor. They expect values between 0 and 1, with 0 being "full reverse" and 1 being "full forward". The two outputs - here named "M1 armed" and "M2 armed" - indicate whether the motors are armed. The concept of actuator arming can feel a little complex, but it is important because without it the chance of accidentally driving a motor is much higher: any actuator is considered "armed" once the actuator has recieved a drive signal corresponding to it's "safe state" (see the Tank Drive example for more information on this - in this example, we assume knowledge of arming mechanics, and include armed status indicators).
In order to drive the motors M1 and M2, we will employ the use of a Joystick Node and a Joystick Mixer Node. By default the Joystick Node outputs two values: The position of the "stick" within the joystick in terms of it's X and Y position, between 0 and 1. We could hook this directly up to the M1 and M2 inputs if we wanted to:
The nodegraph for this example is actually the default configuration of the RoboPad, so resetting the nodegraph and IO Configs via the Management Page should set it to this. However, you can download the nodegraph for yourself here. The IO Configuration can be found here.