DonkeyCar树莓派版的实践

  • DonkeySim挑战赛群(QQ:913557234)
  • DonkeyCar树莓派版的实践
    • 1.0 配置与组装
    • 2.0 DonkeyCar组装
    • 3.0 在Windows上安装Donkeycar
      • 3.1 安装miniconda Python 3.7
      • 3.2 安装git 64 bit
      • 3.3 创建项目目录
      • 3.4 从Github获取最新的Donkeycar
      • 3.5 更换国内源
      • 3.6 更新与删除
      • 3.7 创建Python Anaconda环境
      • 3.8 安装Tensorflow GPU
      • 3.9 创建工作目录
    • 4.0 树莓派上环境配置与安装
      • 4.1 格式化TF卡
      • 4.2 下载树莓派系统镜像文件
      • 4.3 安装Win32DiskImager
      • 4.4 树莓派连接电脑
      • 4.5 更换国内软件源
      • 4.6 更新和升级
      • 4.7 配置设置
      • 4.8 摄像头测试
      • 4.9 安装依赖项
      • 4.10 设置虚拟环境
      • 4.11 安装Donkeycar Python代码
      • 4.12 安装Tensorflow
    • 5.0 创建DonkeyCar应用程序
      • 5.1 从模板创建Donkeycar
      • 5.2 配置I2C PCA9685
    • 6.0 校准你的DonkeyCar
      • 6.1 转向校准
      • 6.2 油门校准
    • 7.0 启动
      • 7.1 DonkeyCar操作
      • 7.2 PC电脑操作
    • 8.0 训练自动驾驶
      • 8.1 收集数据
      • 8.2 将采集的训练数据传输到PC
      • 8.3 训练模型
      • 8.4 训练模型发送到小车实现自动驾驶
    • 9.0 摇杆控制器(国产组装PS3)
      • 9.1 安装与设置
      • 9.2 操纵杆控制
    • 10.0 树莓派命令的别名
    • 11.0 安卓手机控制
      • 11.1 编辑wpa_supplicant.conf文件
      • 11.2 获取IP信息
      • 11.3 手机安装JuiceSSH
      • 11.4 连接
    • 12.0 场地标准

DonkeySim挑战赛群(QQ:913557234)

DonkeyCar树莓派版的实践

在DonkeyCar树莓派版的实践过程中,根据网上的各种资料操作经常会失败,其原因主要是有些资料很老久了,现在的技术领域发展太快,有些一年前的东西由于其他配套版本的升级与更新,使得已发表的内容已经无法在可靠的运行了,所以我这篇的内容会不断的跟踪DonkeyCar的发展,并在力所能及的范围内尽可能的同步更新,也希望DonkeyCar的实践者和爱好者共同参与一起来做这件事!

最新原版(英文)。

有兴趣的欢迎加入“DonkeyCar自动驾驶DIY” QQ群(913557234)交流讨论!

1.0 配置与组装

本DonkeyCar树莓派版的实践采用以下配置:

  • 车体:HSP1/16 无限94186遥控车越野车(有刷裸车)

  • 树莓派

    • 树莓派3 B+ 或 zero w

    • 16G 或 8G TF卡
    • 摄像头(树莓派 500万像素摄像头)
  • 读卡器

  • 驱动板(16路PWM舵机驱动模块PCA9685)

  • 电源模块(DC-DC 降压电源模块,6.5v12V~40V转5V/2A)

  • 接插件(小田宫接插件 2位)

  • 支架(donkey car 3D打印支架底板)

  • PS3蓝牙无线手柄

2.0 DonkeyCar组装





电机原连接在2.4G接收机的CH1、CH2通道上,如下图。

将CH1上的“白红黑”线(转向控制线)拔出,可看到,该线的另一端是连接到转向伺服电机上的,也就是控制小车转向的;CH2上的“白红黑”线(油门控制线)来自BEC(去电池电路)模块,该模块控制小车的电机,也就是控制小车速度的。
油门控制线接PWM驱动模块的0通道,转向控制线接1通道。

