From d13f37efef99d39595a844c63e89428ab7abdc25 Mon Sep 17 00:00:00 2001 From: Naveen Michaud-Agrawal Date: Mon, 17 Jul 2023 22:52:58 -0400 Subject: Split out apriltag detection --- virtual-programs/apriltags.folk | 18 ++++++++++++++++++ virtual-programs/camera.folk | 11 ----------- 2 files changed, 18 insertions(+), 11 deletions(-) create mode 100644 virtual-programs/apriltags.folk (limited to 'virtual-programs') diff --git a/virtual-programs/apriltags.folk b/virtual-programs/apriltags.folk new file mode 100644 index 00000000..265610bb --- /dev/null +++ b/virtual-programs/apriltags.folk @@ -0,0 +1,18 @@ + +source pi/AprilTags.tcl + +AprilTags::init + +When the camera frame is /grayFrame/ { + set aprilTime [time { + set tags [AprilTags::detect $grayFrame] + }] + 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] + } + } +} diff --git a/virtual-programs/camera.folk b/virtual-programs/camera.folk index b865392e..919519fe 100644 --- a/virtual-programs/camera.folk +++ b/virtual-programs/camera.folk @@ -7,9 +7,7 @@ namespace eval ::Camera { On process { source pi/Camera.tcl - source pi/AprilTags.tcl Camera::init 1280 720 - AprilTags::init puts "Camera tid: [getTid]" @@ -17,20 +15,11 @@ On process { 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 From e222798c685893c1b9d6a5d01a7c29c47a3f7118 Mon Sep 17 00:00:00 2001 From: Naveen Michaud-Agrawal Date: Mon, 17 Jul 2023 23:36:15 -0400 Subject: Add laser detection --- virtual-programs/laser.folk | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 virtual-programs/laser.folk (limited to 'virtual-programs') diff --git a/virtual-programs/laser.folk b/virtual-programs/laser.folk new file mode 100644 index 00000000..af7fe44f --- /dev/null +++ b/virtual-programs/laser.folk @@ -0,0 +1,15 @@ + +source vendor/blobdetect/blobdetect.tcl + +When the camera frame is /grayFrame/ { + set blobTime [time { + set threshold 250 + set blobs [::BlobDetect::detect $grayFrame $threshold] + }] + Commit { + Claim the blob detection time is $blobTime + foreach blob $blobs { + Claim laser blob [dict get $blob id] has center [dict get $blob center] size [dict get $blob size] + } + } +} -- cgit v1.2.3 From 63655a3e2ab2c56c5cb9403a43d2a1d003f1a54a Mon Sep 17 00:00:00 2001 From: Omar Rizwan Date: Tue, 18 Jul 2023 16:15:34 -0400 Subject: Temporarily disable laser detect --- virtual-programs/laser.folk | 1 + 1 file changed, 1 insertion(+) (limited to 'virtual-programs') diff --git a/virtual-programs/laser.folk b/virtual-programs/laser.folk index af7fe44f..e71cccc8 100644 --- a/virtual-programs/laser.folk +++ b/virtual-programs/laser.folk @@ -1,3 +1,4 @@ +return source vendor/blobdetect/blobdetect.tcl -- cgit v1.2.3 From 0549779f3070f239010c43d6aad9c484e10076d6 Mon Sep 17 00:00:00 2001 From: Omar Rizwan Date: Tue, 18 Jul 2023 16:15:50 -0400 Subject: WIP: Move apriltag detector into subprocess --- virtual-programs/apriltags.folk | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) (limited to 'virtual-programs') diff --git a/virtual-programs/apriltags.folk b/virtual-programs/apriltags.folk index 265610bb..461d365a 100644 --- a/virtual-programs/apriltags.folk +++ b/virtual-programs/apriltags.folk @@ -1,18 +1,21 @@ +On process { + source pi/AprilTags.tcl + AprilTags::init -source pi/AprilTags.tcl + Wish $::thisProcess receives statements like \ + [list /someone/ claims the camera frame is /grayFrame/] -AprilTags::init + When the camera frame is /grayFrame/ { + set aprilTime [time { + set tags [AprilTags::detect $grayFrame] + }] + Commit { + Claim the AprilTag time is $aprilTime -When the camera frame is /grayFrame/ { - set aprilTime [time { - set tags [AprilTags::detect $grayFrame] - }] - 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] + 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 f620554851b11d1259e8959ac5834de5949dc060 Mon Sep 17 00:00:00 2001 From: Omar Rizwan Date: Thu, 20 Jul 2023 15:14:04 -0400 Subject: camera: Use forever --- virtual-programs/camera.folk | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) (limited to 'virtual-programs') diff --git a/virtual-programs/camera.folk b/virtual-programs/camera.folk index 919519fe..b73398f5 100644 --- a/virtual-programs/camera.folk +++ b/virtual-programs/camera.folk @@ -11,16 +11,13 @@ On process { puts "Camera tid: [getTid]" - while true { + forever { set cameraTime [time { set grayFrame [Camera::grayFrame] }] - Commit { - Claim the camera frame is $grayFrame - Claim the camera time is $cameraTime + Claim the camera frame is $grayFrame } - Step } } -- cgit v1.2.3 From 203c6f5343e082cfa2ae9a47199ebfcd3f882ff6 Mon Sep 17 00:00:00 2001 From: Omar Rizwan Date: Thu, 20 Jul 2023 15:14:51 -0400 Subject: Fix sharing behavior of AprilTag detector --- virtual-programs/apriltags.folk | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'virtual-programs') diff --git a/virtual-programs/apriltags.folk b/virtual-programs/apriltags.folk index 461d365a..75622fcd 100644 --- a/virtual-programs/apriltags.folk +++ b/virtual-programs/apriltags.folk @@ -2,8 +2,22 @@ On process { source pi/AprilTags.tcl AprilTags::init + # TODO: Clean this up. We retract these so that we don't bounce + # statements back to the main Folk process that it sends us. + Retract /anyone/ wishes $::thisProcess shares all wishes + Retract /anyone/ wishes $::thisProcess shares all claims Wish $::thisProcess receives statements like \ [list /someone/ claims the camera frame is /grayFrame/] + Wish $::thisProcess shares statements like \ + [list /someone/ wishes /process/ receives statements like /pattern/] + Wish $::thisProcess shares statements like \ + [list /someone/ claims tag /tag/ has center /center/ size /size/] + Wish $::thisProcess shares statements like \ + [list /someone/ claims tag /tag/ has corners /corners/] + Wish $::thisProcess shares statements like \ + [list /someone/ claims the AprilTag time is /aprilTime/] + Wish $::thisProcess shares statements like \ + [list /someone/ claims $::thisProcess has pid /pid/] When the camera frame is /grayFrame/ { set aprilTime [time { -- cgit v1.2.3 From ceac713ed90a174ad6f575056e8bf405c51ba978 Mon Sep 17 00:00:00 2001 From: Omar Rizwan Date: Fri, 21 Jul 2023 10:50:49 -0400 Subject: Small optimization to label --- virtual-programs/label.folk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'virtual-programs') diff --git a/virtual-programs/label.folk b/virtual-programs/label.folk index bfc67ada..da149cbb 100644 --- a/virtual-programs/label.folk +++ b/virtual-programs/label.folk @@ -1,7 +1,7 @@ When /thing/ has region /region/ { lassign [region centroid $region] x y - set width [region width $region] - set height [region height $region] + # set width [region width $region] + # set height [region height $region] set radians [region angle $region] When the collected matches for [list /someone/ wishes $thing is labelled /text/] are /matches/ { -- cgit v1.2.3 From 8bad41ae77ec2365bc349fb2b952c947b39bd77b Mon Sep 17 00:00:00 2001 From: Omar Rizwan Date: Fri, 21 Jul 2023 10:58:39 -0400 Subject: Gate AprilTag virtual program on whether is laptop --- virtual-programs/apriltags.folk | 2 ++ 1 file changed, 2 insertions(+) (limited to 'virtual-programs') diff --git a/virtual-programs/apriltags.folk b/virtual-programs/apriltags.folk index 75622fcd..01377b78 100644 --- a/virtual-programs/apriltags.folk +++ b/virtual-programs/apriltags.folk @@ -1,3 +1,5 @@ +if {$::isLaptop} return + On process { source pi/AprilTags.tcl AprilTags::init -- cgit v1.2.3