新的开始 day1
I spend all my bachelor & master time to learn to code and study machine vision stuff. Now, as a Phd candidate, my career changed to SLAM robotics, which is quite exciting. I finally jumped out of the boundary of coding and started to do some real welding and soldering. It is not easy, btw, for me, a computer since student to pick all these EE knowledge. But its lot of fun and getting paid. I would say fair enough
这几天开始看slam小车的构造,从硬件的角度。
以前从未接触过硬件这边,最多只玩过树莓派。
感觉从硬件上说,一个小车/机器人由底盘和各种传感器再加上一个ROS组成。
传感器与ROS都比较好理解。对我而言,反而车的底盘成了最神秘的部分。经过一天的阅读,我对底盘的理解有以下几个部分构成:
- 电机 motor
- 编码器 encoder
- 驱动板
- 上层控制电脑 这里可以是树莓派之类,也可以是笔记本电脑之类
- 电源与电源控制板
在阅读中已经学习了PWM(Pulse Width Modulatio)的使用,并在树莓派上测试了一段模拟脉冲宽度调制的python代码,如下:
arduino 关于pwm的介绍

#!/usr/bin/env python |
但是要注意这里代码对应的舵机是360度舵机,如果测试180度舵机,试试下面这段代码,写的更直接粗暴简单:
import RPi.GPIO as GPIO |
在学习中我还是不太明白为何初始电位在7.5,逻辑倒是简单粗暴,实际的PWM值会根据你买的电机有多不靠谱而产生浮动,调整一下就好。
而且我感觉每次把电机转到最大角度,再拉回来,是不是就是业内统一的初始化方式? brute force initialization?
附送树莓派1GPIO对照表,如果你也在学这些,请选择没有占用的接口测试舵机。否则舵机会出现迷之抽搐。/
# define from wiringPi.h
# 3.3V | | 5V
# 8/SDA | | 5V
# 9/SCL | | GND
# 7 | | 14/TX
# GND | | 15/RX
# 0 | | 18
# 2 | | GND
# 3 | | 23
# VCC | | 24
# MOSI/12 | | GND
# MISO/13 | | 25
# SCK/14 | | 8/CE0
# GND | | 9/CE19
#/
舵机并不是重点,主要是通过舵机了解PWM的运作原理。另外值得一提的是树莓派对PWM的控制没有arduino精准,抖动好像是正常的,毕竟这是模拟PWM电路,如果真的手动攒小车的话还是需要一块专业的PWM电机驱动板来完成这个过程再反馈给上层树莓派。这样操作的话貌似会稳定很多。
哎,伟大旅程的第一步。明天再看看编码器是咋回事儿~