昊男Henry 发表于 2021-12-26 20:54:13

提速秘诀-用RC遥控器驾驶驴车

本帖最后由 昊男Henry 于 2022-3-10 22:58 编辑

最近大野牛老师反馈用PS2手柄遥控不顺手,所以和他一起摸索,调通了RC遥控器控制。没想到,除了小车遥控手感更加细腻,自动驾驶的效果也有明显提升。从小车跑圈成绩看,原来跑三圈需要33'37'',而换成RC遥控后只要19'69'',时间缩短了40.9%,简直是开挂神器有没有。
https://www.bilibili.com/video/BV1tL411L7Px?share_source=copy_web

秉着“好东西都要分享”的老驴精神,我翻译并优化了官方教程:https://docs.donkeycar.com/parts/rc/,欢迎大家参考!

-----------------------------------------------------------------------------------------------------------------------

RC控制程序
(这仅适用于RaspberryPI。Jetson Nano的GPIO引脚不支持该功能)。

你可以用RC控制器来驾驶驴车!秘诀在于,多亏了酷炫的Pigpio库,RaspberryPI引脚可以读取并生成读取RC接收器和驱动伺服和电机控制器所需的RC信号。


要做到这一点,你需要连接一些跳线电缆从你的RC接收器到RPI GPIO引脚,然后为你的转向伺服和电机控制器做同样的事情(它有点麻烦,但工作很好)


注意:RC控件目前仅在Dev分支中受支持。要使用它,需要执行一下操作,按照相关程序:      


[*]在projects目录下,重命名“donkeycar”文件夹为“donkeycar-bak”
[*]从gitee下载donkeycar最新镜像, 并切换到dev分支
git clone https://gitee.com/yoyojacky/donkeycar
cd donkeycar
git checkout dev

[*]重新安装donkeycar并生成新的rccar目录
pip install -e .
donkey createcar ../rccar

-----------------------------------------------------------------------------------------------------------------------

硬件设置
您可以将GPIO引脚用于RC输入。在RC输入的情况下,RC控制器替换蓝牙操纵杆。
连接RC需按照以下布线指南来做。请记住,您只需将一根接地和V+电缆连接到RC接收器(在任何通道上),而不是每个通道都连接一根。
还请注意,RC接收器应连接到3.3V引脚。


警告:RC接收器PWM信号是由接收器输入电压产生的,因此将RC接收器连接到电调ESC的5V甚至6V将会烧毁树莓派!






下面是RC接收器接线的样子




-----------------------------------------------------------------------------------------------------------------------

