【构建基于树莓派cm4的机器人控制系统的运行环境】

概述:以前的机器人控制系统使用的是X86硬件平台,x86平台的运算性能高,但是成本也较高。近些年arm平台的应用越来越广泛,而且其运算性能与x86的差距越来越小。以cm4对比J1900cpu,进行机器人控制器常用算法效率对比测试.cm4平台运算时间约为1900平台的2倍。对于SCARA\六轴机器人等常见设备的控制,CM4平台完全可以满足他们的要求。Cm4平台的价格优势非常明显,能够减少约一般的硬件成本。

测试硬件使用codepi基于树莓派CM4模块。

首先根据codepi说明书,安装好厂商提供的原始镜像。
1安装依赖库:
1)Qt安装:
使用linaro7.5编译工具
参考https://www.jianshu.com/p/0b86b42eed71

./configure -release -opengl es2 -device linux-rasp-pi4-v3d-g++ -device-option CROSS_COMPILE=/opt/linaro7.5/bin/arm-linux-gnueabihf- -sysroot /opt/raspi/sysroot -opensource -confirm-license -reduce-exports -make libs -prefix /usr/local/qt5pi -extprefix /opt/raspi/qt5pi -hostprefix /opt/raspi/qt5pi-host -v

经验:
1)树莓派上面安装 sudo apt get install libgles2mesadev libgbmdev 不成功。缺少该库会导致编译qt时,qmake不成功。
在树莓派上面 apt-get qt时,默认安装的是5.11.3 ,就不需要手动安装 libgles2 libgbmdev了。但是安装qtcreator不成功。

2)apt-cache search qt5apt-cache show qt5-default
sudo apt-get install qt5-default

在x86主机上面完成交叉编译。
2)Opencv
参考 https://blog.csdn.net/ett_qin/article/details/88116899

1) 在树莓派上面编译opencv(cv2.cpp 需要修改代码添加(char *) 和python数据转换相关。),然后将库拷贝到ubuntu,qtcreator编译程序时,由于两个平台的编译器不一样,会导致一个报错。所以必须在ubuntu上面进行交叉编译。
2)参考进行交叉编译 cmake-gui配置,不需要依赖树莓派任何路径。需要屏蔽protocol cuda,否则编译报错。
cmake-catchlist 需要配置一个参数,否则编译报错。
3)编译完成的库,需要拷贝到/lib路径下面,否则找不到库,声明库路径也不行。放在可执行文件的上2级目录lib下面。

3)Eigen3
apt-get install eigen3-dev
树莓派环境安装ccmake 用于预编译kdl
apt-get install cmake-curses-gui

4)Libmodbus 3.0.8
参考https://libmodbus.org/documentation/
在树莓派环境编译modbus 3.0.8

5)KDL
树莓派环境安装ccmake 用于预编译kdl
apt-get install cmake-curses-gui
在树莓派环境编译kdl

2编译更换RT内核
下载带RT补丁的内核https://github.com/kdoren/linux
在X86上面编译:

交叉编译:https://blog.csdn.net/u014695839/article/details/83720145
RT树莓派内核源码:https://github.com/kdoren/linux

CM4修改:
make ARCH=arm CROSS_COMPILE=…/tools-master/arm-bcm2708/arm-linux-gnueabihf/bin/arm-linux-gnueabihf- bcm2711_defconfig

KERNEL=kernel7l
make ARCH=arm CROSS_COMPILE=…/tools-master/arm-bcm2708/arm-linux-gnueabihf/bin/arm-linux-gnueabihf- menuconfig 需要改为RT内核选项。
make ARCH=arm CROSS_COMPILE=…/tools-master/arm-bcm2708/arm-linux-gnueabihf/bin/arm-linux-gnueabihf- -j4 deb-pkg生成DEB安装包

拷贝deb包到树莓派:
apt install ./linux-image-5.10.73-rt54-v7l+_5.10.73-1_armhf.deb # 32-bit kernel
KERN=5.10.73-rt54-v7l+ # 32-bit kernel

