Projeler
RoboVisionTech'de teknoloji, robotik ve elektronik alanlarında çeşitli projeler bulabilirsiniz. Her proje detaylı açıklamalar, kod örnekleri ve uygulama adımları içerir.
Proje Geliştirme Kaynakları
- Arduino IDE: Arduino.cc
- Python: Python.org
- OpenCV: OpenCV.org
- Raspberry Pi: RaspberryPi.org
🤖 Robotik Projeler
ROS, Arduino, Raspberry Pi ve diğer platformlar kullanarak geliştirilebilecek robotik projeler ve kod örnekleri.
1. ROS ile Basit Publisher/Subscriber
ROS'ta temel mesajlaşma sistemi ile basit bir publisher ve subscriber node'u oluşturma.
Publisher Node (Python)
#!/usr/bin/env python3
import rospy
from std_msgs.msg import String
def talker():
# ROS node'u başlatma
pub = rospy.Publisher('chatter', String, queue_size=10)
rospy.init_node('talker', anonymous=True)
rate = rospy.Rate(10) # 10Hz
while not rospy.is_shutdown():
hello_str = "hello world %s" % rospy.get_time()
rospy.loginfo(hello_str)
pub.publish(hello_str)
rate.sleep()
if __name__ == '__main__':
try:
talker()
except rospy.ROSInterruptException:
pass
Subscriber Node (Python)
#!/usr/bin/env python3
import rospy
from std_msgs.msg import String
def callback(data):
rospy.loginfo(rospy.get_caller_id() + "I heard %s", data.data)
def listener():
rospy.init_node('listener', anonymous=True)
rospy.Subscriber("chatter", String, callback)
# Node'u çalışır durumda tutma
rospy.spin()
if __name__ == '__main__':
listener()
2. URDF ile Basit Araç
URDF (Unified Robot Description Format) kullanarak 4 tekerlekli Mars rover robotu tanımlama ve simülasyon.
URDF Robot Tanımı
<?xml version="1.0"?>
<robot name="simple_car">
<!-- Materials -->
<material name="CarRed">
<color rgba="0.8 0.1 0.1 1.0"/>
</material>
<material name="WheelBlack">
<color rgba="0.05 0.05 0.05 1.0"/>
</material>
<material name="Glass">
<color rgba="0.6 0.8 1.0 0.8"/>
</material>
<!-- Chassis -->
<link name="base_link">
<inertial>
<origin xyz="0 0 0"/>
<mass value="12.0"/>
<!-- Approx inertia for 1.0 x 0.5 x 0.2 m box -->
<inertia ixx="0.29" ixy="0.0" ixz="0.0" iyy="1.04" iyz="0.0" izz="1.25"/>
</inertial>
<visual>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<box size="1.0 0.5 0.2"/>
</geometry>
<material name="CarRed"/>
</visual>
<!-- Cabin / windshield -->
<visual>
<origin xyz="0.05 0 0.2" rpy="0 0 0"/>
<geometry>
<box size="0.5 0.45 0.2"/>
</geometry>
<material name="Glass"/>
</visual>
<collision>
<origin xyz="0 0 0" rpy="0 0 0"/>
<geometry>
<box size="1.0 0.5 0.2"/>
</geometry>
</collision>
</link>
<!-- Front Left Wheel -->
<link name="front_left_wheel">
<inertial>
<origin xyz="0 0 0"/>
<mass value="2.0"/>
<inertia ixx="0.0123" ixy="0" ixz="0" iyy="0.0225" iyz="0" izz="0.0123"/>
</inertial>
<visual>
<!-- Rotate cylinder so its axis aligns with Y -->
<origin xyz="0 0 0" rpy="1.5708 0 0"/>
<geometry>
<cylinder radius="0.15" length="0.08"/>
</geometry>
<material name="WheelBlack"/>
</visual>
<collision>
<origin xyz="0 0 0" rpy="1.5708 0 0"/>
<geometry>
<cylinder radius="0.15" length="0.08"/>
</geometry>
</collision>
</link>
<joint name="front_left_wheel_joint" type="continuous">
<origin xyz="0.35 0.30 -0.15" rpy="0 0 0"/>
<parent link="base_link"/>
<child link="front_left_wheel"/>
<axis xyz="0 1 0"/>
</joint>
<!-- Front Right Wheel -->
<link name="front_right_wheel">
<inertial>
<origin xyz="0 0 0"/>
<mass value="2.0"/>
<inertia ixx="0.0123" ixy="0" ixz="0" iyy="0.0225" iyz="0" izz="0.0123"/>
</inertial>
<visual>
<origin xyz="0 0 0" rpy="1.5708 0 0"/>
<geometry>
<cylinder radius="0.15" length="0.08"/>
</geometry>
<material name="WheelBlack"/>
</visual>
<collision>
<origin xyz="0 0 0" rpy="1.5708 0 0"/>
<geometry>
<cylinder radius="0.15" length="0.08"/>
</geometry>
</collision>
</link>
<joint name="front_right_wheel_joint" type="continuous">
<origin xyz="0.35 -0.30 -0.15" rpy="0 0 0"/>
<parent link="base_link"/>
<child link="front_right_wheel"/>
<axis xyz="0 1 0"/>
</joint>
<!-- Rear Left Wheel -->
<link name="rear_left_wheel">
<inertial>
<origin xyz="0 0 0"/>
<mass value="2.0"/>
<inertia ixx="0.0123" ixy="0" ixz="0" iyy="0.0225" iyz="0" izz="0.0123"/>
</inertial>
<visual>
<origin xyz="0 0 0" rpy="1.5708 0 0"/>
<geometry>
<cylinder radius="0.15" length="0.08"/>
</geometry>
<material name="WheelBlack"/>
</visual>
<collision>
<origin xyz="0 0 0" rpy="1.5708 0 0"/>
<geometry>
<cylinder radius="0.15" length="0.08"/>
</geometry>
</collision>
</link>
<joint name="rear_left_wheel_joint" type="continuous">
<origin xyz="-0.35 0.30 -0.15" rpy="0 0 0"/>
<parent link="base_link"/>
<child link="rear_left_wheel"/>
<axis xyz="0 1 0"/>
</joint>
<!-- Rear Right Wheel -->
<link name="rear_right_wheel">
<inertial>
<origin xyz="0 0 0"/>
<mass value="2.0"/>
<inertia ixx="0.0123" ixy="0" ixz="0" iyy="0.0225" iyz="0" izz="0.0123"/>
</inertial>
<visual>
<origin xyz="0 0 0" rpy="1.5708 0 0"/>
<geometry>
<cylinder radius="0.15" length="0.08"/>
</geometry>
<material name="WheelBlack"/>
</visual>
<collision>
<origin xyz="0 0 0" rpy="1.5708 0 0"/>
<geometry>
<cylinder radius="0.15" length="0.08"/>
</geometry>
</collision>
</link>
<joint name="rear_right_wheel_joint" type="continuous">
<origin xyz="-0.35 -0.30 -0.15" rpy="0 0 0"/>
<parent link="base_link"/>
<child link="rear_right_wheel"/>
<axis xyz="0 1 0"/>
</joint>
</robot>

