一、前言:

   很荣幸能够参与香橙派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有这个表现我挺满意。

Logo

昇腾万里,让智能无所不及

更多推荐