1
0 → 2 AY
Temel Altyapı — Matematik + Python + C++ + Linux
Lineer Cebir · Türev · OOP · Multi-threading · Bash · Process
▶
Robot = Matematik + Fizik. Bu temel olmadan robotik yazılımı "kara kutu" olarak kullanırsın. PID parametrelerini anlamazsın, Kalman Filter çalışmaz, kinematiği hesaplayamazsın. Sağlam temel = sağlam robot.
📐 Lineer Cebir
• Vektör & matris operasyonları
• Matris çarpımı — dönüşüm matrisleri
• Rotation matrix (3D uzay)
• Eigenvalue/eigenvector (PCA, vibrasyon)
• Homogeneous coordinates (robotik standart)
∂ Türev & Optimizasyon
• Zincir kuralı → backprop
• Kısmi türev → gradient
• Jacobian matrisi → robot hızı
• Lagrangian mekaniği (dinamik)
• Least squares → sensör fusion
P Olasılık & İstatistik
• Koşullu olasılık, Bayes teoremi
• Gaussian (Normal) dağılım
• Kalman Filter temeli
• Çok değişkenli dağılımlar
• Belirsizlik modellemesi
# Python — hızlı prototipleme
import numpy as np
# 3D Rotation Matrix (Z ekseni etrafında θ)
def rot_z(theta: float) -> np.ndarray:
c, s = np.cos(theta), np.sin(theta)
return np.array([[c,-s,0],[s,c,0],[0,0,1]])
# Jacobian — uç efektör hızı
# ẋ = J(q) · q̇
// C++ — gerçek zamanlı kontrol
// #include <Eigen/Dense>
Eigen::Matrix3d rotZ(double theta) {
Eigen::AngleAxisd aa(theta, Eigen::Vector3d::UnitZ());
return aa.toRotationMatrix();
}
// Multi-threading — paralel sensör okuma
std::thread camera_thread([&]{ readCamera(); });
std::thread lidar_thread ([&]{ readLidar(); });
camera_thread.join(); lidar_thread.join();
Hedef: Linux'ta C++ derleyip çalıştır. NumPy ile rotation matrix hesapla. Terminal'den process yönet.
2
2 → 5 AY
Mühendislik Temelleri — Elektronik + Mekanik + Gömülü
Sensörler · Arduino · Raspberry Pi · Kinematik · PID · UART/I2C/SPI
▶
Ultrasonik
HC-SR04, mesafe ölçüm
IMU
MPU-6050, açı/ivme
LiDAR
RPLIDAR, 2D/3D haritalama
Depth Camera
RealSense, 3D görüntü
GPS/GNSS
Konum, navigasyon
Encoder
Motor pozisyon geri bildirimi
Barometer
Yükseklik (drone)
Force/Torque
Temas algılama
// PID Kontrol — Robotik'in temel taşı
class PIDController {
double kp, ki, kd, prev_error = 0, integral = 0;
public:
PIDController(double p, double i, double d): kp(p), ki(i), kd(d){}
double compute(double setpoint, double measured, double dt) {
double error = setpoint - measured;
integral += error * dt;
double derivative = (error - prev_error) / dt;
prev_error = error;
return kp*error + ki*integral + kd*derivative;
}
};
// I2C ile IMU okuma (MPU-6050)
Wire.begin();
Wire.beginTransmission(0x68); // IMU adresi
Wire.write(0x3B); // Accelerometer register
Wire.endTransmission(false);
Wire.requestFrom(0x68, 14); // 14 byte: accel+gyro+temp
Motor Tipleri
DC motor (hız kontrol) · Servo (açı kontrol) · Stepper (adım hassas) · BLDC (drone/yüksek güç)
Real-Time Sistemler
RTOS (FreeRTOS) · Deterministik zamanlama · Interrupt handling · Watchdog timer
Güç Elektroniği
H-bridge motor sürücü · PWM · ESC (elektronik hız kontrolörü) · Güç dağıtım kartı
3
5 → 9 AY
Robotik Core — Kinematik + Dinamik + ROS2
FK/IK · PID · State-Space · ROS2 · Topic/Node/Service · Gazebo
▶
ROS2 neden kritik? ROS (Robot Operating System) robot yazılımının Linux'udur. Endüstri standardı. Tüm büyük robot şirketleri (Boston Dynamics, NASA, ASELSAN) ROS kullanır. ROS1 artık legacy — direkt ROS2 öğren.
// KİNEMATİK AKIŞI
Eklem
Açıları
q₁,q₂,q₃
Açıları
q₁,q₂,q₃
GİRİŞ
→
İleri
Kinematik
FK(q)
Kinematik
FK(q)
FORWARD K.
→
Uç
Efektör
Pozisyon
Efektör
Pozisyon
ÇIKIŞ x,y,z
⇄
Ters
Kinematik
IK(x,y,z)
Kinematik
IK(x,y,z)
INVERSE K.
→
Eklem
Komutları
q₁,q₂,q₃
Komutları
q₁,q₂,q₃
KONTROL
# ROS2 — Node + Publisher + Subscriber
import rclpy
from rclpy.node import Node
from geometry_msgs.msg import Twist
from sensor_msgs.msg import LaserScan
import numpy as np
class ObstacleAvoidance(Node):
def __init__(self):
super().__init__("obstacle_avoidance")
self.pub = self.create_publisher(Twist, "/cmd_vel", 10)
self.sub = self.create_subscription(
LaserScan, "/scan", self.laser_callback, 10
)
self.get_logger().info("Obstacle Avoidance node başlatıldı")
def laser_callback(self, msg: LaserScan):
ranges = np.array(msg.ranges)
min_dist = np.nanmin(ranges[0:30]) # önden ölç
cmd = Twist()
if min_dist > 0.5:
cmd.linear.x = 0.3
else:
cmd.angular.z = 0.8 # dön
self.pub.publish(cmd)
def main():
rclpy.init()
rclpy.spin(ObstacleAvoidance())
rclpy.shutdown()
Topic
Pub/sub. Sensor data, cmd_vel, images. Async iletişim.
Service
Request/response. Koordinat sorgusu, arm enable. Senkron.
Action
Uzun görevler. Navigate to pose. İptal edilebilir.
Gazebo
3D fizik simülasyonu. Gerçek robot olmadan test.
🤖 ROS2 Talker/Listener
🚧 Engelden Kaçan Robot
📐 Kinematik Solver
4
9 → 15 AY
Otonom Sistemler — CV + SLAM + Path Planning + Karar
OpenCV · YOLO · Kalman Filter · EKF-SLAM · A* · RRT · Behavior Trees
▶
# Kalman Filter — belirsizlik altında durum tahmini
import numpy as np
class KalmanFilter:
def __init__(self, F, H, Q, R, x0, P0):
self.F, self.H = F, H # durum geçiş, gözlem matrisi
self.Q, self.R = Q, R # proses gürültüsü, ölçüm gürültüsü
self.x, self.P = x0, P0 # başlangıç durumu, kovaryans
def predict(self, u=None):
self.x = self.F @ self.x # ön tahmin
self.P = self.F @ self.P @ self.F.T + self.Q
def update(self, z):
S = self.H @ self.P @ self.H.T + self.R
K = self.P @ self.H.T @ np.linalg.inv(S) # Kalman kazancı
self.x += K @ (z - self.H @ self.x)
self.P = (np.eye(len(self.x)) - K @ self.H) @ self.P
# A* Path Planning
import heapq
def astar(grid, start, goal):
h = lambda p: abs(p[0]-goal[0]) + abs(p[1]-goal[1]) # Manhattan
open_set = [(0, start)]
came_from, g = {}, {start:0}
while open_set:
_, current = heapq.heappop(open_set)
if current == goal: return reconstruct(came_from, current)
for nb in neighbors(grid, current):
ng = g[current] + 1
if ng < g.get(nb, float('inf')):
came_from[nb] = current; g[nb] = ng
heapq.heappush(open_set, (ng+h(nb), nb))
SLAM (kritik!)
Eş zamanlı haritalama + lokalizasyon. EKF-SLAM, Graph SLAM, ORB-SLAM2/3. gmapping, cartographer (ROS).
Sensör Füzyonu
IMU + GPS + LiDAR birleşimi. EKF/UKF. robot_localization paketi. GNSS + odometry fusion.
Behavior Trees
FSM'den üstün — modüler, test edilebilir. BehaviorTree.CPP (C++), py_trees (Python). Nav2 içinde.
📷 Kamera ile Nesne Tanıma
🗺️ SLAM Haritası
🛤️ Path Planning Demo
🚗 Mini Otonom Araç
5
15 → 20 AY
Otonom Araç / Drone Sistemleri
Lane Detection · Sensor Fusion · PX4 · ArduPilot · PID Tuning · GPS Nav
▶
🚗 Otonom Araç Stack
• Perception: Camera + LiDAR fusion, lane detection, object tracking
• Localization: HD harita + GPS + SLAM
• Planning: Global (A*) + Local (TEB, DWA)
• Control: Lateral (Stanley/MPC) + Longitudinal (ACC)
• Framework: Autoware, Apollo, CARLA sim
🚁 Drone Sistemleri
• Flight Controller: PX4 (açık kaynak standart)
• Ardupilot: ArduCopter/Plane, MAVLink protokolü
• PID Tuning: Roll/Pitch/Yaw halkası ayarı
• GPS Nav: Waypoint mission, geofencing
• Sim: Gazebo + SITL, AirSim, JSBSim
# MAVROS — ROS ile Drone kontrolü
import rospy
from mavros_msgs.msg import State
from mavros_msgs.srv import CommandBool, SetMode
from geometry_msgs.msg import PoseStamped
class DroneController:
def __init__(self):
rospy.init_node("drone_controller")
self.pose_pub = rospy.Publisher("/mavros/setpoint_position/local", PoseStamped, queue_size=10)
self.arm_srv = rospy.ServiceProxy("/mavros/cmd/arming", CommandBool)
self.mode_srv = rospy.ServiceProxy("/mavros/set_mode", SetMode)
def takeoff(self, height: float):
self.mode_srv(custom_mode="OFFBOARD") # OFFBOARD modu
self.arm_srv(value=True) # arm et
pose = PoseStamped()
pose.pose.position.z = height
for _ in range(100): self.pose_pub.publish(pose)
💡 CARLA & AirSim: Gerçek araç olmadan otonom araç geliştirmek için açık kaynak simülatörler. CARLA, sensör veri üretiminden trafik senaryosuna kadar tüm stack'i destekler. İlk self-driving projen burada olsun.
6
20+ AY
İleri Seviye — RL + Swarm + Edge AI + Real-Time AI
DQN · PPO · Sim-to-Real · Isaac Gym · NVIDIA Jetson · TensorRT · Swarm
▶
🎮 Reinforcement Learning for Robotics
• Sim-to-Real: Isaac Gym / MuJoCo → gerçek robot
• PPO / SAC: Locomotion, manipulation policy
• Domain Randomization: Gerçek dünya transferi
• Boston Dynamics: Spot, Atlas bu yöntemle eğitildi
• Imitation Learning: Robot taklit ederek öğrenir
⚡ Edge AI — NVIDIA Jetson
• Jetson Orin/Nano: Robotik AI için tasarlandı
• TensorRT: Model inference hızlandırma (4-8x)
• DeepStream: Gerçek zamanlı video analytics
• INT8 Quantization: GPU'suz yerleşik çıkarım
• Triton Inference: Çoklu model paralel servis
# Swarm Robotics — çok robot koordinasyonu
# Boid algoritması — sürü davranışı
import numpy as np
class Boid:
def __init__(self, pos, vel):
self.pos, self.vel = np.array(pos, float), np.array(vel, float)
def update(self, boids, dt=0.1):
separation = self._separation(boids) # çarpışmaktan kaç
alignment = self._alignment(boids) # aynı yöne git
cohesion = self._cohesion(boids) # merkeze yaklaş
self.vel += (separation * 1.5 + alignment * 1.0 + cohesion * 1.0) * dt
self.vel = self.vel / np.linalg.norm(self.vel) * 2.0
self.pos += self.vel * dt
🤖 SLAM Yapan Robot
🚁 Otonom Drone
🚗 Self-Driving Mini Car
🐝 Swarm Robots (3+)