接线时,黑线对应驱动板上的黑排端子,红线对应红排端子,白线对应黄排端子。
接收机可以拆下来(原双面胶固定的)。
最后,还需要加一个移动电源(5V/2A输出),给树莓派供电。

3.0 在Windows上安装Donkeycar

3.1 安装miniconda Python 3.7

我是Win7,64位的系统,所以我安装的是miniconda Python 3.7 64位。
安装方法参见:Windows 10下安装Miniconda3

3.2 安装git 64 bit

安装git 64 bit。
安装方法参见:GIT -2.18.0-64.bit 的安装与使用

3.3 创建项目目录

  • 从开始菜单启动Anaconda
  • 创建并更改为您希望用作项目的目录
(base) C:\Users\adminitrator>d:
(base) D:\>mkdir projects
(base) D:\>cd projects

3.4 从Github获取最新的Donkeycar

git clone https://github.com/autorope/donkeycar
cd donkeycar
git checkout master

3.5 更换国内源

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
conda config --set show_channel_urls yes

3.6 更新与删除

conda update -n base -c defaults conda
conda env remove -n donkey

此处有时下载很困难,自行想办法解决!!!

3.7 创建Python Anaconda环境

conda env create -f install\envs\windows.yml
conda activate donkey
pip install -e .[pc]

这一过程时间较长,请耐心点!!!

3.8 安装Tensorflow GPU

如果你有NVidia卡,你应该更新到最新的驱动程序并安装Cuda SDK。

conda install tensorflow-gpu==1.13.1

3.9 创建工作目录

donkey createcar --path D:/mycar

4.0 树莓派上环境配置与安装

4.1 格式化TF卡

安装SDCardFormatterv5_WinEN,格式化TF卡。
参见:还原 / 恢复 / 格式化安装过操作系统 (Raspbian) 的 microSD 卡

4.2 下载树莓派系统镜像文件

下载Raspian Lite(Stretch)(352MB)。

4.3 安装Win32DiskImager

在Windows环境下使用Win32 Disk Imager(Image Writer)软件写入,把下载的zip包解压,打开软件,选择img文件,点击“写入”按钮,等待写入完成。
参见:树莓派3-系统安装-Windows下利用Win32DiskImager进行系统安装

4.4 树莓派连接电脑

在电脑上打开此boot分区,在里面新建一个ssh的空文件,系统在启动的时候就可以识别出来,从而在开机的时候就开启ssh连接。
当你没有网线的时候,就算开启了ssh连接,由于无法与电脑处于同一局域网,此时电脑也无法通过ssh连接树莓派,此时就需要在树莓派开启的时候先连接上wifi。同样的,首先在内存卡中的boot分区中新建一个wpa_supplicant.conf的文件,并在里面写上树莓派的wifi配置命令。
配置如下:

country=CN
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1network={ssid="shumeipai"psk="88888888"key_mgmt=WPA-PSKpriority=1
}

可以先写到记事本中,然后另存为wpa_supplicant.conf,再将其放入内存卡boot目录中。注意,其中ssid里的“shumeipai”是wifi名称,psk里的“88888888”是wifi密码。
将内存卡插入树莓派中连接电源开启树莓派了,利用Advanced IP Scanner可以在电脑上查看树莓派的IP地址 。
参见:Advanced IP Scanner - 免费的网络扫描工具
查找到树莓派ip地址之后,在电脑上利用putty通过ssh来连接树莓派。有时一次扫不到,就再扫描一次。
也可在命令窗口,输入arp -a查找,一般物理地址开头为“b”的是树莓派。






树莓派的ssh默认登陆名称是:pi
登陆密码是:raspberry

4.5 更换国内软件源

打开sources.list文件

sudo nano /etc/apt/sources.list

将内容替换如下:

deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi


打开raspi.list文件

