提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
老板想做个大号的四足,让我先做个小的练练手,两套方案均基于树莓派。
一、方案和确立
大致情况如下方链接所示。前面的动态图是基于ROS-kinectic系统,后面的图是树莓派原生系统。本人树莓派原生系统下尝试失败= =!(我也不知道为啥前腿就是不动 = _ =)。
二、(本人方案)硬件改动
1.树莓派附加组件
硬件与文章所述基本相同。
此外:
后面设置系统的时候树莓派要外接屏幕,要购买一根HDMI线,如果你有树莓派专用的小屏幕,连接即可(注意树莓派4代是microHDMI,和3代的HDMI接口不同),如果你只有普通电脑显示器,那么你需要一个特殊的VGA转microHDMI转接头,或者普通的转接头加上一个HDMI转microHDMI
2.舵机选择
舵机不建议使用MG996R,在高底盘的状态下站不起来(本人定义动态图中状态为低底盘),DS3120MG和SPT5632均是很好的选择,预算足够建议一步到位 (PS:1688平台更便宜O_O)。
3.电子元件部分
和上面链接显示的差不多,一块PCA9685舵机驱动板(树莓派原生系统方案可以用两块),一个降压模块(带USB口的那个),一根USB转Type-C(树莓派3代就是转micro-usb口),杜邦线多买点,舵机线可能不够长。
4.电池
电池这里有点麻烦,这个项目有12个舵机,来回摆动这种行为又极其耗电,2200mA的电池大概能跑4分钟= =,5200mA电池(格氏)长度大约13.4cm,多了那么半厘米,所以要改动下面的几块板,买电池时可以买个报警器,5200mA其实跑不了多长时间,电池容易过放。
我每个零件拉长了4cm,plate文件建议直接改成能和前后板形成封闭空间的形状,如下所示,后面布线里面空间很吃紧(STL文件是不能直接改的,要自己画),电池仓我做成了半开的模式,目前的尺寸能把所有电子元件横着放进去(不改的话树莓派只能竖着放)。
最麻烦还是上下两块盖板,因为有孔,导致不能用软件做拉伸,我最后没盖了= =。
5.螺丝
原方案少了一些螺丝,膝盖部分的舵机需要M4*25的螺丝,共需要8个,此外还有M5的螺母,其他螺丝与原方案相同。外加两个个船型开关。
三、树莓派原生系统方案(未成功)
方案地址:GitLab四足
1.开启树莓派SSH
1.1 查找IP
将树莓派接上网线,下载软件Advanced IPscan,或者在路由器管理界面查找IP,下载putty和VNC进行远程连接。putty内输入IP,出现如下界面后输入用户名pi和密码raspberry。
登陆完成在上图绿色光标处输入sudo raspi-config
,再根据下图开启VNC,I2C,SSH
最后用同样的用户名登陆VNC,界面如下
2. 机器人设置
2.1 脚本安装与硬件设置
此方案作者已经写好脚本,ctrl+T打开cmd输入执行即可,服务器再国外,下载慢,特别python组件,建议用梯子
curl https://gitlab.com/custom_robots/spotmicroai/basic-runtime/-/raw/master/utilities/self_install.sh | bash
下载完成后进行接线,如下图所示:
白色面包板可以省去,根据引脚图进行接线即可,VCC接3.3V,0E接GPIO.0,SDA接SDA.1,SCL接SCL.1。
执行下方命令
i2cdetect -y 1
若连接正确,如下图所示,会显示出PCA驱动板的地址,如果是两块板会多出一个42。(板默认地址0x40,两块板要将另一块地址改成0x42,方法自行百度)。再按照spotmicroai.default代码连接舵机
如果这里你使用一块驱动板,进入spotmicroai.default代码,将下图所示的部分删除,并按舵机连接顺序更改接口
2.2 舵机校对
将舵机驱动板接上电源,建议串联上一个开关。方便第二个方案实施。
执行下方代码
cd ~/spotmicroai/calibration
./calibration.sh
出现如下图所示界面
按提示进行校准,记录显示的PWM值,将spotmicroai.default中的数值改成记录的值,零位如下图
输入下列代码,实现开机启动脚本
cd ~/spotmicroai/systemd/
./enable_spotmicroai_on_boot.sh
重启,将手柄接收器插入树莓派,按start键即可启动机器人。
四、ROS-kinectic方案
方案地址:GitHub四足
1. 系统
此方案选择了一个整合好的Ubiquity系统,无需下载Ubuntu mate再安装ROS。接上显示器,连接wifi,系统操作与ubuntu相同。
"换aliyun源(方法自行百度),再更新源"
sudo apt-get update
sudo apt-get upgrade
"安装i2c-tools"
sudo apt-get install i2c-tools
"安装vim"
sudo apt-get install vim
"安装catkin tools"
sudo apt-get install python-catkin-tools
2. 下载源码和编译源码
2.1 源码下载
"下载源码"
git clone https://gitee.com/MrTTTT/spotMicro.git
"进入 spotMicro / spot_micro_motion_cmd / libs文件夹下载运动学源码"
git clone https://github.com/mike4192/spot_micro_kinematics_cpp.git
2.2 源码编译
将整个spotMicro文件夹重命名为src,新建名为walk的文件夹,并将src拖入,先在此位置打开窗口,运行chmod -R 777 * (src路径)
,基于所有文件可执行权限,再执行下列代码进行编译
catkin build
整个编译过程大约2min,成功后退出到桌面窗口,添加环境变量
gedit ~/.bashrc
下拉到最后最后一行,将source ~/catkin_ws/devel/setup.bash中catkin_ws改为walk
3.SSH连接并执行校准舵机代码
3.1 建立SSH
若上述过程没有出现问题的话,那么恭喜你,整个工程环境设置完成。将原先的网络断开并忘记,新建一个wifi,设置即为默认设置,笔记本连接WiFi(名称为ubiquityrobotXXXX,XXXX是MAC地址),密码为robotseverywhere。之后再笔记本上开启窗口,输入ssh ubuntu@10.42.0.1,密码为ubuntu。
3.2 运行校准舵机代码
开两个窗口,分别运行下面两段代码
cd walk/src/ros-i2cpwmboard/launch/
roslaunch i2cpwm_node.launch
cd walk/servo_move_keyboard/scripts/
rosrun servo_move_keyboard servoMoveKeyboard.py
3.2 校准舵机(可以直接用表格的默认值)
上述代码执行后会出现以下界面,输入oneServo选择舵机(0-11)进行校准
下载下的文件中会有一个电子表格(hip指肩部,lower leg指小腿,upper leg指大腿)
各个关节position1和position2如下图
1.小腿和大腿0°位
2.小腿90°位
3.大腿90°位
4.肩部0°位
5.肩部45°位
将position1,position2,negative max和max值输入表格,观察slope的值,互相差的不能太多。全部调完后将计算出的Calculated Angle at Center PWM的值输入 spotMicro /spot_micro_motion_cmd / config的yaml文件中。启动机器人站立模式后,关节角度可能不对,此时,若和下图差的不多,可以微调yaml文件最后一列的数值;若差的太多,建议直接拆掉相应舵机直接安装到差不多的位置,再微调。
4.启动机器人
开三个窗口,分别运行下面三段代码
cd walk/src/ros-i2cpwmboard/launch/
roslaunch i2cpwm_node.launch
cd walk/src/spot_micro_motion_cmd/launch/
roslaunch spot_micro_motion_cmd spot_micro_motion_cmd.launch
cd walk/src/spot_micro_keyboard_command/scripts/
rosrun spot_micro_keyboard_command spotMicroKeyboardMove.py
最后一个窗口,输入stand起立,输入walk开始原地踏步,按w增大步幅,开始前进。分享下博主的瘸腿 ^ - ^。
5.trot步态
源码中还有另一种步态,下载时输入
git clone -b alternate_gait https://gitee.com/MrTTTT/spotMicro.git
两种步态在代码方面的区别只有一个yaml文件,两个文件无法共存,否则walk在执行spot_micro_motion_cmd时,节点会执行trot的yaml(原因未知),了解ROS的兄弟可以尝试更改yaml文件名,launch文件和CMakeList.txt。下图是空转效果。
此外,trot步态对平衡要求高,建议先布线,最上面空的地方时放树莓派的(博主的树莓派被自己搞坏了 = =),建议使用两个开关,一个控制树莓派电路,一个控制舵机电路