Scope of topic:
In perhaps what is a gross violation of forum etiquette, (ONE question per topic), my intention for this topic is to allow me to ask questions, and hopefully gather answers about, the “Remote Camera Robot” project files and functionality as an ongoing topic.
Rather than spam the fora with a whole slew of postings that ask one question - I am hoping to be able to ask all about this project in one place. This way, someone else who may be interested in this general topic can peruse this one thread and see everything that’s happening.
Ultimately, I want to be able to control Charlie as if he were one of those fancy “bomb handling” robots, remotely using a joystick.
Assumptions: (Please correct me if I am wrong)
The “remote_robot” python file is, in essence, a “wrapper” for the actual functionality of the software.
a. The “remote_robot” software starts up things like the web server, starts streaming the camera, and loads up the “nipple.js” software on the client system and gets it running.
b. It takes the processed mouse inputs from the browser and translates them into corresponding robot movements.
c. It shuts down the software and closes the browser on command.
The real “heavy lifting” is done by the “nipple.js” file, which is run on the client side within the browser.
a. The “nipple.js” program resides on the client-side browser and accepts mouse and keyboard inputs.
b. It translates mouse-movements into “force”, (absolute value of distance from center), and “direction”, (angle from some arbitrary "0’ radial that the mouse is moving.)
Note that the mouse motion is a “drag”, (left-drag), of the center dot in an arbitrary direction from the center resting position.
c. It sends these values, (along with other stuff I haven’t figured out yet), back to the 'bot for translation into actual robot movements.
Ideally, if I wanted to add functionality to the program, I would add it to the “nipple” file and add corresponding code to the robot file to handle the new messages. (i.e. I could use joystick Z-axis, (twist), motion to allow me to swivel Charlie’s head.)
These assumptions are based on the relative size and complexity of the documents - the “robot.py” file is five pages long, with the lion’s share being constructors and destructors, whereas the “nipple.js” file is 22 A4 pages long and looks like something out of NASA.
At a high level, am I understanding this correctly?
Are these files functionally documented anywhere? This way I can avoid asking questions that may already have answers. (i.e. A “man page” for “nipple.js” or the equivalent?)