Thumbnail

Custom Movement Panel

How to add the Custom Movement Panel robot skill

  1. Load the most recent release of ARC (Get ARC).
  2. Press the Project tab from the top menu bar in ARC.
  3. Press Add Robot Skill from the button ribbon bar in ARC.
  4. Choose the Movement Panels category tab.
  5. Press the Custom Movement Panel icon to add the robot skill to your project.

Don't have a robot yet?

Follow the Getting Started Guide to build a robot and use the Custom Movement Panel robot skill.


How to use the Custom Movement Panel robot skill

Use this skill if your robot requires a motor/movement controller that is not supported. You may assign scripts to the Forward, Backward, Left, Right, and Stop commands.

Script functions are also available to you to obtain the currently selected speed of both Left and Right wheels. You may modify the speed using SetSpeed(value). The speed values may be altered by any joystick-style skill that affects speed, such as the Joystick in Mobile Interface or a physical joystick using the Joystick Control.

Main Window



1. Movement Panel
These buttons will allow you to control the directional movement of the entire robot (left, right, forward, reverse, and stop).

2. Speed Sliders
You can select the speed of the servos with these sliders. Be aware that the speed range is (0-255), and the default settings are 100% (255). These sliders can allow you to adjust for one motor is faster than the other.

Settings



1. Stop Script
This script will stop the moving robot. It will also activate when the Stop() script is called.

2. Direction Scripts
These scripts will control which way the robot will move when the movement panel buttons are pressed, or movement scripts are called [ex: Forward()].

3. Speed Changed Script
This script will execute when the speed sliders are adjusted in the main window or when the setSpeed() script is called.

How to Use Custom Movement Panel


1) Physically connect your robot to an EZ-B.

2) Add the Custom Movement Panel Skill to your ARC project (Project -> Add Skill -> Movement Panels -> Custom Movement Panel).

3) In the Settings menu, enter the scripts you would like to use for each of the directions and stop.

4) In the main window, press the direction buttons to move your robot. If the directions seem reversed, you can change your scripts.

Code Samples


Available EZ-script functions to obtain the current speed are:


GetSpeed( )
Returns the global Movement Speed value
Speed is between 0 and 255
The speed can be viewed in the Script Variable Viewer
Example: $x = GetSpeed()


GetSpeedLeft( )
Returns the global Movement Speed value of the Left wheel
Speed is between 0 and 255
The speed can be viewed in the Script Variable Viewer
Example: $x = GetSpeedLeft()


GetSpeedRight( )
Returns the global Movement Speed value of the Right wheel
Speed is between 0 and 255
The speed can be viewed in the Script Variable Viewer
Example: $x = GetSpeedRight()


Resources


Read more about how Movement Panels work here.

Related Tutorials

Related Robots

Related Questions


ARC Pro

Upgrade to ARC Pro

Harnessing the power of ARC Pro, your robot can be more than just a simple automated machine.

#9  

I found my issues. Yes was looking at wrong  panel.  ThanksxD

PRO
Canada
#10   — Edited

HI @Jeremie I wish I saw your post. I have been trying to do the same thing. Could you please share your ARC file if you still have it. I am knee deep in custom Movement Panel and I am not winning.  There are so many factors to deal with when you try to use strafe movement versus regular movement.

I feel we are pushing the limits of the custom movement panel. I am using key control and custom Movement Panel but they don't all work together. We really need 2 joysticks and 2 movement panels or even better a new Movement Panel skill that is specifically designed for mecanum wheels.

#12   — Edited

Hello! I am trying to get the custom Movement Panel to increment a servo each time the Left/Right button is pressed. I am using the code:

ServoUp(1.D3, 20)

When I push the button, it increments correctly. However when I push it a second time it does not respond. Is there there something I am missing that would allow it to continuously increment over and over again, continuously turning left? With its current funtionining, it is basically just activating a frame/gait control one-time movment.

EDIT: It works properly when movement is triggered from another skill. It seems its just the arrows that only allow one iteration

PRO
Belgium
#13   — Edited

hi electrophuntronic

am gessing

:loop sleep(300) Servo(D3,1,180) sleep(300) goto(loop)

PRO
Synthiam
#14  

A Movement Panel is not meant for what you're trying to use it for. A Movement Panel is used to move a robot. You can't hit forward and then hit forward again. Think of it this way, if your robot is moving forward, and you press forward again, how can it possibly go more forward?

You can only go one direction at a time. If you are walking forward, you can't go any more forward because you're already walking forward.

Maybe you want to create an interface builder and add buttons incrementing the servo position each time the button is pressed.

#15  

@Nomad, your servo position command looks wrong. You have too many numbers. You would use that last number if you want to use random positions but you'd have to use the command ServoRandom (servoPort, lowPosition, highPosition)

Here is the proper example: Servo (servoPort, position)

Quote:

Move servo to the specified position Servo position is between 1 and 180 Example: Servo(D14, 25)
I think DJ has hit it on the head. The OP will have to use a script and attach it to a button. His script looks correct to move one servo position value at a time using the command ServoUp(). To move the other way he'd attach a second script to a second button he's using and with the command: ServoDown (servoPort, count).

@elektrophunktronic, I see in your code you are using .1 to start your statment inside the (). Are you using more then one EZB? If not you dont have to use that part of the command. EZ Script knows to look for only one EZB if you are connecting only to one. Now, if you have more then one connection then you would start numbering them in your command. 1. 2. 3. and so on. Please forgive if you already know this.

Good luck and have fun!!