Arxterra Now Supports Waypoint Navigation

ArxRobot version Alpha 0.1.62 has been uploaded to Google Play at https://play.google.com/apps/testing/air.com.arxterra.arxrobot.

Changes include:

  • Added support for Waypoint Navigation. If you program your Arduino to take current GPS location and heading data, and navigate to a desired location, ArxRobot will:
    • Provide current coordinates from its GPS sensor.
    • Provide heading information from its motion sensors.
    • Relay waypoint coordinates and various route management commands as the pilot triggers them at the Control Panel.
  • Added watchdog messaging between ArxRobot and Arduino to help detect disconnects more quickly.

To inform ArxRobot that your Arduino is programmed to take advantage of the Waypoint Navigation feature, you must enable and configure it at the Capabilities screen during ArxRobot startup.

ArxRobot enabling waypoint navigation

When you write your Arduino code (see an example at https://github.com/arxterra/arxrobot-firmware), you can choose between 3 different data types for the coordinates that ArxRobot sends with the WAYPOINT_COORD and WAYPOINT_MOVE commands. Your selection will depend upon the capabilities of the Arduino you are using and your desired balance between numerical precision and the accuracy (or lack thereof) of the GPS data you expect to receive.

Our current example code uses the 32-bit floating point data type, because most Arduinos available at this time do not support a 64-bit floating point data type. The following list includes a brief description and the config settings for each type.

  • 32-bit floating point or “float”
    • The current default
    • Units: degrees
    • Numerical precision equivalent to a resolution of about 11 meters at the equator
    • Settings:
      • Waypoint Coords as Floats: ON
      • Waypoint Floats as 32-bit: ON
  • 64-bit floating point or “double”
    • Units: degrees
    • Not usable on most Arduinos at this time. What is called a “double” is actually 32-bit. See http://arduino.cc/en/Reference/Double
    • Numerical precision the best we offer
    • All our coordinates are stored in this data type on the Control Panel and ArxRobot and in all messaging between them
    • Settings:
      • Waypoint Coords as Floats: ON
      • Waypoint Floats as 32-bit: OFF
  • 32-bit integer or ‘long”
    • Units: decimicrodegrees
    • See http://sloblog.io/~pdc/kbGgQRBcYsk/latitude-and-longitude-in-32-bits for more about this option
    • Numerical precision equivalent to a resolution of about 1 centimeter at the equator
    • Settings:
      • Waypoint Coords as Floats: OFF
      • Waypoint Floats as 32-bit: (ignored)

The Control Panel required a lot of new features to work with this. Your browser may be caching an older version. Be sure to check the lower left corner of the window, and hit “refresh” if it says anything less than version Alpha 0.1.32.

Arxterra Control Panel version indicator

When you board your Robot, the Control Panel has a new section in the Controls pod that appears only when Waypoint Navigation is enabled. It lets you choose whether or not the Autopilot is engaged. You can create and manage waypoints at any time and they will be sent immediately to the Arduino, regardless of which mode you are in. But the Arduino should not move on its own until it receives a WAYPOINTS_ON command.

Travel Mode selector

We hope the rest of the Control Panel operations are fairly self-explanatory. The question marks are tooltip triggers, and some labels also have tooltips on them. But most importantly, when in doubt about what a button does, hover over it and there will usually be a tooltip to help you out.

Arxterra Controls tooltip

Click to create a waypoint.

Click map to create waypoint

Then you can drag it around…

Drag waypoint

Or change the numbers directly if you like.

Edit waypoint coordinates

When you’re happy with it, click Create.

Newly created waypoint

To make a change, drag the waypoint marker to a new position or just click on it. In either case, the edit window pops open again for you to make any needed adjustments and confirm the change. Or you can delete the waypoint.

Modify existing waypoint

Operations on an entire route are accessed via the Controls pod menu. The second row, labeled “Route Management,” appears only when Waypoint Navigation is enabled.

Route management

You can import and export in JSON format, or delete the route. Again, tooltips are your friend when you get ready to do this the first time.

Import route

Export route

Delete route

If you already have a list of lat/long coordinates you want to use, create 2 or 3 random waypoints on the map. Export that route by clicking the export button while holding down the Control (Command on Mac) key, so the file will be saved with line returns and indentation to make it more readable. Open the file in a plain text editor and see how it is done. If you carefully follow the pattern you see there and make a file just like it with your own coordinates, you should be able to import it into the Control Panel.

Finally, here is an example of how you can use our Custom Command feature to add autopiloting refinements. Suppose you want to be able to adjust the Robot’s speed while it is tracking down your waypoints. You can create a custom command to deal with that, and then have the Arxterra system display a slider for you to use, including the label and tooltip you want it to display, the numerical range of values your Arduino is expecting to receive, the command ID number to use, etc.

Autopilot speed custom control example

You add your code to the Arduino sketch, then let ArxRobot know about it via the Custom Command configuration screen. See how that is done in Creating Custom Commands With the Arxterra Application.

Learn the basics on how to: Post to Github, Download from Github, and Upload Code to Arduino

By Tommy Sanchez

Typically instructions on posting repositories to Github can be a little confusing, the tutorial below can be used as a guide to hopefully get you posting quickly and without the confusion. The tutorial also shows how to go about downloading a Github file from any public repository. It’s useful to understand how to use Github, as robot communication code for Arxterra can be found on Github.

The Arxterra Gitub page is: https://github.com/arxterra. If you don’t know how to upload the code to Arduino this tutorial also gives a simple guide on how to do so.

Attachment Link:
GithubArduinoTutorial

 

 

Understanding the Communication between Your Arduino and Android Phone

By Tommy Sanchez

This guide will help you start communicating between your robot and an android phone. The topics covered are: how to connect your phone to the Arduino, the communication from phone to Arduino for commands for your robot, and communication from the Arduino to the phone for telemetry.  Make sure to view the Getting Up and Running tutorial, along with the one on Custom Commands beforehand. A link to the Arduino Code for communication is also found in this guide.

An important thing to note is that there are two ways of physically connecting your phone to the Arduino, which is explained on the guide. In efforts to check communication compatibility on your phone, please be sure to have both applications discussed on the Getting Up and Running tutorial installed on your phone. This will allow you to try both connection types if one of them doesn’t work for you.

Click on the link below to download the PowerPoint communications tutorial:

EE400DCommunicationCode

Creating Custom Commands With the Arxterra Application

By Tommy Sanchez

If you have read the previous tutorial on getting up and running with the control panel and applications, then you’re ready to learn how to create custom commands through the Arxterra application. These custom commands will allow you to expand the capabilities of your robot. In outline form this tutorial covers: creating a custom command, the command control panel interface, and implementation examples.  

Types of command options:

  • Boolean
  • Select
  • Byte
  • Unsigned Byte
  • Short
  • Unsigned Short
  • Heading/Separator

Each of these are covered in depth. Command types must have their own unique identifier called a Command ID. This ID can be chosen from a range of 0x40(64) to 0x5F(95). Command types also have 1 or 2 value bytes associated with the command. These bytes are used by the microcontroller to identify what instruction it’s receiving.

While you are walked through adding a command type you will also be able to see each command type’s interface on the control panel. To take it a step further once you know how to add a command and know how it appears on the control panel, you will be shown implementation examples for robots such as a Biped, Hexapod, and Rover. As a quick example, Boolean can be used as an On/Off switch for the legs of a Biped robot. How the data is sent over to the microcontroller in the form of a byte array is also covered.  The provided link below will take you to an easy to follow PowerPoint tutorial outlining these topics. Enjoy.

PowerPoint Tutorial:

http://www.csulb.edu/~hill/ee400d/Lectures/13_Arxterra%20Commands.pptx

 

 

 

Get Up and Running With the Arxterra Control Panel & Android Applications

By Tommy Sanchez

If you are interested in controlling your robot with the Arxterra control panel, you have come to the right place. For your robot to be controlled through the control panel, you will need to have an Android phone for communication with your Arduino. This guide will show you how to create an account with Arxterra, get access to the alpha testing for the Arxterra applications, connect on the applications, and log in to the control panel. The provided link below will take you to an easy to follow step-by-step PowerPoint tutorial outlining these topics.

PowerPoint Tutorial:
http://www.csulb.edu/~hill/ee400d/Lectures/12_Arxterra%20Login.pptx

ArxRobot Alpha 0.1.25 Posted

ArxRobot version Alpha 0.1.25 has been uploaded to Google Play at https://play.google.com/apps/testing/air.com.arxterra.arxrobot

From now on, the version name should be visible at the lower right corner of the ArxRobot window.  If your Android device does not offer to update your app within a reasonable time, please go to the URL above.

The following are some highlights of what has changed since the previous update:

  • Added a Connection Configuration View with server presets in place of hard-coded server address (normally you will still want to accept the default, but now we have more flexibility for development, testing and demonstrations).
  • Implemented storing your Robot Capabilities settings in App Storage on the Android device.  User eventually will be allowed to choose between storing capabilities there or in Arduino EEPROM.  Currently the EEPROM option is disabled.
  • User can now post Robot avatar images online for the Control Panel to display in the map pop-up and in the position array.  In the Login View on ArxRobot, the user enters the absolute http path to the web directory where these are stored.  5 PNG files are expected (with transparency, 400×400 pixels or smaller).  They must use the following naming convention:  beauty.png (for the map pop-up), front.png, iso.png, right.png and top.png.  Two relative path options, “pathfinder” and “rosco”, are also available if you want to let the Control Panel use its stock images of one of those prototypes.
  • Added contextual help to the Login View, with tooltips that appear if you press and hold wherever you see a highlighted question mark [?].
  • We upgraded our SmartFoxServer installation, which has a new IP address.  To get the latest version of the Control Panel and Server, please be sure to start your Control Panel session from the Arxterra.com website and avoid using old bookmarks you might have made during previous sessions.

We expect to be releasing another ArxRobot and Control Panel update in the next couple days, which will add the Custom Controls API we promised to those with walking bots that need to be able to change posture and gait.