sudo nano /etc/apt/sources.list.d/raspi.list

将内容替换如下:

deb http://mirror.tuna.tsinghua.edu.cn/raspberrypi/ stretch main ui
deb-src http://mirror.tuna.tsinghua.edu.cn/raspberrypi/ stretch main ui


Linux下nano编辑器的使用:
保存 :Ctrl+O,使用来保存所做的修改。
退出 :Ctrl+X,如果你修改了文件,下面会询问你是否需要保存修改。输入Y确认保存,输入N不保存,按Ctrl+C取消,返回继续编辑。
如果输入了Y,下一步会让你输入想要保存的文件名。如果不需要修改文件名直接回车就行;若想要保存成别的名字(也就是另存为)则输入新名称然后确定。

4.6 更新和升级

sudo apt-get update
sudo apt-get upgrade

4.7 配置设置

sudo raspi-config

回车,并通过方向键和回车键来选择各项设置。
change default password for pi
Localisation Option | Change Locale | zh_CN.UTF-8 UTF-8 | zh_CN.UTF-8
找到zh_CN.UTF-8 UTF-8,通过空格选中,确认后再次选择zh_CN.UTF-8。然后重启机器,完成Raspbian中文环境配置。
Interfacing Options | Camera
Interfacing Options | I2C
Advanced Options | Exapand Filesystem
修改密码,确定打开摄像头功能,打开I2C功能,最后还要设置Advanced Options | Exapand Filesystem。

4.8 摄像头测试

输入命令如下:

raspistill -o image.jpg -rot 180

等这条命令执行完成后,下载安装并运行FileZilla。

主机:sftp://192.168.1.31;用户名:pi;密码:xxx



此图像显示倒置,我们先不要管它,到后面运行小车应用程序时,再看图像是否正常。

4.9 安装依赖项

sudo apt-get install build-essential python3 python3-dev python3-virtualenv python3-numpy python3-picamera python3-pandas python3-rpi.gpio i2c-tools avahi-utils joystick libopenjp2-7-dev libtiff5-dev gfortran libatlas-base-dev libopenblas-dev libhdf5-serial-dev git

4.10 设置虚拟环境

python3 -m virtualenv -p python3 env --system-site-packages
echo "source env/bin/activate" >> ~/.bashrc
source ~/.bashrc

以这种方式修改.bashrc将在每次登录时自动启用此环境。要返回系统python,您可以键入deactivate。

4.11 安装Donkeycar Python代码

更改为您希望用作项目的目录。

mkdir projects
cd projects

从Github获取最新的Donkeycar代码

git clone https://github.com/autorope/donkeycar
cd donkeycar
git checkout master
pip install -e .[pi]

安装过程中有个别下载总是不成功,如下:

下载未完成(此例中3.5MB仅下载到3.1MB就进入下一步了),可以在此处看到这个文件的链接地址为:
https://www.piwheels.org/simple/h5py/h5py-2.10.0-cp35-cp35m-linux_armv6l.whl
可以用迅雷或其他办法下载下来进行离线安装(下载的文件放置到当前目录)

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple h5py-2.9.0-cp35-cp35m-linux_armv7l.whl

4.12 安装Tensorflow

pip install tensorflow==1.13.1

同样,安装过程中有个别下载总是不成功,可以用迅雷或其他办法下载下来进行离线安装(下载的文件放置到当前目录)。
安装过程中会出现下面这个问题:
Found existing installation: numpy 1.12.1
Not uninstalling numpy at /usr/lib/python3/dist-packages, outside environment /home/pi/env
Can’t uninstall ‘numpy’. No files were found to uninstall.
在此处要耐心等待完成,完成后用下述命令查看numpy版本:

pip list

(env) pi@raspberrypi:~ $ pip list
Package Version Location


numpy 1.17.2
使用下述命令卸载新安装的numpy版本

pip uninstall numpy

使用以下命令验证tensorflow的安装。