mkdir -p /boot/ K E R N / o v e r l a y s / c p − d / u s r / l i b / l i n u x − i m a g e − KERN/overlays/ cp -d /usr/lib/linux-image- KERN/overlays/cpd/usr/lib/linuximageKERN/overlays/* /boot/ K E R N / o v e r l a y s / c p − d r / u s r / l i b / l i n u x − i m a g e − KERN/overlays/ cp -dr /usr/lib/linux-image- KERN/overlays/cpdr/usr/lib/linuximageKERN/* /boot/ K E R N / [ [ − d / u s r / l i b / l i n u x − i m a g e − KERN/ [[ -d /usr/lib/linux-image- KERN/[[d/usr/lib/linuximageKERN/broadcom ]] && cp -d /usr/lib/linux-image- K E R N / b r o a d c o m / ∗ / b o o t / KERN/broadcom/* /boot/ KERN/broadcom//boot/KERN/
touch /boot/ K E R N / o v e r l a y s / R E A D M E m v / b o o t / v m l i n u z − KERN/overlays/README mv /boot/vmlinuz- KERN/overlays/READMEmv/boot/vmlinuzKERN /boot/ K E R N / m v / b o o t / i n i t r d . i m g − KERN/ mv /boot/initrd.img- KERN/mv/boot/initrd.imgKERN /boot/ K E R N / m v / b o o t / S y s t e m . m a p − KERN/ mv /boot/System.map- KERN/mv/boot/System.mapKERN /boot/ K E R N / c p / b o o t / c o n f i g − KERN/ cp /boot/config- KERN/cp/boot/configKERN /boot/$KERN/

修改文件/boot/config.txt,在末尾替换追加。
cat >> /boot/config.txt << EOF

[all]
kernel=vmlinuz-$KERN

initramfs initrd.img-$KERN

os_prefix= K E R N / o v e r l a y p r e f i x = o v e r l a y s / KERN/ overlay_prefix=overlays/ KERN/overlayprefix=overlays/(if [[ “$KERN” =~ ‘v8’ ]]; then echo -e “\narm_64bit=1”; fi)
EOF

3编译IGH

树莓派环境编译IGH时,make modules会报错。
在x86环境下交叉编译
./configure --prefix=/agvwork/igh/ethercat-stable-1.5/etherlab --with-linux-dir=/opt/linux-headers-5.4.75-rt41-v7l --enable-8139too=no --enable-generic=yes make ARCH=arm CROSS_COMPILE=/opt/raspberry/tools-master/arm-bcm2708/arm-linux-gnueabihf/bin/arm-linux-gnueabihf- -j4

4常用命令
1)查看网卡速度
iftop

2)查看网络配置和设置网卡模式
mii-tool
https://blog.csdn.net/chinalinux … 7Edefault-1.baidujs

3)关闭codesys
SSH连上或用ALT+F4关闭界面,然后编辑/etc/xdg/lxsession/LXDE-pi/autostart,把chromium那行删掉就可以
sudo apt-get --purge remove codesyscontrol*

4)扩大系统UDP缓冲区大小,解决resend问题。
sysctl net.core.rmem_max
su
echo 16777216 > /proc/sys/net/core/rmem_max
sudo nano /etc/rc.local 添加参数配置 echo 16777216 > /proc/sys/net/core/rmem_max

5)CPU频率:
vcgencmd measure_clock arm
6)温度:
vcgencmd measure_temp

7)1000m网口兼容100m网线

sudo ethtool –s eth0 speed 100 duplex full autoneg off
编辑/etc/rc.local,在exit0之前插入这个命令就会自动生效

8)开机自动启动程序
创建文件加autostart

mkdir ~/.config/autostart
1
sudo vim ~/.config/autostart/myprogram.desktop
1
然后输入下面命令

[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=myprogram
Exec=lxterminal -e bash -c 'python3 /home/pi/Desktop/test.py; S H E L L ′ T e r m i n a l = t r u e 1     其 中 p y t h o n 3 / h o m e / p i / D e s k t o p / t e s t . p y 为 需 要 执 行 的 代 码 , 使 用 时 替 换 成 自 己 需 要 的 执 行 的 命 令 即 可 , 注 意 不 要 删 掉 前 面 的 ′ 和 后 面 的 ; , SHELL' Terminal=true 1   其中python3 /home/pi/Desktop/test.py为需要执行的代码,使用时替换成自己需要的执行的命令即可,注意不要删掉前面的'和后面的;, SHELLTerminal=true1python3/home/pi/Desktop/test.py使;SHELL是为了保证打开的终端会一直显示,如果删掉的话执行该句代码后就会kill掉这个进程,等于程序没有执行。

最后设置权限:

sudo chmod a+r ~/.config/autostart/myprogram.desktop
5 系统备份和恢复
备份:外部接U盘,使用backup.sh脚本生成img文件到u盘

恢复:先插micro USB再插供电,在电脑上运行rpiboot后用win32diskimager烧写
github.com/feecat/codepi/blob/main/docs/3-PowerUP_ZH-CN.md

微信:18820959358

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值