<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.bespokerobotsociety.org/index.php?action=history&amp;feed=atom&amp;title=Behaviors</id>
	<title>Behaviors - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.bespokerobotsociety.org/index.php?action=history&amp;feed=atom&amp;title=Behaviors"/>
	<link rel="alternate" type="text/html" href="https://wiki.bespokerobotsociety.org/index.php?title=Behaviors&amp;action=history"/>
	<updated>2026-04-25T10:17:46Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://wiki.bespokerobotsociety.org/index.php?title=Behaviors&amp;diff=46&amp;oldid=prev</id>
		<title>John: Claude edited based on my notes, prompt, and SimpleBot code repository</title>
		<link rel="alternate" type="text/html" href="https://wiki.bespokerobotsociety.org/index.php?title=Behaviors&amp;diff=46&amp;oldid=prev"/>
		<updated>2025-10-11T16:47:13Z</updated>

		<summary type="html">&lt;p&gt;Claude edited based on my notes, prompt, and SimpleBot code repository&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Behaviors: How Robots Think and Act =&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Behaviors&amp;#039;&amp;#039;&amp;#039; are algorithms and software patterns that connect sensing to action. They represent the &amp;quot;how&amp;quot; of robotics - the intelligence that transforms sensor data into purposeful movement.&lt;br /&gt;
