0%

1. 2022

2022年对于个人来说是重要的一年,在过去的一年多时间里

  • 在GT获得Master学位
  • 搬到加州,从事图像处理方面的工作
  • 学会开车、滑雪
  • 与贾博完成了采茶机器人的初步研发,由于缺少资金支持暂停
  • 开始制作个人的机器人平台,完成了基本运动模块(底盘)
  • 更加频繁的拍摄照片,利用M43系统的便携性,日常携带相机进行拍摄

2. 2023

机器人方面:

  • 个人机器人平台,增加雷达导航、增加机械臂,完成一项基本功能(e.g. 拖地)

  • 工业机器人方面,参与厨房机器人和底盘机器人项目,主要会涉及到机械臂算法的开发

  • 茶叶机器人的重新开发

  • 注重技术积累

  • 3维识别

  • 底盘+机械臂

  • 仿真

  • Webots, 控制,图像,模型

  • 机械臂算法开发

  • 基于开源模型

  • Modern C++ 学习

  • 语法, best practice

  • 导航与控制

  • 四轮独立转向系统模型

  • MPC轨迹控制

  • 加速度到速度?

工作方面:

  • 继续完善PyISP项目,增加可视化模块(GUI),并且增加ISP的其他重要模块

  • 算法开发方面,要更加注重原理和直觉的积累

  • 和manager多交流

  • 积累更多经验,主要是关于ISP的,对于各个模块要更加熟悉

个人兴趣方面:

  • 继续保持使用相机记录生活的习惯,要开始有意识的精选一些照片,而不是全部都保存下来,其实不利于后期回顾
  • 理发助手,将后脑勺头部模型开发完成并3D打印
Read more »

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

1. Quick Start

1.1. Create a new post

1
$ hexo new "My New Post"

More info: Writing

1.2. Run server

1
$ hexo server

More info: Server

1.3. Generate static files

1
$ hexo generate
Read more »

1. Intro

It has been several weeks since the project begins. To make the project more clear, we can summarize the progress here and plan the next step

2. Current

image-20221221223618322

Material:

  • Chasis
  • Power distribution: 12V, 5V, GND, voltage transformer, power
  • Move: Motor
  • Control: Arduino, Jetson Nano
  • Sensor
  • Encoder
  • IMU
  • IR: for communication and control

Function

  • Remote Manual Control: move forward/backward, rotate clockwise/counter-clockwise. SPEED CONTROL
  • TODO: move robot to a specific position. POSITION CONTROL
  • use IMU, accumulate the ACCL
  • TODO: use lidar to build map and refer it for localization. CLOSED LOOP POSITION CONTROL
  • use Lidar

For the current phase, the goal is to move from point A to point B

  • due to the design, easy to rotate and move
Read more »

1. Goal

Show how my face and hair style changes from time to time

Input: a bunch of selfie

Output: a short clip show the change

2. Plan

  1. Collect data (image) from camera and phone
  2. Put into Lightroom in a album for organization and further development
  3. Output the image with time-tagged prefix
  4. Remove the background (maybe not)
  5. Use computer vision to detect the face and crop

3. Code

Eye alignment is the key process

https://github.com/hujunhan/eyelign

  1. main.py use machine learning to do the most job
  2. gui_manual_align.py use GUI to manual align the corner case
Read more »

1. Intro

BNO-055 is a 9-DOF IMU that can output absolute orientation (a hard problem to solve)

  • The fusion algorithm is in the chip already
  • Can output
  • Absolute orientation (Quaterion)
  • Linear acceleration

sensors_pinout.jpg

2. Setup

Communicate with a board by I2C/IIC

  • SDA: data
  • SCL: clock

Check if the system detected

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <Wire.h> //include Wire.h library

void setup()
{
Wire.begin(); // Wire communication begin
Serial.begin(9600); // The baudrate of Serial monitor is set in 9600
while (!Serial); // Waiting for Serial Monitor
Serial.println("\nI2C Scanner");
}

void loop()
{
byte error, address; //variable for error and I2C address
int nDevices;

Serial.println("Scanning...");

nDevices = 0;
for (address = 1; address < 127; address++ )
{
// The i2c_scanner uses the return value of
// the Write.endTransmisstion to see if
// a device did acknowledge to the address.
Wire.beginTransmission(address);
error = Wire.endTransmission();

if (error == 0)
{
Serial.print("I2C device found at address 0x");
if (address < 16)
Serial.print("0");
Serial.print(address, HEX);
Serial.println(" !");
nDevices++;
}
else if (error == 4)
{
Serial.print("Unknown error at address 0x");
if (address < 16)
Serial.print("0");
Serial.println(address, HEX);
}
}
if (nDevices == 0)
Serial.println("No I2C devices found\n");
else
Serial.println("done\n");

delay(5000); // wait 5 seconds for the next I2C scan
}

The address should be 0x28

Read more »

1. Intro

IR use light to transmit data

image-20221219213927203

Light used is infrared

  • inexpensive
  • subject to interference
  • Sunlight would interference the IR

Data are modulated in 38K Hz (usually)

image-20221219214112137

Each button sends a unique code

2. Test

2.1. Sender

Read more »

1. Intro

MPU6050 is a IMU that can measure acceleration and orientation

This is part of the localization system, could be combined with encoder and lidar to provide robot a high-accuracy localization system

IMG_7084

2. Setup

Communicate with a board by I2C/IIC

  • SDA: data
  • SCL: clock

Check if the system detected

1
2
3
4
5
6
7
8
9
10
11
sudo i2cdetect -r -y 1
## output
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

Which means the MPU6050’s address is 68

Read more »

1. Method

  1. Identity the behavior of the object to be controlled.
  2. In theory, analyze the response, the more linear, the easier to control
  3. Design Controller
  4. Check the result and tune

2. Behavior

Collect the data by giving the motor PWM from 0 to 255, record the RPM and see whats going on

image-20221210214034055

We can see that the relation is almost linear

image-20221210225230532

So we can fit the data
$$
RPM=0.88PWM-8.1
$$
Above is the data from right motor, things in left motor is similar

image-20221210232829155

However, the coef is a little different
$$
RPM=0.86PWM-5.99
$$
Maybe two reason

Read more »

1. Intro

Usage

  1. Active, can be used as motor controller, like a physical button to tell the system how much speed/volume you want
  2. Passive, can be used as a motor sensor, reading the rotation of a motor, can be further calculated as angular speed

image-20221206215355653

2. Usage

Typically, the encoder on a motor would have 4 channel,

  • VCC: in general, 5V
  • GND: ground
  • ChA and ChB, two channel of the encoder that output PWM
  • two channel can be used at same time to determine the direction of motor
  • In reality, only ONE channel is enough since the direction is controlled by the controller (us)

3. Resolution

Resolution need to be known to calculate the speed

3.1. PPR

Read more »