Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
4208f71
docs: add detailed documentation for action_flow.py
devin-ai-integration[bot] Jul 29, 2026
9036091
Merge pull request #1 from PascalDesmet/devin/1785327912-document-act…
PascalDesmet Jul 29, 2026
2862a64
Add stuff to ignore towards git
PascalDesmet Jul 29, 2026
8e5b6c1
docs: add detailed documentation for pidog.py
devin-ai-integration[bot] Jul 29, 2026
a80aaf6
Merge pull request #2 from PascalDesmet/devin/1785337506-document-pidog
PascalDesmet Jul 29, 2026
7751e8f
docs: add detailed documentation for preset_actions.py
devin-ai-integration[bot] Jul 29, 2026
f61676d
Merge pull request #3 from PascalDesmet/devin/1785338009-document-pre…
PascalDesmet Jul 29, 2026
53d0f20
Installed pidog so it uses local source files from it's own and other…
PascalDesmet Jul 31, 2026
7f2fc94
updated readme with steps to take to use the local source files inste…
PascalDesmet Aug 1, 2026
a35ffaf
Add tts espeak example
PascalDesmet Aug 2, 2026
6b8ab00
Introduce Operations enumerator and implement as much as possible. Ad…
PascalDesmet Aug 3, 2026
5a2ff67
Merge branch 'main' into test_espeak
PascalDesmet Aug 3, 2026
a9fbfee
Merge pull request #5 from PascalDesmet/test_espeak
PascalDesmet Aug 3, 2026
c12ccb9
Added example file to test pico2wave
PascalDesmet Aug 3, 2026
3d2137e
add test file 24_tts_pipe.py to examples folder
PascalDesmet Aug 3, 2026
dde2501
added test files 25 and 25 on stt vosk speech to text
PascalDesmet Aug 3, 2026
550d63b
Merge pull request #7 from PascalDesmet:test_stt_vosk
PascalDesmet Aug 3, 2026
7c4b631
added test file 27_llm_ollama_on_pc
PascalDesmet Aug 3, 2026
26adf5e
Merge pull request #8 from PascalDesmet:test_llm_ollama
PascalDesmet Aug 3, 2026
5ee1fc3
test voice_active_dog with ollama model on PC
PascalDesmet Aug 5, 2026
24811cb
Initial version and architecture of PiDog App
PascalDesmet Aug 8, 2026
3e76db0
Removed battery log file, updated config with logging settings and IP…
PascalDesmet Aug 19, 2026
8ba676b
Added systemd service documentation for auto-starting PiDog App on bo…
PascalDesmet Aug 19, 2026
b907a72
Initial commit
PascalDesmet Aug 30, 2026
bd32d88
Merge remote-tracking branch 'origin/main'
PascalDesmet Aug 31, 2026
4bc8cc4
Add delay after startup before dog lies down and waits for wakup call
PascalDesmet Aug 31, 2026
f390523
Add delay after startup before dog lies down and waits for wakup call
PascalDesmet Aug 31, 2026
398cfeb
Merge remote-tracking branch 'origin/main' into my_german_sheppard
PascalDesmet Aug 31, 2026
3841bf0
Add sleep mode with background watcher thread that puts dog to sleep …
PascalDesmet Aug 31, 2026
116f2ba
Fix action handler thread shutdown race and improve sleep/wake coordi…
PascalDesmet Sep 2, 2026
cf92811
Change wake mechanism from text/voice input to physical head touch de…
PascalDesmet Sep 2, 2026
2b04a97
Add sounds_path config, implement looping sound playback with snoring…
PascalDesmet Sep 2, 2026
fb1f0dc
Add stop_sound method to interrupt looping sounds, set THINK status b…
PascalDesmet Sep 3, 2026
51524fd
update readme file
PascalDesmet Sep 3, 2026
c2df993
Remove battery log file, update config with new IP and sleep delay, a…
PascalDesmet Sep 6, 2026
5d7a043
Add GPIO retry logic for sound direction, improve face tracking with …
PascalDesmet Sep 7, 2026
65fa5c5
Increase face tracking deadzone from 15/25 to 40 pixels to reduce mic…
PascalDesmet Sep 8, 2026
cc8837e
Add keyboard input to stop face tracking, return face detection statu…
PascalDesmet Sep 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,9 @@ photo
test/photo*
test/scene/*
backups/*
**secret*
**secret*
build/*
pidog.egg-info/*
**/__pycache__/*
*.egg-info/*

38 changes: 38 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -95,3 +95,41 @@ E-mail:
## Credit

Most sound effect are from [Zapsplat.com](https://www.zapsplat.com)


# Installation with one or more forked projects

git clone the repositories from there original git location or from a fork.
Do not 'sudo python3 install.py' on any of them.

After cloning, perform:
Setup: System Python is externally-managed (PEP 668), so I created a venv with system-site-package inheritance (needed for hardware libs like RPi.GPIO, spidev, picamera2):

```
>_ bash

python3 -m venv --system-site-packages /home/pds/.venv
```

Editable installs — links directly to your source folders, so edits take effect immediately without reinstalling:




bash
```
>_ bash

/home/pds/.venv/bin/pip install -e /home/pds/robot-hat -e /home/pds/pidog -e /home/pds/vilib
```

Missing dependencies resolved:

python3-pyaudio (apt) — for robot_hat.music
python3-opencv (apt) — for vilib, matches existing libopencv410 system libs
flask (pip, in-venv) — for vilib's web streaming server
Verified: import pidog, robot_hat, vilib now resolves to __init__.py, __init__.py, __init__.py respectively.

# Python environment on raspberry PI

In a terminal type 'source .venv/bin/activate' otherwise you will receive a 'no permission' error message.
64 changes: 48 additions & 16 deletions basic_examples/9_rgb_control.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,24 +26,56 @@

my_dog = Pidog()

while True:
# style="breath", color="pink"
my_dog.rgb_strip.set_mode(style="breath", color='pink')
time.sleep(3)
# while True:
# # style="breath", color="pink"
# my_dog.rgb_strip.set_mode(style="breath", color='pink')
# time.sleep(3)

# style:"listen", color=[0, 255, 255]
my_dog.rgb_strip.set_mode(style="listen", color=[0, 255, 255])
time.sleep(3)
# # style:"listen", color=[0, 255, 255]
# my_dog.rgb_strip.set_mode(style="listen", color=[0, 255, 255])
# time.sleep(3)

# style:"boom", color="#a10a0a"
my_dog.rgb_strip.set_mode(style="boom", color="#a10a0a")
time.sleep(3)
# # style:"boom", color="#a10a0a"
# my_dog.rgb_strip.set_mode(style="boom", color="#a10a0a")
# time.sleep(3)

# style:"boom", color="#a10a0a", brightness=0.5, bps=2.5
my_dog.rgb_strip.set_mode(style="boom", color="#a10a0a", bps=2.5, brightness=0.5)
time.sleep(3)
# # style:"boom", color="#a10a0a", brightness=0.5, bps=2.5
# my_dog.rgb_strip.set_mode(style="boom", color="#a10a0a", bps=2.5, brightness=0.5)
# time.sleep(3)

# close
my_dog.rgb_strip.close()
time.sleep(2)
# # close
# my_dog.rgb_strip.close()
# time.sleep(2)



# STYLES = ["monochromatic",
# "breath",
# "boom",
# "bark",
# "speak",
# "listen"]

# for style in STYLES:
# my_dog.rgb_strip.set_mode(style=style, color="white")
# time.sleep(3)
# my_dog.rgb_strip.close()
# time.sleep(1)


my_dog.rgb_strip.set_mode(style="monochromatic", color="white")
bps = 2
brightness = 1.0
for i in range(5):
my_dog.rgb_strip.set_mode(style="monochromatic", color="white", bps=bps, brightness=brightness)
print(f"bps: {bps}, brightness: {brightness}")
time.sleep(0.5)
bps /= 2
brightness -= 0.2
bps *= 2
brightness += 0.2
my_dog.rgb_strip.set_mode(style="monochromatic", color="red", bps=bps, brightness=brightness)
print(f"bps: {bps}, brightness: {brightness}")
time.sleep(0.5)
my_dog.rgb_strip.close()
my_dog.close()
Loading