&lt;br /&gt;
For an introduction to how Behaviors fit into the BRS knowledge structure, see [[Robotics Ontology]].&lt;br /&gt;
&lt;br /&gt;
== What Makes a Behavior? ==&lt;br /&gt;
&lt;br /&gt;
A Behavior has these characteristics:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Algorithm-based&amp;#039;&amp;#039;&amp;#039;: It&amp;#039;s a defined process or decision-making pattern&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Language-agnostic&amp;#039;&amp;#039;&amp;#039;: Can be implemented in any programming language&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Sensor-agnostic&amp;#039;&amp;#039;&amp;#039;: Works with different hardware providing the same capability&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Reusable&amp;#039;&amp;#039;&amp;#039;: The same behavior can be used in multiple activities&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Testable&amp;#039;&amp;#039;&amp;#039;: You can verify if the behavior works correctly&lt;br /&gt;
&lt;br /&gt;
Behaviors are different from &amp;#039;&amp;#039;&amp;#039;Activities&amp;#039;&amp;#039;&amp;#039; (which are user-facing tasks) and &amp;#039;&amp;#039;&amp;#039;Capabilities&amp;#039;&amp;#039;&amp;#039; (which are hardware). A Behavior defines &amp;quot;how&amp;quot; a robot thinks, not &amp;quot;what&amp;quot; it accomplishes or &amp;quot;what hardware&amp;quot; it uses.&lt;br /&gt;
&lt;br /&gt;
== Current Behaviors ==&lt;br /&gt;
&lt;br /&gt;
These behaviors have full documentation with tested implementations on [[SimpleBot]]:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
! Behavior !! Type !! Required Capabilities !! Used In !! Status&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;[[Behavior:Line Following]]&amp;#039;&amp;#039;&amp;#039; || Navigation || [[Capability:Line Sensing|Line Sensing]], [[Capability:Differential Drive|Differential Drive]] || [[Activity:Line Following]] || &amp;#039;&amp;#039;&amp;#039;Fully Documented&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;[[Behavior:Dead Reckoning]]&amp;#039;&amp;#039;&amp;#039; || Navigation || [[Capability:Optical Odometry|Odometry]], [[Capability:Differential Drive|Differential Drive]] || [[Activity:Dead Reckoning Navigation]] || &amp;#039;&amp;#039;&amp;#039;Fully Documented&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Future Behaviors (Stubs) ==&lt;br /&gt;
&lt;br /&gt;
These behaviors are &amp;#039;&amp;#039;&amp;#039;not yet implemented&amp;#039;&amp;#039;&amp;#039; in any BRS robot. They represent opportunities for community contribution! Implement these algorithms and document them.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
! Behavior !! Type !! Required Capabilities !! Enables Activities !! Status&lt;br /&gt;
|-&lt;br /&gt;
| [[Behavior:PID Control]] || Control || Sensors + Actuators || Precise motion, line following improvements || &amp;#039;&amp;#039;&amp;#039;Stub&amp;#039;&amp;#039;&amp;#039; - Waiting for implementation&lt;br /&gt;
|-&lt;br /&gt;
| [[Behavior:Wall Following]] || Navigation || Distance Sensing, Movement || Maze solving, room navigation || &amp;#039;&amp;#039;&amp;#039;Stub&amp;#039;&amp;#039;&amp;#039; - Waiting for implementation&lt;br /&gt;
|-&lt;br /&gt;
| [[Behavior:Pathfinding]] || Planning || Mapping, Movement || Optimal navigation, maze optimization || &amp;#039;&amp;#039;&amp;#039;Stub&amp;#039;&amp;#039;&amp;#039; - Advanced algorithm&lt;br /&gt;
|-&lt;br /&gt;
| [[Behavior:SLAM]] || Mapping || LIDAR/Distance, Odometry || Room mapping, autonomous navigation || &amp;#039;&amp;#039;&amp;#039;Stub&amp;#039;&amp;#039;&amp;#039; - Advanced algorithm&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Behaviors by Type ==&lt;br /&gt;
&lt;br /&gt;
=== Navigation Behaviors ===&lt;br /&gt;
* [[Behavior:Line Following]] (documented) - Follow visual guides&lt;br /&gt;
* [[Behavior:Dead Reckoning]] (documented) - Navigate using motion measurement&lt;br /&gt;
* [[Behavior:Wall Following]] (stub) - Follow walls and obstacles&lt;br /&gt;
&lt;br /&gt;
=== Control Behaviors ===&lt;br /&gt;
* [[Behavior:PID Control]] (stub) - Proportional-Integral-Derivative feedback control&lt;br /&gt;
&lt;br /&gt;
=== Planning Behaviors ===&lt;br /&gt;
* [[Behavior:Pathfinding]] (stub) - Calculate optimal routes&lt;br /&gt;
&lt;br /&gt;
=== Mapping Behaviors ===&lt;br /&gt;
* [[Behavior:SLAM]] (stub) - Simultaneous Localization and Mapping&lt;br /&gt;
&lt;br /&gt;
== How Behaviors Connect Capabilities to Activities ==&lt;br /&gt;
&lt;br /&gt;
Behaviors are the bridge between what your robot &amp;#039;&amp;#039;&amp;#039;can&amp;#039;&amp;#039;&amp;#039; do (capabilities) and what it &amp;#039;&amp;#039;&amp;#039;should&amp;#039;&amp;#039;&amp;#039; do (activities). Here&amp;#039;s how they connect:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width: 100%;&amp;quot;&lt;br /&gt;
! Activity !! Behavior !! Required Capabilities !! Status&lt;br /&gt;
|-&lt;br /&gt;
| [[Activity:Line Following]] || [[Behavior:Line Following]] || Line Sensing + Differential Drive || &amp;#039;&amp;#039;&amp;#039;Implemented&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| [[Activity:Dead Reckoning Navigation]] || [[Behavior:Dead Reckoning]] || Optical Odometry + Differential Drive || &amp;#039;&amp;#039;&amp;#039;Implemented&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| [[Activity:Maze Solving]] || [[Behavior:Wall Following]] + Navigation || Distance/Bump Sensing + Movement || Stub&lt;br /&gt;
|-&lt;br /&gt;
| [[Activity:Room Mapping]] || [[Behavior:SLAM]] || LIDAR + Odometry + Movement || Stub&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Algorithm Variations ==&lt;br /&gt;
&lt;br /&gt;
Many behaviors have multiple algorithm variants. For example, [[Behavior:Line Following]] includes:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;One-sensor algorithm&amp;#039;&amp;#039;&amp;#039; - Rotate until line found, drive forward, repeat (simple but choppy)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Two-sensor algorithm&amp;#039;&amp;#039;&amp;#039; - Turn toward whichever sensor detects the line (smooth beginner approach)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Multi-sensor array with PID&amp;#039;&amp;#039;&amp;#039; - Proportional control for smooth, fast tracking (advanced)&lt;br /&gt;
&lt;br /&gt;
Good behavior documentation should:&lt;br /&gt;
* Describe multiple approaches (from simple to advanced)&lt;br /&gt;
* Explain trade-offs (speed vs complexity, smoothness vs code simplicity)&lt;br /&gt;
* Provide pseudocode for each variant&lt;br /&gt;
* Show when to use each variant&lt;br /&gt;
&lt;br /&gt;
== How to Use Behavior Pages ==&lt;br /&gt;
&lt;br /&gt;
Each Behavior page provides:&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Overview&amp;#039;&amp;#039;&amp;#039; - What the behavior does and why it matters&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Algorithm description&amp;#039;&amp;#039;&amp;#039; - Step-by-step logic in plain language&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Pseudocode&amp;#039;&amp;#039;&amp;#039; - Language-agnostic code structure&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Variants&amp;#039;&amp;#039;&amp;#039; - Different approaches (simple, intermediate, advanced)&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Tuning parameters&amp;#039;&amp;#039;&amp;#039; - Variables you can adjust (speed, thresholds, gains)&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Required capabilities&amp;#039;&amp;#039;&amp;#039; - What hardware is needed&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Activities enabled&amp;#039;&amp;#039;&amp;#039; - What this behavior allows robots to do&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Implementation links&amp;#039;&amp;#039;&amp;#039; - Robot-specific code examples&lt;br /&gt;
&lt;br /&gt;
== Implementing Behaviors on Your Robot ==&lt;br /&gt;
&lt;br /&gt;
Want to implement a behavior on your robot?&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Read the behavior page&amp;#039;&amp;#039;&amp;#039; - Understand the algorithm&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Verify capabilities&amp;#039;&amp;#039;&amp;#039; - Ensure your robot has required sensors/actuators&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Choose a variant&amp;#039;&amp;#039;&amp;#039; - Pick an algorithm complexity that fits your needs&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Study the pseudocode&amp;#039;&amp;#039;&amp;#039; - Understand the logic flow&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Write code for your platform&amp;#039;&amp;#039;&amp;#039; - Translate to Python, C++, Arduino, etc.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Test incrementally&amp;#039;&amp;#039;&amp;#039; - Start simple, verify each step works&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Tune parameters&amp;#039;&amp;#039;&amp;#039; - Adjust speeds, thresholds, timing&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Document it!&amp;#039;&amp;#039;&amp;#039; - Create an implementation page for your robot&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Share your results&amp;#039;&amp;#039;&amp;#039; - Help others learn from your experience&lt;br /&gt;
&lt;br /&gt;
== Pseudocode Standards ==&lt;br /&gt;
&lt;br /&gt;
BRS behavior documentation uses consistent pseudocode conventions:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Indentation&amp;#039;&amp;#039;&amp;#039; shows control flow (loops, conditionals)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;CAPS_WITH_UNDERSCORES&amp;#039;&amp;#039;&amp;#039; for configuration constants&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;camelCase&amp;#039;&amp;#039;&amp;#039; for variables&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Comments&amp;#039;&amp;#039;&amp;#039; explain the &amp;quot;why&amp;quot;, not just the &amp;quot;what&amp;quot;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Functions&amp;#039;&amp;#039;&amp;#039; are named with action verbs (driveForward, readSensor)&lt;br /&gt;
&lt;br /&gt;
This makes pseudocode easy to translate to any real programming language.&lt;br /&gt;
&lt;br /&gt;
== Contributing New Behaviors ==&lt;br /&gt;
&lt;br /&gt;
Want to add a new behavior?&lt;br /&gt;
&lt;br /&gt;
Consider:&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Is it distinct?&amp;#039;&amp;#039;&amp;#039; - Different from existing behaviors?&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Is it reusable?&amp;#039;&amp;#039;&amp;#039; - Can it enable multiple activities?&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Is it well-understood?&amp;#039;&amp;#039;&amp;#039; - Can you explain the algorithm clearly?&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Can you provide variants?&amp;#039;&amp;#039;&amp;#039; - Simple and advanced approaches?&lt;br /&gt;
&lt;br /&gt;
Then:&lt;br /&gt;
# Create a Behavior page using [[Template:Behavior]]&lt;br /&gt;
# Describe the algorithm in plain language&lt;br /&gt;
# Provide clear pseudocode&lt;br /&gt;
# Explain tuning parameters and trade-offs&lt;br /&gt;
# Show which capabilities it requires&lt;br /&gt;
# List activities it enables&lt;br /&gt;
# Implement it on your robot&lt;br /&gt;
# Create implementation documentation with real code&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[Robotics Ontology]] - How Behaviors fit into the BRS knowledge structure&lt;br /&gt;
* [[Activities]] - What behaviors enable robots to accomplish&lt;br /&gt;
* [[Capabilities]] - Hardware that behaviors require&lt;br /&gt;
* [[SimpleBot]] - BRS&amp;#039;s first robot, demonstrating two behaviors&lt;br /&gt;
&lt;br /&gt;
[[Category:Behaviors]]&lt;br /&gt;
[[Category:Ontology]]&lt;/div&gt;</summary>
		<author><name>John</name></author>
	</entry>
</feed>