python -c "import tensorflow"

出现下述信息。
下述的警告是正常的:
/home/pi/env/lib/python3.5/importlib/_bootstrap.py:222: RuntimeWarning: compiletime version 3.4 of module ‘tensorflow.python.framework.fast_tensor_util’ does not match runtime version 3.5
return f(*args, **kwds)
/home/pi/env/lib/python3.5/importlib/_bootstrap.py:222: RuntimeWarning: builtins.type size changed, may indicate binary incompatibility. Expected 432, got 412
return f(*args, **kwds)

5.0 创建DonkeyCar应用程序

5.1 从模板创建Donkeycar

donkey createcar --path ~/mycar

5.2 配置I2C PCA9685

sudo apt-get install i2c-tools
sudo i2cdetect -y 1

6.0 校准你的DonkeyCar

所有汽车的设置都在运行命令时生成的脚本config.py和myconfig.py脚本中。

6.1 转向校准

确保您的汽车离地,以防止失控。

  1. 打开你的车,先打开车电源开关,再接通树莓派电源;
  2. 确认小车上的方向伺服控制线,它应该是PWM驱动板的1通道;
  3. 执行 donkey calibrate --channel 1 --bus=1;
  4. 输入360,小车的车轮略微移动。如果没有输入400或300;
  5. 接下来,从刚才开始输入值基础上增加或减少10(更准确时,增减量可以为2或1),找到最大左转向的最小PWM值(再增加PWM时,角度不会再改变了)和最大右转向的最大PWM值(再减小PWM时,角度不会再改变了),并记住这些值;
  6. 输入“q”或“Q”退出;
  7. 在myconfig.py脚本中输入这些值作为STEERING_RIGHT_PWM和 STEERING_LEFT_PWM。

6.2 油门校准

  1. 确认小车上的ESC油门控制线,它应该是PWM驱动板的0通道;
  2. 运行 donkey calibrate --channel 0 --bus=1;
  3. 提示输入PWM值时,输入370;
  4. 应该听到ESC蜂鸣声,表明它已经过校准;
  5. 输入400,应该看到小车车轮开始前进,如果没有,可能是反向,请尝试输入330;
  6. 继续尝试不同的值,直到找到合理的最大速度并记住此PWM值。
    反转RC汽车有点麻烦,因为ESC必须接收反向脉冲,零脉冲,反向脉冲才能开始倒退。要校准反向PWM设置…
  7. 使用与上述相同的方法将PWM设置为零油门(370);
  8. 先输入反向值(330),再输入零油门值(370),然后再输入反向值(330);
  9. 反向值增或减 10输入,以找到合理的反向速度。记住这个反向PWM值。
    现在打开myconfig.py脚本并将小车的PWM值输入throttle_controller部分:
    THROTTLE_FORWARD_PWM =全油门前进的PWM值
    THROTTLE_STOPPED_PWM =零油门的PWM值
    THROTTLE_REVERSE_PWM =全反向油门时的PWM值
    使用下列命令修改校准值:
sudo nano /home/pi/mycar/myconfig.py

7.0 启动

7.1 DonkeyCar操作

退出重启,并用PuTTY连接DonkeyCar的树莓派,输入下列命令:

python mycar/manage.py drive

7.2 PC电脑操作

PC上在浏览器输入:192.168.1.31:8887,在Web上控制DonkeyCar。

8.0 训练自动驾驶

8.1 收集数据

确保收集到的数据质量。

  1. 在赛道上多练习驾驶几次(不记录数据);
  2. 当你确信你可以无误地驾驶10圈时按开始录制;
  3. 如果碰撞或跑离赛道,请立即按Stop Car停止录制;
  4. 在收集了10-20圈的良好数据(5-20k图像)之后,可以在小车的ssh会话中使用Ctrl-c停止小车;
  5. 您收集的数据位于最近的TUB数据文件夹中。

8.2 将采集的训练数据传输到PC

