Further to my post above, if I pass the parameter “unihiker” for Board method as:
Board("unihiker").begin()
I get the following message:
The selected development board is UNIHIKER
The development board found is None
The development board does not match !!!
Why can't pinpong initialization constructor determine that the board is indeed UNIHIKER? Of course, I'm simply guessing in the dark.
Yessir, you are correct again! My memory retention has become weak. I thought I did the Firmata upgrade (to get a simple Python script to detect ambient noise - worked successfully) but now I am back at the starting gate. I have to study the documentation more carefully. Thanks for your suggestion.
Regards.
Here's what I get:
/usr/local/lib/python3.7/dist-packages/pinpong/base/FirmataExpress.UNIHIKER.3.7.bin
stm32flash -w /usr/local/lib/python3.7/dist-packages/pinpong/base/FirmataExpress.UNIHIKER.3.7.bin -v -g 0x08000000 /dev/ttyS3
stm32flash 0.5
http://stm32flash.sourceforge.net/
Using Parser : Raw BINARY
Interface serial_posix: 57600 8E1
Failed to init device.
[37] Burn done
selected -> board: UNIHIKER serial: /dev/ttyS3
[10] Opening /dev/ttyS3
[22] Arduino compatible device found and connected to /dev/ttyS3
[40] Retrieving analog map...
Traceback (most recent call last):
File "./light_ambient.py", line 12, in <module>
Board().begin()
File "/usr/local/lib/python3.7/dist-packages/pinpong/board.py", line 1369, in begin
self.board = pymata4.Pymata4(com_port=self.serial, arduino_wait=2, baud_rate=115200, name = self.boardname)
File "/usr/local/lib/python3.7/dist-packages/pinpong/base/pymata4.py", line 396, in __init__
raise RuntimeError('*** Analog map retrieval timed out. ***'
RuntimeError: *** Analog map retrieval timed out. ***
Do you have Arduino connectivity and do you have the correct Firmata sketch uploaded to the board?
root@unihiker1:~/projects/sensors#
I "deactivated" conda. (IMHO, should've never installed conda for my YOLO “experiments” but that is a separate story). I “thought” that I had upgraded Firmata but now it seems that it is using the original one that was flashed during manufacturing. I will have to read the documentation carefully again and install the current one. Thanks.
Regards.
The above issue is owing to the use of an obsolete PinPong package. Now that I'm on pinpon-0.6.1, I get a new message:
(base) root@unihiker1:~/# python
Python 3.10.14 | packaged by conda-forge | (main, Mar 20 2024, 21:44:20) [GCC 12.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from pinpong.board import Board
>>> Board().begin()
Please connect the development board !!!
Please connect the development board !!!
Please connect the development board !!!
However, the board is already connected to the desktop - currently running an SSH session. What else do I need to do? Thanks.
Regards.
In Arduino IDE 2.3.4, drill-down as follows: Tools → USB CDC on Boot → Enabled. Cascade menu limited to specific boards.
Peter, the forum administrator, was kind enough to provide some variations that will come in handy for PCBA work too.
There is an ongoing competition, deadline Jan 12, to submit a model!
Thank you for the reply.
Would the General Availability of the firmware be announced through a broadcast message to UNIHIKER “fans” at the appropriate time?
Regards.
Update:
The documentation at https://www.dfrobot.com/blog-13928.html at Step 5 Run the Python script states that the quick_start.py script (created at an earlier step) should be run. The image immediately following this statement illustrates the output from a script call test_onnx_bus.py.
Also, there is some (minor difference, IMHO) between the statements in quick_start.py and the jameslahm/yolov10 example. The DFR statement is implicit for v10 while the equivalent statement at jameslahm website is syntactically different.
In the DFR tutorial, the model loading is incomplete owing to the Illegal instruction message. It would be helpful if the person at DFR who wrote the tutorial could offer some guidance. Thanks.
Regards.
P.S.
I'm curious about having to install huggingface but not importing it explicitly in the simple Python quick_start.py script, whereas jameslahm does it slightly differently:
at https://huggingface.co/jameslahm/yolov10n
Training and validation
from ultralytics import YOLOv10
model = YOLOv10.from_pretrained('jameslahm/yolov10n')
# Training
model.train(...)
# after training, one can push to the hub
model.push_to_hub("your-hf-username/yolov10-finetuned")
# Validation
model.val(...)
Inference
from ultralytics import YOLOv10
model = YOLOv10.from_pretrained('jameslahm/yolov10n')
source = 'http://images.cocodataset.org/val2017/000000039769.jpg'
model.predict(source=source, save=True)
RESOLVED:
Callback differences between MQTT v3.1 and MQTT v5.0 caused the issue.
These challenges owing to buster will persist, IMHO.
When I print(results), I don't see any value for bus (viz. 5) assigned to any attribute:
[ultralytics.engine.results.Results object with attributes:
boxes: ultralytics.engine.results.Boxes object
keypoints: None
keys: ['boxes']
masks: None
names: {0: 'person', 1: 'bicycle', 2: 'car', 3: 'motorcycle', 4: 'airplane', 5: 'bus', 6: 'train', 7: 'truck', 8: 'boat', 9: 'traffic light', 10: 'fire hydrant', 11: 'stop sign', 12: 'parking meter', 13: 'bench', 14: 'bird', 15: 'cat', 16: 'dog', 17: 'horse', 18: 'sheep', 19: 'cow', 20: 'elephant', 21: 'bear', 22: 'zebra', 23: 'giraffe', 24: 'backpack', 25: 'umbrella', 26: 'handbag', 27: 'tie', 28: 'suitcase', 29: 'frisbee', 30: 'skis', 31: 'snowboard', 32: 'sports ball', 33: 'kite', 34: 'baseball bat', 35: 'baseball glove', 36: 'skateboard', 37: 'surfboard', 38: 'tennis racket', 39: 'bottle', 40: 'wine glass', 41: 'cup', 42: 'fork', 43: 'knife', 44: 'spoon', 45: 'bowl', 46: 'banana', 47: 'apple', 48: 'sandwich', 49: 'orange', 50: 'broccoli', 51: 'carrot', 52: 'hot dog', 53: 'pizza', 54: 'donut', 55: 'cake', 56: 'chair', 57: 'couch', 58: 'potted plant', 59: 'bed', 60: 'dining table', 61: 'toilet', 62: 'tv', 63: 'laptop', 64: 'mouse', 65: 'remote', 66: 'keyboard', 67: 'cell phone', 68: 'microwave', 69: 'oven', 70: 'toaster', 71: 'sink', 72: 'refrigerator', 73: 'book', 74: 'clock', 75: 'vase', 76: 'scissors', 77: 'teddy bear', 78: 'hair drier', 79: 'toothbrush'}
orig_img: array([[[119, 146, 172],
[121, 148, 174],
[122, 152, 177],
...,
...,
[ 95, 85, 91],
[ 96, 86, 92],
[ 98, 88, 94]]], dtype=uint8)
orig_shape: (1080, 810)
path: '/root/opencv/bus.jpg'
probs: None
save_dir: None
speed: {'preprocess': 94.56586837768555, 'inference': 3410.3922843933105, 'postprocess': 162.766695022583}]
Hello!
I posted a basic question on camera interface with OpenCV in another thread, which has not received any reply. Please pardon me for using this thread to seek another response.
I noticed that the sample code uses OpenCV without any issue. I installed the OpenCV package. Furthermore, I can get the version number (in my case it is 4.6.0 - rather old but not an issue for my introductory purposes).
However, I cannot get either cv2.VideoCapture (to read frames) or cv2.imshow() (to display frames) to work. Is there anything else that needs to be done for configuration other than to install the OpenCV package? Thanks.
Regards.
Hello @Lupin,
Thanks for your detailed instructions. It seems that running Remote SSH requires PyCharm Professional. Is my understanding correct?
Regards.
Thanks, @LL, once again for coming to the rescue. Again, I didn't drill down the pages earlier because Firefox kept blinking the pages making it difficult to read the material. However, thanks to your guidance, I will be persistent and scroll down.
The information on MQTT (and SMTP) at the link you provided is exactly what reassured me that I can leverage my code to test solutions quickly. Thanks.
Regards.
Thanks for your detailed reply. I guess I was too lazy to read the specs correctly. Your reply contains exactly the information that I need to proceed. The DFR0548 makes more sense to me. Appreciate it.
It would be nice to get encoder output from the motors directly rather than from external sensors (from the wheels or auxiliary wheels with attachments) since the planned robots are small. I may have to go this route but at least the DFR0548 is a good starting point. Anyway, please consider my inquiry as resolved.
Regards.
Use the following three commands in a terminal window (after you have successfully established network connectivity):
Again, another hasty message on my part. After connecting via Wi-Fi, I no longer receive the above message. The current error message is:
Err:5 http://httpredir.debian.org/debian buster-backports Release
but this is for me to resolve. Thanks again for your understanding.
Regards.
Please disregard this message! In my haste, I did not visit the Network Settings page previously. I have done so now, and my Wi-Fi is up and running. Sorry for the false alarm. Thanks for your understanding.
Regards.
Hello @lupin,
How did you enable your Wi-Fi? By default, I get the following:
root@unihiker:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
link/ether 00:e0:4c:84:34:77 brd ff:ff:ff:ff:ff:ff
3: p2p0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
link/ether 02:e0:4c:84:34:77 brd ff:ff:ff:ff:ff:ff
4: usb0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000
link/ether 00:e0:4c:9e:fe:c1 brd ff:ff:ff:ff:ff:ff
inet6 fe80::2e0:4cff:fe9e:fec1/64 scope link
valid_lft forever preferred_lft forever
5: usb1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast master br0 state DOWN group default qlen 1000
link/ether 00:e0:4c:9e:fe:c3 brd ff:ff:ff:ff:ff:ff
6: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:e0:4c:9e:fe:c1 brd ff:ff:ff:ff:ff:ff
inet 10.1.2.3/24 brd 10.1.2.255 scope global br0
valid_lft forever preferred_lft forever
inet6 fe80::2e0:4cff:fe9e:fec1/64 scope link
valid_lft forever preferred_lft forever
root@unihiker:~#
Don't mean to post a redundant question (because I just inquired about gateway address assignment) but what made UNIHIKER receive 10.0.0.14 for your Wi-Fi? Thanks.
Regards.
P.S.
I do have a dual band Wi-Fi Access point actively serving other clients in my farm.