🖼️ Görüntü İşleme Projeleri
OpenCV, TensorFlow, PyTorch ve diğer kütüphaneler kullanarak geliştirilebilecek görüntü işleme projeleri ve kod örnekleri.
1. OpenCV ile Temel Görüntü İşleme
OpenCV kullanarak görüntü okuma, gri tonlama, blur ve kenar tespiti işlemleri.
Python Kodu
import cv2
import numpy as np
# Görüntü okuma
image = cv2.imread('image.jpg')
# Gri tonlama dönüşümü
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# Gaussian blur uygulama
blurred = cv2.GaussianBlur(gray, (5, 5), 0)
# Canny kenar tespiti
edges = cv2.Canny(blurred, 50, 150)
# Sonuçları görüntüleme
cv2.imshow('Original', image)
cv2.imshow('Grayscale', gray)
cv2.imshow('Blurred', blurred)
cv2.imshow('Edges', edges)
cv2.waitKey(0)
cv2.destroyAllWindows()

2. Yüz Tespiti ve Tanıma
OpenCV Cascade Classifier kullanarak gerçek zamanlı yüz tespiti ve tanıma sistemi.
Yüz Tespiti Kodu
import cv2
# Cascade sınıflandırıcı yükleme
face_cascade = cv2.CascadeClassifier(
cv2.data.haarcascades + 'haarcascade_frontalface_default.xml'
)
# Video yakalama
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# Yüz tespiti
faces = face_cascade.detectMultiScale(gray, 1.1, 4)
# Tespit edilen yüzlere dikdörtgen çizme
for (x, y, w, h) in faces:
cv2.rectangle(frame, (x, y), (x+w, y+h), (255, 0, 0), 2)
cv2.putText(frame, 'Face', (x, y-10),
cv2.FONT_HERSHEY_SIMPLEX, 0.9, (255, 0, 0), 2)
cv2.imshow('Face Detection', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
3. Görüntü Segmentasyonu
OpenCV ve Python kullanarak görüntü segmentasyonu ve nesne ayırma işlemleri.
Segmentasyon Kodu
import cv2
import numpy as np
def segment_image(image_path):
# Görüntü yükleme
image = cv2.imread(image_path)
# HSV renk uzayına dönüştürme
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
# Mavi renk aralığı tanımlama
lower_blue = np.array([100, 50, 50])
upper_blue = np.array([130, 255, 255])
# Mavi renk maskesi oluşturma
mask = cv2.inRange(hsv, lower_blue, upper_blue)
# Morfolojik işlemler
kernel = np.ones((5,5), np.uint8)
mask = cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel)
mask = cv2.morphologyEx(mask, cv2.MORPH_CLOSE, kernel)
# Maskeyi uygulama
result = cv2.bitwise_and(image, image, mask=mask)
return result, mask
# Kullanım
segmented, mask = segment_image('image.jpg')
cv2.imshow('Original', cv2.imread('image.jpg'))
cv2.imshow('Segmented', segmented)
cv2.imshow('Mask', mask)
cv2.waitKey(0)
cv2.destroyAllWindows()