一、前言:
很荣幸能够参与香橙派AIpro的开发板测评,首先我是倾向于嵌入式开发的,对于GPIO的开发方面和ROS操作系统方面更感兴趣一些。
关于我为什么没有做gpio测评,原因挺简单的,因为板子是2月份新出的,现在还没适配wiringpi,因此做这个的意义可能不太大,我想试试这个板子跑ROS怎么样,因为的之前也是有一块香橙派3b,可以完美适配轮趣官方的ros代码,因此我这篇文章想要做这个ROS方面的测评。
二、基础准备:
硬件准备:
香橙派AI PRO:
LD14激光雷达:
轮趣控制板:
远程桌面:
没有远程桌面操作不太方便,因此我这使用的是nomachine进行远程控制,因为我之前的香橙派3B使用VNC无法进行信息交互,就是没办法进行复制和粘贴,nomachine比较友好,连上wifi自动扫描和连接,很容易进行后续操作。
连上wifi后,我使用的是的XFTP工具进行传输nomachine_8.11.3_3_arm64.deb文件,
下载地址:提取码: acvx
然后使用以下命令进行安装远程登录。
sudo dpkg -i nomachine_8.11.3_3_arm64.deb |
开机后每次都会自动启动nomachine,电脑打开nomachine显示如图:
自动登录:
默认账号:HwHiAiUser密码:Mind@123
官方系统默认的不进行自动登录,不登陆没办法进行wifi连接,每次开机都需要连接屏幕连接输入密码,因此无法使用nomachine,这个点我挺难受,习惯了香橙派3B的开机自动登录,我想要开发ros机器人和一些gpio开发必不可少的就是自动登录。
编辑gdm3配置文件:
sudo vim /etc/gdm3/custom.conf #去掉这两行注释 AutomaticLoginEnable=True AutomaticLogin=user1 sudo vim /etc/lightdm/lightdm.conf #加入如下内容 [SeatDefaults] autologin-user=HwHiAiUser |
ROS安装:
到ubuntu20.04之后,ros1不再支持新版的ubuntu,而香橙派aipro的系统目前我只看到了ubuntu22.04,我计划直接使用鱼香ros进行安装的ROS2但是很多功能包不能用,同时我在官方系统上直接用鱼香ros一键安装不能够安装ROS2 ,因为自己对于ROS1的环境配置比ROS2更加熟悉一些。ros1的优势还是有的。
鱼香ros无法给AIpro进行一键安装ros2,但是对于docker可以直接安装。
wget http://fishros.com/install -O fishros && . fishros |
输入11进行安装docker ,建议选择noetic
但是鱼香ros的docker ros不太适合本次测试,因为一键安装的usb设备和网络不连通,运行鱼香ros后会得到一个容器和一个镜像,我们自己拉取镜像。当然也有人说这样容器直接访问宿主机设备不安全。
拉取指令:
sudo docker run -dit \ --name=noetic1 \ --privileged \ -v /dev:/dev \ -v /home/HwHiAiUser:/home/HwHiAiUser \ -v /tmp/.X11-unix:/tmp/.X11-unix \ -e DISPLAY=unix$DISPLAY \ -w /home/HwHiAiUser \ --net=host \ ros:noetic |
这样创建的docker容器直接映射了宿主机的dev和host,为我们后续开发省去很多麻烦
在/home/HwHiAiUser/.fishros/bin目录下我们可以看到:之前用鱼香ros一键创建的容器的名字,打开就复制内容,用xftp新建一个文件拉取容器的名字的文件:我的是noetic1,并输入以下内容,容器名称不同则noetic1修改成对应的名称。
xhost +local: >> /dev/null echo "请输入指令控制noetic1: 重启(r) 进入(e) 启动(s) 关闭(c) 删除(d) 测试(t):" read choose case $choose in s) docker start noetic1;; r) docker restart noetic1;; e) docker exec -it noetic1 /bin/bash;; c) docker stop noetic1;; d) docker stop noetic1 && docker rm noetic1 && sudo rm -rf /home/HwHiAiUser/.fishros/bin/noetic1;; t) docker exec -it noetic1 /bin/bash -c "source /ros_entrypoint.sh && roscore";; esac newgrp docker
|
创建后的效果图:
让我们看一下香橙派 AI pro创建的docker ros:
完美!
完成以上步骤后,进入dokcer容器,直接使用我们拉取镜像时候的名字,启动并进入容器,如上图。
sudo apt-get update sudo apt install wegt #拉取的镜像没有这些基础配置 sudo apt install nano wget http://fishros.com/install -O fishros && . fishros#继续使用鱼香ros
#运行后按3安装 rosdepc #安装完成后 #运行 rosdepc update
|
到这里我们的ros环境基本就已经完成了
三、ros功能包安装和编译:
激光雷达建图测试:
sudo apt-get install ros-noetic-hector-slam # 下载hector的slam包 mkdir catkin_ws cd catkin_ws mkdir src cd src git clone https://gitee.com/zhangyigeng/ldlidar_sl_ros.git # 克隆工程项目 #编译功能包 catkin_make # 在工作空间下进行编译 source ./devel/setup.bash roslaunch ldlidar_sl_ros hector_slam.launch |
解决在docker中无法打开RVIZ:
每次你启动容器并登录时,DISPLAY 环境变量将被自动设置为 :0.0,以便你的 GUI 应用程序可以正确连接到主机的 X11 显示服务器。
echo "export DISPLAY=:0.0" >> ~/.bashrc |
效果图:
可以看到我们可以正常在aipro这个板子上正常运行rviz,利用LD14进行建图
我原本以为这个板子的主频太低无法正常运行这些东西,实际效果还是出乎我的想象了,运行的还是很流畅的。
创建工作空间:
mkdir -p /home/HwHiAiUser/Desktop/wheeltec_robot |
移植轮趣功能包:
noetic源码:提取码1234
用xftp移动wheeltec功能包到板子上:
cd /home/HwHiAiUser/Desktop/wheeltec_robot unzip wheeltec_robot.zip |
XFTP打开/home/HwHiAiUser/Desktop/wheeltec_robot/src/turn_on_wheeltec_robot/launch
修改wheeltec_lidar.launch的LS_16为ld_14,我们使用的是ld_14。
我已经进入到工作空间:运行以下命令解决百分70的依赖没有安装的问题:
rosdep install --from-paths src --ignore-src -r -y |
进入到/home/HwHiAiUser/Desktop/wheeltec_robot/src/turn_on_wheeltec_robot/scripts
修改wheeltec_udev.sh:
可以看到我们在香橙派AIPRO上一样可以很容易完成设备映射,鱼香ros直接映射的:
多机通信:
ip addr查看ip地址 #香橙派: nano ~/.bashrc #添加以下代码 export ROS_MASTER_URI=http://香橙派IP:11311 export ROS_HOSTNAME=香橙派IP
#虚拟机 export ROS_MASTER_URI=http://香橙派IP:11311 export ROS_HOSTNAME=虚拟机的IP
|
遇到的问题:
编译遇到:
error: libudev.h: No such file or directory 11 | #include <libudev.h>
catkin_make -DCATKIN_WHITELIST_PACKAGES=lslidar_msgs catkin_make -DCATKIN_WHITELIST_PACKAGES=lslidar_driver
|
sudo apt install ros-noetic-joint-state-publisher-gui |
sudo ln -s /usr/include/eigen3/Eigen /usr/include/Eigen sudo ln -s /usr/include/eigen3/unsupported /usr/include/unsupported |
同时我们运行导航代码遇到以下错误:
process[amcl-13]: started with pid [200] ERROR: cannot launch node of type [turn_on_wheeltec_robot/send_mark.py]: Cannot locate node of type [send_mark.py] in package [turn_on_wheeltec_robot]. Make sure file exists in package path and permission is set to executable (chmod +x) [ INFO] [1716725317.694761427]: Initializing Odom sensor [ WARN] [1716725317.950372659]: Request for map failed; trying again... [ERROR] [1716725318.013245847]: failed to open image file "/home/wheeltec/wheeltec_robot/src/turn_on_wheeltec_robot/map/WHEELTEC.pgm": Couldn't open /home/wheeltec/wheeltec_robot/src/turn_on_wheeltec_robot/map/WHEELTEC.pgm [map_server_for_test-12] process has died [pid 188, exit code 255, cmd /home/HwHiAiUser/Desktop/cat_wk/devel/lib/map_server/map_server /home/HwHiAiUser/Desktop/cat_wk/src/turn_on_wheeltec_robot/map/WHEELTEC.yaml __name:=map_server_for_test __log:=/root/.ros/log/ad828f68-1b58-11ef-b8ea-7c8899ff7a16/map_server_for_test-12.log]. log file: /root/.ros/log/ad828f68-1b58-11ef-b8ea-7c8899ff7a16/map_server_for_test-12*.log
|
解决方法:
cd /home/HwHiAiUser/Desktop/cat_wk/src/turn_on_wheeltec_robot/map nano WHEELTEC.yaml #修改里面的路径为自己的工作空间 cd /home/HwHiAiUser/Desktop/cat_wk/src/turn_on_wheeltec_robot/scripts chmod +x send_mark.py #给权限 #最后再catkin_makecatkin_make编译一遍 |
到这里你发现还是会错误:
我们接着打开send_mark.py修改成python3:
成果:
到这里我们就快完成了:
我的板子是8gb的,因此我没有提前增加SWAP内存,这点好评,还有就是对比我的香橙派3B效果好很多,编译速度居然比3b快上不少,我以为1ghz的主频根本带不动,实际效果居然出乎我的意料。
很快完成了编译:
成功运行初始化节点:
查看话题正常:
可以看到imu数据正常:
成功运行导航节点:
多机通信:虚拟机连接香橙派AIpro建图效果:
好啦,ROS小车的基本功能都可以运行了,ROS测试到此结束。
四、总结:
这个板子还是不错的,能满足基本AI和ROS需求,毕竟有着8T的算力,比rk3588有着更强的算力,本次测试ros的过程中,发现除了环境配置需要花费多一些时间以外,实际效果比我之前使用的香橙派3B要好得多,如果后续有继续开发AI方面的需要,可以继续发展。本来也是面向AI的板子,我拿来跑ROS有这个表现我挺满意。
更多推荐
所有评论(0)