提速秘诀-用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-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
马上入手一个来试试,谢谢分享
值得入手,提速必备啊{:5_145:} dongkeycar小车标配专业手柄,赞一个{:6_203:}
gray6666 发表于 2021-12-28 21:48
dongkeycar小车标配专业手柄,赞一个
未来RC手柄确实可以成为小车标配,代替PS2手柄。感谢好建议! 实测太香了, 就当 RC 赛车跑漂移的感觉也是非常的赞! 强烈推荐~
真的好丝滑~
请问老师,舵机和电机怎么接?有图吗?
页:
[1]