From 59b0a49139241e2963b91b15a46cdb5fd56e4ba0 Mon Sep 17 00:00:00 2001 From: Omar Rizwan Date: Thu, 25 May 2023 12:19:34 -0400 Subject: Start moving camera to virtual program --- virtual-programs/camera.folk | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 virtual-programs/camera.folk (limited to 'virtual-programs/camera.folk') diff --git a/virtual-programs/camera.folk b/virtual-programs/camera.folk new file mode 100644 index 00000000..40950eb9 --- /dev/null +++ b/virtual-programs/camera.folk @@ -0,0 +1,33 @@ +if {$::isLaptop} return + +On process { + source pi/Camera.tcl + # FIXME: do these in outer scope + Camera::init 1280 720 + puts "Camera tid: [getTid]" + + set grayFrames [list] + while true { + # Hack: we free old images. Really this should be done on + # the main thread when it's actually done with them. + if {[llength $grayFrames] > 10} { + Camera::freeImage [lindex $grayFrames 0] + set grayFrames [lreplace $grayFrames 0 0] + } + set cameraTime [time { set grayFrame [Camera::grayFrame] }] + lappend grayFrames $grayFrame + + Commit camera { + Claim the camera time is $cameraTime + Claim the camera frame is $grayFrame + } + Step + } +} + +# AprilTags::init + # foreach tag $tags { + # Claim tag [dict get $tag id] has center [dict get $tag center] size [dict get $tag size] + # Claim tag [dict get $tag id] has corners [dict get $tag corners] + # } + -- cgit v1.2.3 From f472f8a7a57caef18b282f14bfb08f810ac78775 Mon Sep 17 00:00:00 2001 From: Omar Rizwan Date: Thu, 25 May 2023 23:49:26 -0400 Subject: WIP: Start implementing AprilTag detector. defineFolkImages shm --- virtual-programs/camera.folk | 41 ++++++++++++++++++++--------------------- 1 file changed, 20 insertions(+), 21 deletions(-) (limited to 'virtual-programs/camera.folk') diff --git a/virtual-programs/camera.folk b/virtual-programs/camera.folk index 40950eb9..4075162c 100644 --- a/virtual-programs/camera.folk +++ b/virtual-programs/camera.folk @@ -1,33 +1,32 @@ if {$::isLaptop} return +namespace eval ::Camera { + variable WIDTH 1280 + variable HEIGHT 720 +} + On process { source pi/Camera.tcl # FIXME: do these in outer scope Camera::init 1280 720 puts "Camera tid: [getTid]" - set grayFrames [list] - while true { - # Hack: we free old images. Really this should be done on - # the main thread when it's actually done with them. - if {[llength $grayFrames] > 10} { - Camera::freeImage [lindex $grayFrames 0] - set grayFrames [lreplace $grayFrames 0 0] - } - set cameraTime [time { set grayFrame [Camera::grayFrame] }] - lappend grayFrames $grayFrame +} - Commit camera { - Claim the camera time is $cameraTime - Claim the camera frame is $grayFrame +On process { + Wish $::nodename receives statements like [list /someone/ claims the camera frame is /frame/] + + source pi/AprilTags.tcl + AprilTags::init + + When the camera frame is /frame/ { + set aprilTime [time { set tags [AprilTags::detect $frame] }] + Commit { + Claim the AprilTag time is $aprilTime + foreach tag $tags { + Claim tag [dict get $tag id] has center [dict get $tag center] size [dict get $tag size] + Claim tag [dict get $tag id] has corners [dict get $tag corners] + } } - Step } } - -# AprilTags::init - # foreach tag $tags { - # Claim tag [dict get $tag id] has center [dict get $tag center] size [dict get $tag size] - # Claim tag [dict get $tag id] has corners [dict get $tag corners] - # } - -- cgit v1.2.3 From 87eff0f909898e4a6180bcca82be3a92869bad1d Mon Sep 17 00:00:00 2001 From: Charles Chamberlain Date: Thu, 1 Jun 2023 15:21:42 -0400 Subject: Fix bug in process naming: choose unique names in same file --- virtual-programs/camera.folk | 1 - 1 file changed, 1 deletion(-) (limited to 'virtual-programs/camera.folk') diff --git a/virtual-programs/camera.folk b/virtual-programs/camera.folk index 4075162c..f161ce11 100644 --- a/virtual-programs/camera.folk +++ b/virtual-programs/camera.folk @@ -10,7 +10,6 @@ On process { # FIXME: do these in outer scope Camera::init 1280 720 puts "Camera tid: [getTid]" - } On process { -- cgit v1.2.3 From ebfbdd3f392e3d327692a159d89b00f96db93106 Mon Sep 17 00:00:00 2001 From: Charles Chamberlain Date: Thu, 1 Jun 2023 16:41:46 -0400 Subject: Getting one camera frame from a thread --- virtual-programs/camera.folk | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'virtual-programs/camera.folk') diff --git a/virtual-programs/camera.folk b/virtual-programs/camera.folk index f161ce11..b82c306d 100644 --- a/virtual-programs/camera.folk +++ b/virtual-programs/camera.folk @@ -10,6 +10,14 @@ On process { # FIXME: do these in outer scope Camera::init 1280 720 puts "Camera tid: [getTid]" + + while true { + set grayFrame [Camera::grayFrame] + Commit { + Claim the camera frame is $grayFrame; + } + Step + } } On process { -- cgit v1.2.3 From f62f3e2d9d06add473fa9b82e8e2697c7904c998 Mon Sep 17 00:00:00 2001 From: Omar Rizwan Date: Mon, 19 Jun 2023 12:39:42 -0400 Subject: WIP: Tag detect on same thread as camera for now. --- virtual-programs/camera.folk | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) (limited to 'virtual-programs/camera.folk') diff --git a/virtual-programs/camera.folk b/virtual-programs/camera.folk index b82c306d..b865392e 100644 --- a/virtual-programs/camera.folk +++ b/virtual-programs/camera.folk @@ -7,33 +7,31 @@ namespace eval ::Camera { On process { source pi/Camera.tcl - # FIXME: do these in outer scope + source pi/AprilTags.tcl Camera::init 1280 720 + AprilTags::init + puts "Camera tid: [getTid]" while true { - set grayFrame [Camera::grayFrame] - Commit { - Claim the camera frame is $grayFrame; - } - Step - } -} - -On process { - Wish $::nodename receives statements like [list /someone/ claims the camera frame is /frame/] - - source pi/AprilTags.tcl - AprilTags::init - - When the camera frame is /frame/ { - set aprilTime [time { set tags [AprilTags::detect $frame] }] + set cameraTime [time { + set grayFrame [Camera::grayFrame] + }] + set aprilTime [time { + set tags [AprilTags::detect $grayFrame] + }] + Commit { + Claim the camera frame is $grayFrame + + Claim the camera time is $cameraTime Claim the AprilTag time is $aprilTime + foreach tag $tags { Claim tag [dict get $tag id] has center [dict get $tag center] size [dict get $tag size] Claim tag [dict get $tag id] has corners [dict get $tag corners] } } + Step } } -- cgit v1.2.3