软件设置
首先,在命令行中输入以下命令,将PIGPIO守护进程设置为始终在启动时运行:
sudo systemctl enable pigpiod & sudo systemctl start pigpiod
接下来,在mycar 目录中,编辑myconfig.py文件,如下所示:
[*]对于RC输入,在myconfig.py文件中选择“pigpio_rc”作为控制器类型。
[*]取消对该行的注释(删除前导#),并按如下方式进行编辑:
CONTROLLER_TYPE = 'pigpio_rc'
最后,将以下配置加入myconfig.py中实现更多功能,例如反转输出方向或连接的端号:#PIGPIO RC control
USE_RC = True
STEERING_RC_GPIO = 26
THROTTLE_RC_GPIO = 20
DATA_WIPER_RC_GPIO = 19
PIGPIO_STEERING_MID = 1500         # Adjust this value if your car cannot run in a straight line
PIGPIO_MAX_FORWARD = 2000          # Max throttle to go fowrward. The bigger the faster
PIGPIO_STOPPED_PWM = 1500
PIGPIO_MAX_REVERSE = 900          # Max throttle to go reverse. The smaller the faster
PIGPIO_SHOW_STEERING_VALUE = False
PIGPIO_INVERT = False
PIGPIO_JITTER = 0.025   # threshold below which no signal is reported

注意:如果myconfig.py中这行代码请用“#”注释掉,默认不启用手柄:
#USE_JOYSTICK_AS_DEFAULT = True

-----------------------------------------------------------------------------------------------------------------------

使用流程
第一步,在树莓派上连接好RC手柄的接收机,并打开RC手柄电源。
第二步,通过以下命令启动小车,注意添加“--js”后缀启用RC手柄控制:
python manage.py drive --js
第三步,donkeycar程序启动后,测试RC手柄的转轮是否能控制方向,测试RC手柄的扳机能否控制油门。


如果方向或油门反了可以在手柄上通过“方向开关”实现换向。


(注意:第一次使用需要配对手柄和接收机。即:先关闭手柄电源,长按接收机天线一侧的小按钮直至指示灯闪烁,然后再打开手柄电源,指示灯常亮后说明配对成功)


第四步,通过RC手柄的两个“中位旋钮”,分别校准油门中位和方向中位。做到扳机在中间时,车轮保持不动且没有自动拍照。做到转轮在中间时,小车能走直线。


第五步,遥控小车在赛道上开,采集5000组左右的驾驶数据。建议:通过网页端的摄像头实时画面,判断周围环境光是否过亮或过暗并做出调整。
如果油门太大或转向角度不足,都可以通过RC手柄的两个“比例旋钮”,分别调整油门和转向的最大范围。


(此处省略自动驾驶模型的训练过程)

第六步,小车自动驾驶的模型训练生成后,通过以下命令启动小车(mypilot.h5模型文件的路径和名称,请按实际情况替换):

python manage.py drive --model ./models/mypilot.h5
第七步,从同一个网络下,登录驴车IP地址的8887端口,通过“Mode & Pilot”选项切换驾驶模式。

User:用户手动驾驶;
Local Pilot:完全自动驾驶,小车同时控制方向和速度;
Local Angle:半自动驾驶,小车只控制方向,速度需要用户从网页控制。

(注意:此时RC手柄是无法使用)



至此,小车应该已经可以比较顺畅地自动跑起来。

有任何问题,都欢迎跟帖留言。祝各位驴友玩车愉快!






昊男Henry 发表于 2021-12-27 00:33:28

本帖最后由 昊男Henry 于 2021-12-28 23:07 编辑

为确保大家的使用体验,已亲测这款RC手柄。
六通道,带陀螺仪,可玩性和性价比都很高,推荐!
采购链接: https://m.tb.cn/h.fjP6f2E?sm=616f35


另外,考虑到部分驴友可能没有杜邦线和端子头,以下采购链接欢迎参考:

[*]杜邦线 母对母 20CM 不带壳 1排 【2.71元】https://m.tb.cn/h.fQtR87e?sm=52f618
[*]2*3P(双排)(100个) 【5.74元】https://m.tb.cn/h.fjuQhxC?sm=f1bd02


憨憨的少年 发表于 2021-12-27 11:41:13

马上入手一个来试试,谢谢分享

昊男Henry 发表于 2021-12-27 23:29:45

憨憨的少年 发表于 2021-12-27 11:41
马上入手一个来试试,谢谢分享

值得入手,提速必备啊{:5_145:}

gray6666 发表于 2021-12-28 21:48:47

dongkeycar小车标配专业手柄,赞一个{:6_203:}

昊男Henry 发表于 2021-12-28 23:00:13

gray6666 发表于 2021-12-28 21:48
dongkeycar小车标配专业手柄,赞一个

未来RC手柄确实可以成为小车标配,代替PS2手柄。感谢好建议!

yoyojacky 发表于 2022-2-6 23:14:26

实测太香了, 就当 RC 赛车跑漂移的感觉也是非常的赞! 强烈推荐~
真的好丝滑~

niuye 发表于 2024-11-25 20:54:48

请问老师,舵机和电机怎么接?有图吗?
页: [1]
查看完整版本: 提速秘诀-用RC遥控器驾驶驴车