由于Raspberry Pi不是很强大,我们需要将数据传输到PC计算机进行训练。
在PC上用FileZilla将raspberry pi中/mycar/data/tub文件发送到PC的/mycar/data/下。

8.3 训练模型

在主机PC上打开一个终端Anaconda prompt,按下列步骤训练模型。

d:
activate donkey
python d:mycar/manage.py train --model mycar/models/mypilot.h5



8.4 训练模型发送到小车实现自动驾驶

现在,再用FileZilla 将你的 model 发送到你的小车上。


现在可以再次启动小车,并将模型传递给自动驾驶仪。

python mycar/manage.py drive --model ~/mycar/models/mypilot.h5

启动DonkeyCar,选择Local Pilot模式,进行自动驾驶。

9.0 摇杆控制器(国产组装PS3)

为了在现场操作方便,最好使用无线手柄,从DonkeyCar的推荐上来看,性价比较好的是索尼的PS3,但DonkeyCar仅提供了支持索尼原装的PS3。原装PS3的价格还是比较高的,而且全新原装的很难买到,绝大部分为二手或翻新的,所以我这里提供国产组装PS3的驱动安装解决方案。

9.1 安装与设置

  • 切换到root用户,并转到root用户的home目录下
sudo su -
  • 安装必备组件
apt-get update
apt-get install -y git pyqt4-dev-tools qt4-designer libjack-dev
apt-get install -y libusb-dev libdbus-1-dev libglib2.0-dev libudev-dev libical-dev libreadline-dev
  • 获取 bluez repo 补丁
cd /opt
git clone https://github.com/luetzel/bluez && cd bluez
  • 编译安装
./configure --prefix=/usr --mandir=/usr/share/man --sysconfdir=/etc --localstatedir=/var --enable-sixaxis
make -j3
make install
  • 重启蓝牙
hciconfig
systemctl daemon-reload
systemctl start bluetooth
service bluetooth status

返回下列信息:

  • bluetooth.service - Bluetooth service

    Loaded: loaded (/lib/systemd/system/bluetooth.service; enabled; vendor preset: enabled)
    Active: active (running) since Fri 2019-09-06 17:38:40 BST; 7h ago
    Docs: man:bluetoothd(8)
    Main PID: 388 (bluetoothd)
    Status: “Running”
    CGroup: /system.slice/bluetooth.service
    └─388 /usr/lib/bluetooth/bluetoothd

9月 06 17:38:40 raspberrypi systemd[1]: Starting Bluetooth service…
9月 06 17:38:40 raspberrypi bluetoothd[388]: Bluetooth daemon 5.43
9月 06 17:38:40 raspberrypi systemd[1]: Started Bluetooth service.
9月 06 17:38:40 raspberrypi bluetoothd[388]: Starting SDP server
9月 06 17:38:40 raspberrypi bluetoothd[388]: Bluetooth management interface 1.14 initialized
9月 06 17:38:40 raspberrypi bluetoothd[388]: Failed to obtain handles for “Service Changed” characteristic
9月 06 17:38:40 raspberrypi bluetoothd[388]: Sap driver initialization failed.
9月 06 17:38:40 raspberrypi bluetoothd[388]: sap-server: Operation not permitted (1)
9月 06 17:38:40 raspberrypi bluetoothd[388]: Failed to set privacy: Rejected (0x0b)
lines 1-18/18 (END)
#(按 q 退出)

  • 获取,修补和安装 sixaxis
cd /opt
git clone https://github.com/falkTX/qtsixa
cd /opt/qtsixa/utils
make

这里可以仅要utils目录的内容!!!

  • 用USB线插入PS3
cd /opt/qtsixa/utils/bins
sudo ./sixpair

返回:
Current Bluetooth master: b8:27:eb:8d:59:a3
Setting master bd_addr to b8:27:eb:8d:59:a3

  • 断开PS3的USB连接,树莓派重启
