This post is an upgrade of my previous post. I have concluded that it is more efficient to use the Pi as a terminal than attached to the RVR. Figure RVR1 shows the the RVR with a PING, which is controlled by an attached PIC32 running MM Basic. The PIC streams ping readings to the PI through a Xbee. A “cheap” drone camera, which communicates with an android smart phone or tablet, is especially useful for indoor & outdoor observations of the RVR’s environment.
RVR2 is a photo of the Pi display showing the opening of the RVR command program in Mathematica 12, which runs only on Pi 4.
RVR3 shows a portion of the program which lists the api’s which control the RVR. For example ap4 is the raw motor controller. It includes 4 variables which set direction & speed and the check sum which must be calculated each time the other variables are changed. Unlike other languages (eg,. python), If you change a variable, it will automatically change in the api list. My previous program was based on the raw motor api. One of its disadvantages was that high thread speeds were required to make turns.
This version uses the TANK mode which controls thread velocities, enabling turns at very low speeds as well as calculating distance travelled. The last 3 figures show 3 console control screens which take advantage of Mathematic’s dynamic programming capabilities.
RVR4 shows the drone mode screen, which givers the operator full control of the RVR. Note the users ability to alter the timeout, access ping output, and interactively change RVR speed.
The RVR5 console allows the user to experiment with RVR-specific commands, eg, go to XY position.
The RVR6 console allows the user to define, save, and run maneuvers, i.e., sequences of commands which enable autonomous behavior. A simple example shows the required syntax. A detailed listing of all allowed commands is included.