Pose-Based Light Control with Node-Red and Raspberry Pi with AIkit
Introduction
This wiki will guide you on how to run YOLOv8 using an AI kit, use YOLOv8 to monitor your posture, and ultimately control your lights based on your posture. In this project, a USB camera captures your pose, and yolov8n run on AI kit with reComputer R1000 to detect your pose. The processed video, displaying the detected pose, is then streamed in real-time to reTerminal DM using gstreamer. Meanwhile, the joint coordinates are sent using mqtt to Node-RED which deploy on the reComputer R1000. At last, the Node-RED flow controls the smart lights based on the joint coordinates.
Prepare Hardware
reComputer r1000 | reTerminal DM | Raspberry Pi AI Kit |
---|---|---|
Run this project
On reComputer R1000
Step 1: Install AI kit
Pleses refer to this wiki and make sure you install the AI kit to your reComputer R1000.
Step 2: Install project
Download the project with the command below:
git clone https://github.com/LJ-Hao/Pose-Based_Light_Control_with_Node-Red_and_Raspberry_Pi_with_AIkit.git && cd Pose-Based_Light_Control_with_Node-Red_and_Raspberry_Pi_with_AIkit
Step 3: Run pose estimation
Edit the pose_estimation.py
file and change the mqtt_server
to your reTerminal DM's IP address. And change the Gstreamer pipeline
to your reTerminal DM's IP address. And then run the command below to start the pose estimation.
bash run.sh
Step 4: Install Node-RED
Install Node-RED. You can download Node-RED with just one line of command:
bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)
Step 5: Import flows.json
Import project files. Click Settings => Import
in the upper right corner, click select a file
to import in the new pop-up window, select flows.jeson
, and finally click Import
.
Step 6: Download the required controls
After importing the project file, the system may prompt that your node-red is missing some controls. You need to download the following controls:
@bartbutenaers/node-red-rtsp-to-mjpeg
@chirpstack/node-red-contrib-chirpstack
@flowfuse/node-red-dashboard
node-bacnet-contrib-extended
node-red-contrib-buffer-parser
node-red-contrib-image-output
node-red-contrib-image-tools
node-red-contrib-modbus
node-red-contrib-msg-speed
node-red-contrib-multipart-stream-encoder
node-red-contrib-onvif
node-red-contrib-play-audio
node-red-dashboard
node-red-node-base64
node-red-node-mysql
node-red-node-pi-gpio
node-red-node-ping
node-red-node-serialport
node-red-node-smooth
node-red-sensecap-paas
node-red-node-random
Take node-red-node-random
as an example, click Settings => Manage Palette
in the upper right corner, select the Install
column in the new window, enter node-red-node-random
, and finally click Install
Button.
Step 7: Deploy the project
Click the deploy button in the upper right corner and the system will run normally.
On reTerminal DM
Step 1: Install the gstreamer on reTerminal DM
Download the gstreamer with the command below:
sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-bad1.0-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-qt5 gstreamer1.0-pulseaudio
Step 2: Install the repository
Download the repository with the command below:
git clone https://github.com/LJ-Hao/Pose-Based_Light_Control_with_Node-Red_and_Raspberry_Pi_with_AIkit.git && cd Pose-Based_Light_Control_with_Node-Red_and_Raspberry_Pi_with_AIkit
Step 3: Run video reciver
python3 video_receiver.py
Result
We showed this demonstration in a youtube live broadcast which begin at 19:47
. And you can see the light will turn on when the host clap her hands, then the light will turn off when the host wave her hand, enjoy this demo:
Tech Support & Product Discussion
Thank you for choosing our products! We are here to provide you with different support to ensure that your experience with our products is as smooth as possible. We offer several communication channels to cater to different preferences and needs.