sudo reboot
  • 再用USB线插入PS3
  • 断开PS3的USB连接,按手柄的PS按钮

9.2 操纵杆控制

  • ‘select’ : self.toggle_mode,(切换模式)
  • ‘circle’ : self.toggle_manual_recording,(○:手动录制切换)
  • ‘triangle’ : self.erase_last_N_records,(△:擦除最后N条记录)
  • ‘cross’ : self.emergency_stop,(×:急停)
  • ‘dpad_up’ : self.increase_max_throttle,(↑:增加最大油门)
  • ‘dpad_down’ : self.decrease_max_throttle,(↓:减少最大油门)
  • ‘start’ : self.toggle_constant_throttle,
  • “R1” : self.chaos_monkey_on_right,
  • “L1” : self.chaos_monkey_on_left,
  • ‘left_stick_horz’ : self.set_steering,(左摇杆左右控制角度)
  • ‘right_stick_vert’ : self.set_throttle,(右摇杆前后控制油门)
  • ‘R2’ : AiLauncher is enabled,(实测功能)

10.0 树莓派命令的别名

DonkeyCar的小车操作命令后面还带参数,操作起来输入的字符很多,这在手机上操作起来很不方便,为了便于手机上的操作,我们给DonkeyCar的几个常用命令起个别名,便于记忆和输入。

sudo nano /etc/bash.bashrc

编辑bash.bashrc文件,在文件末尾插入:

alias dkcd='python mycar/manage.py drive'
alias dkcdj='python mycar/manage.py drive --js'
alias dkcmd='python mycar/manage.py drive --model ~/mycar/models/mypilot.h5'

保存并退出,再重启

sudo reboot

别名即可生效。
以后输入:dkcd即可运行手柄操作DonkeyCar小车了,这样方便在手机上操作。

11.0 安卓手机控制

11.1 编辑wpa_supplicant.conf文件

在PC上编辑wpa_supplicant.conf文件,并复制到TF卡的根目录下。

country=CN
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1network={ssid="手机热点名称"psk="连接密码"key_mgmt=WPA-PSKpriority=1
}

11.2 获取IP信息

树莓派连接上手机热点后,在手机上查看树莓派的IP信息。

这个树莓派的IP为:192.168.43.166

11.3 手机安装JuiceSSH

11.4 连接




12.0 场地标准

