Das Internet ist voll von unnötigen und teilweise wirklich blöden Anleitungen und Anweisungen, wenn es um die Bluetooth Unterstützung oder Fehler bei der Kamera vom Raspi geht.
Deshalb eine Schritt für Schritt Anleitung für die Installation von ROS2, Bluetooth Aktivieren, I2C und die Kameraunterstützung:
ROS2:
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
sudo apt update
sudo apt install ros-galactic-desktop
source /opt/ros/galactic/setup.bash
Das wars auch schon. Danach kann man mit:
ros2 run demo_nodes_py listener
prüfen, ob die Installation geklappt hat.
I2C aktivieren:
sudo apt install -y i2c-tools
sudo i2cdetect -y 1
Der Test sollte so etwas ergeben:
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: 40 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: 70 -- -- -- -- -- -- --
vorausgesetzt das I2C Board ist richtig angeschlossen.
Kamera mit OpenCV:
Mit OpenCV lässt sich die Kamera ansprechen:
pip3 install opencv-contrib-python==4.5.3.56
sudo nano /boot/firmware/config.txt
# Ans Ende einfügen:
# start_file=start4x.elf
# fixup_file=fixup4x.dat
# start_x=1
# gpu_mem=64
sudo reboot now
Mit einem kurzen Test Programm lässt sich die Kamerafunktion überprüfen:
# test.py
import cv2
cap = cv2.VideoCapture(0)
# Capture frame
ret, frame = cap.read()
if ret:
cv2.imwrite('image.jpg', frame)
cap.release()
Ein Videostream erfolgt mit einer while Schleife:
import cv2
# Create object for default camera 0
video_capture = cv2.VideoCapture(0)
while True:
# Get frame from video
ret, frame = video_capture.read()
# Show frame as video stream
cv2.imshow('Video', frame)
# Run program until user enters 'q'
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# If program exists while loop, release video capture and close all windows
video_capture.release()
cv2.destroyAllWindows()
Bluetooth aktivieren
Auch hierzu liest man eine Menge Unsinn und Treiber Angaben, die man überhaupt nicht braucht.
Der einzige notwendige zusätzliche Treiber wird installiert mit:
sudo apt install pi-bluetooth
Danach kann man Bluetooth Geräte mit
bluetoothctl
scan on
suchen und mit connect Mac Adresse verbinden. Um die Verbindung in Zukunft automatisch stattfinden zu lassen der Mac Adresse noch vertrauen: trust MAC-Adresse.
Um ein X-Box Controller verbinden zu können muss mit
echo 'options bluetooth disable_ertm=Y' | sudo tee -a /etc/modprobe.d/bluetooth.conf
der sogenannte: Enhanced Re-Transmission Mode deaktiviert werden. Da ich das leider nicht erklären kann, was das ist noch ein Link dazu: https://en.wikipedia.org/wiki/List_of_Bluetooth_protocols#:~:text=The%20EL2CAP%20specification%20adds%20an,)%2C%20such%20as%20802.11abgn.