Operating the ship
New thought today: The navigational software and the "operating system" (OS) of the ship are two different and distinct things.
The OS handles receiving and transmitting messages, executes commands, reads sensor information, and activates actuators. The navigator uses the OS as a base for implementation on a higher abstraction level.
Navigator Level 1 "Direct Control"
The controller and the navigator act like a normal remote control. Joystick input is transmitted "as is" to specific actuators. In example, pushing the joystick forward increases engine power; moving it from side to side will turn the rudder. The ship follows blindly the commands sent by the controller.
A couple of nice features can be implemented even on this level. In example, the ship could be steered by keyboard, mouse, joystick, joypad, or a combination of those. Imagine using two joysticks: the left one for thrust, and the right one for the rudder. The joystick can be twisted? We could use that for the thrusters to turn the ship.
Input might be integrated. Instead of directly translating joystick position into a thrust setting, the joystick position might be translated into increasing or decreasing the thrust setting at a rate proportional to the position. Leaving it in the middle maintains the current setting.
How about different modes? When you press a joystick button the control mode is changed. Instead of turning the rudder, a side-to-side movement of the stick might use the bow and stern thrusted in parallel to move the ship sideways. Another button click, and the same movement uses the thrusters in opposite directions, turning the ship on the spot.
Endless cool possibilities to do things a normal remote control just can't do!
Navigator Level 2 "Immediate Goal Control"
The controller transmits goals such as "set speed to 10km/h" or "turn to 215°". The navigator uses sensors, goals, and a strategy to achieve these goals to influence actuators. In example, when the ship is standing still the engine power is increased to full until the desired speed is reached, and then throttled, guided by sensor input and maybe helped by predicted performance, to what is needed to maintain speed.
Similarly the command to follow a specific heading will be interpreted by taking into account the current heading, and setting the rudder accordingly.
At this stage the navigator already should possess enough brains to not do "silly things". It might be not a good idea to give full rudder at full speed (might make the ship keel over), and setting the rudder to anything when the ship is not moving will not make the ship turn (use the thrusters instead, or get the ship movings slowly).
Level 2 enables modes such as "stick to the stick": The ship follows the stick movement forward/ backward, sideways left/ right. Point the stick in any direction: the ship will move in that direction; move the stick back to zero: the ship stops.
Navigator Level 3 "Advanced Goal Control"
The controller transmits goals such as "go to position", possibly with a list of waypoints. Or, the navigator knows the "lay of the land" (like, shape of the lake, shallow areas, piers, bridge pillars) and avoids areas where the ship better not go.
Adding sensors such as ultrasound distance measuring provides additional safety against obstacles that are not on the map. Such a feature may be added even at Level 1: The ship might cut thrust or even reverse shortly at full power to avoid slamming into something hard.
The OS handles receiving and transmitting messages, executes commands, reads sensor information, and activates actuators. The navigator uses the OS as a base for implementation on a higher abstraction level.
Navigator Level 1 "Direct Control"
The controller and the navigator act like a normal remote control. Joystick input is transmitted "as is" to specific actuators. In example, pushing the joystick forward increases engine power; moving it from side to side will turn the rudder. The ship follows blindly the commands sent by the controller.
A couple of nice features can be implemented even on this level. In example, the ship could be steered by keyboard, mouse, joystick, joypad, or a combination of those. Imagine using two joysticks: the left one for thrust, and the right one for the rudder. The joystick can be twisted? We could use that for the thrusters to turn the ship.
Input might be integrated. Instead of directly translating joystick position into a thrust setting, the joystick position might be translated into increasing or decreasing the thrust setting at a rate proportional to the position. Leaving it in the middle maintains the current setting.
How about different modes? When you press a joystick button the control mode is changed. Instead of turning the rudder, a side-to-side movement of the stick might use the bow and stern thrusted in parallel to move the ship sideways. Another button click, and the same movement uses the thrusters in opposite directions, turning the ship on the spot.
Endless cool possibilities to do things a normal remote control just can't do!
Navigator Level 2 "Immediate Goal Control"
The controller transmits goals such as "set speed to 10km/h" or "turn to 215°". The navigator uses sensors, goals, and a strategy to achieve these goals to influence actuators. In example, when the ship is standing still the engine power is increased to full until the desired speed is reached, and then throttled, guided by sensor input and maybe helped by predicted performance, to what is needed to maintain speed.
Similarly the command to follow a specific heading will be interpreted by taking into account the current heading, and setting the rudder accordingly.
At this stage the navigator already should possess enough brains to not do "silly things". It might be not a good idea to give full rudder at full speed (might make the ship keel over), and setting the rudder to anything when the ship is not moving will not make the ship turn (use the thrusters instead, or get the ship movings slowly).
Level 2 enables modes such as "stick to the stick": The ship follows the stick movement forward/ backward, sideways left/ right. Point the stick in any direction: the ship will move in that direction; move the stick back to zero: the ship stops.
Navigator Level 3 "Advanced Goal Control"
The controller transmits goals such as "go to position", possibly with a list of waypoints. Or, the navigator knows the "lay of the land" (like, shape of the lake, shallow areas, piers, bridge pillars) and avoids areas where the ship better not go.
Adding sensors such as ultrasound distance measuring provides additional safety against obstacles that are not on the map. Such a feature may be added even at Level 1: The ship might cut thrust or even reverse shortly at full power to avoid slamming into something hard.


1 Comments:
Hi Chris, ich bastel schon länger an einer RC PC->Mdell Lösung, Deine Ideen finde ich sehr interessant, mein Project findest Du hier http://www.rc-modellbau-schiffe.de/wbb2/thread.php?postid=103585 oder auf meiner HP: www.lars-wendt.de
By
Unknown, at 1:43 AM
Post a Comment
<< Home