DonkeyCar树莓派版的实践相关推荐

  1. 实时数仓入门训练营:实时计算 Flink 版 SQL 实践

    简介:<实时数仓入门训练营>由阿里云研究员王峰.阿里云高级产品专家刘一鸣等实时计算 Flink 版和 Hologres 的多名技术/产品一线专家齐上阵,合力搭建此次训练营的课程体系,精心打 ...

  2. 实时计算 Flink 版 最佳实践

    简介: 实时计算 Flink 版 最佳实践目录 金融行业 行业背景 金融是现代经济的核心.我国金融业在市场化改革和对外开放中不断发展,金融总量大幅增长.金融稳定直接关系到国家经济发展的前途和命运,金融 ...

  3. 鸿蒙版开发实践,有点牛逼哦!- 京东APP

    京东APP鸿蒙版开发实践,有点牛逼哦! 程序IT圈 今天 以下文章来源于京东零售技术 ,作者侯伟浩 狄彩林 京东零售技术 京东零售那些事,有品.有调又有料的研发资讯,带你深入了解程序猿的生活和工作. ...

  4. minecraft pythonapl_翻译:树莓派版Minecraft入门大揭秘

    正版我的世界一是要收费,二是游戏性过强,编写Mod门槛高,树莓派版Minecraft免费,且能够很容易的与python交互,是非常好的学习工具,学生对Minecraft有非同一般的热情,结合pytho ...

  5. 如何使用码云高校版批改学生作业? | 码云高校版最佳实践

    作者:陈彦呈.孔雀屏 指导老师:郑贵锋 背景 目前,在许多高校开展的软件工程实践课程中,大多数的学生作业都会通过邮箱.FTP等方式提交到指定的位置,方便教师进行检查.这种方式在处理文字类作业时显得十分 ...

  6. Nxt节点安装指南之RaspberryPi树莓派版

    RaspberryPi是卡片型迷你电脑,可以来运行Nxt客户端来作为节点,方便.省电.以下就讲解其安装过程. 1.准备工作 准备一个树莓派(最好是最新款的RaspberryPi 2,型号为ModelB ...

  7. 【Kali 树莓派版学习笔记】安装系统和VNC服务

    目录 下载固件和烧录系统 第一次开机 SSH连接 换源 设置语言 安装VNC 平台:树莓派3B 版本: Linux kali 5.4.83-Re4son-v7+ #1 SMP Sat May 15 0 ...

  8. [DonkeyCar][树莓派]基础01 - 首次配置 - WIFI

    2022年圣诞节到来啦,疫情把刚刚起来的工作似乎又慢了下来,在冲刺决赛圈的同时,也许开一个新的领域,写一个博客是比较好的方式. 一.前言 拿到树莓派开发板的时候,一般,供应商都会配合烧录的镜像.但是, ...

  9. 如何使用码云高校版布置小组作业? | 码云高校版最佳实践

    作者:张朗淇.陈彦呈 指导老师:郑贵锋 背景 随着程序设计类课程在各大高校如火如荼地开展,如何有效地系统化地管理学生作业,了解学生学习进度成了这类课程任课教师的关注问题. 目前大多数教师都是采用通过F ...

  10. 手写数字识别增强版项目实践规划

    项目人员: 1160300925 王卓 1160300630 范航明 1160300316 张雅舒 1160300920 陈浩楠 项目选择: 项目一,手写数字增强版 Github 仓库地址: http ...

最新文章

  1. Sqlserver2008 FileStream解决图片存储问题
  2. 【转载】数据库范式那些事
  3. 制作空镜像与一个run的共享文件错误解决
  4. 7、使用CallableStatement接口调用存储过程
  5. Query String Parameters、Form Data、Request Payload的区别
  6. 2021-2025年中国电动毛巾散热器行业市场供需与战略研究报告
  7. 【bzoj2338】[HNOI2011]数矩形 计算几何
  8. 不明意义的字符串匹配问题
  9. Delphi 设计模式:《HeadFirst设计模式》Delphi7代码---工厂模式之简单工厂[转]
  10. 悟空学Linux专栏----第3篇
  11. 局域网互访终结贴(转载)
  12. LM317的调压原理与应用
  13. c语言怎么return ok,C语言中的 return与exit
  14. 教资照片上传显示内部服务器错误,教师资格证笔试报名时,网站问题如何解决?...
  15. DB2-------
  16. React ,Redux 教程汇总
  17. linux nginx连接memcache和ngx_http_consistent_hash负载均衡算法
  18. Windows共享上网的详细设置
  19. matlab处理李航《统计学方法》感知机学习算法---原始形式
  20. Fragment在ViewPager中的生命周期

热门文章

  1. 激光打标机不能刻字的处理
  2. 软件工程的极端所有权
  3. SDN免费快速获得积分和直接获取下载码的几个办法,亲测有效区
  4. Ubuntu 命令技巧
  5. vb6源码 ymodem_VB爱好者乐园(VBGood)
  6. 【编程学习】每天进步一点点,编程学习之路:一款Mdict词典制作工具,Mdict Editor Tool v2.0.35 -- 多功能个性化词典制作工具
  7. mt4代理服务器存放文件,mt4如何保存设置好的指标?
  8. 计算机设计大赛学生现场,我校学生在2019计算机设计大赛全国总决赛中再创佳绩...
  9. 常用c语言代码大全,C语言的一些常用代码
  10. 锐捷自动定时启动,开机自动认证校园网 教程