X96max+是一种机顶盒,但是刷机基于Ubuntu22的armbian系统,服务器版本后可以利用内存来进行开发。以下是刷好的。

1.系统登入

1.1登陆root用户

                           

        我们可以看到虽然出现了tty1(虚拟终端1号),但是login并没有出现,这种情况下,直接“ALT”+“F2”切换到2号终端就可以解决。

1.2添加普通用户

adduser xxx #用户名
usermod -aG sudo xxx

进入普通用户:

su - xxx

1.3联网并检查 IP

nmtui

调出图形化管理,激活相应的WiFi

                

1.4更新和修改配置

sudo apt update && sudo apt upgrade -y

sudo armbian-config

1.5 安装任务管理器

sudo apt update && sudo apt install htop -y
htop
//启动

                

2.系统更新与必要下载

2.1换源

2.1.1一般换源

(1)备份

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo cp /etc/apt/sources.list.d/armbian.list /etc/apt/sources.list.d/armbian.list.bak

(2)更换内容

sudo nano /etc/apt/sources.list
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-software
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-software

deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-software
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-software

deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-backports main contrib non-free non-free-software
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-backports main contrib non-free non-free-software

deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free non-free-software
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free non-free-software
sudo nano /etc/apt/sources.list.d/armbian.list
deb [signed-by=/usr/share/keyrings/armbian.gpg] https://mirrors.tuna.tsinghua.edu.cn/armbian bookworm main bookworm-utils bookworm-desktop

但是在刷机的sever简略系统上,

        通过ls命令发现 ,以前的软件源写在以 .list 结尾的文件里,而现在的 Armbian把它们写在了.sources 结尾的文件里,而且都在sources.list.d里,不存在sources.list了

2.1.2 .sources 结尾版

        那么修改配置方式也要修改:

sudo nano /etc/apt/sources.list.d/debian.sources

把里面URIs: http://deb.debian.org/debian换成

URIs: https://mirrors.tuna.tsinghua.edu.cn/debian/

sudo nano /etc/apt/sources.list.d/armbian.sources

URIs: http://apt.armbian.com换成

URIs: https://mirrors.tuna.tsinghua.edu.cn/armbian/

2.2更新

        一般而言更新是

sudo apt update && sudo apt upgrade -y

但是在这里因为刷机补丁的原因会报错:

对于这个,要是使用官方源去升级内核,那么网卡也能不起作用了,因此冻结固件包:

sudo mkdir -p /lib/firmware/qcom/sm8550/ayn/odin2mini/

sudo apt-mark hold armbian-firmware
sudo apt-mark hold linux-dtb-amlogic linux-image-amlogic

2.3 认识docker

        armbian 12 支持的ros2 iron时间太短,使用的不广泛;因此我们使用docker容器来安装ros2 humble。

2.3.1 下载docker与配置加速

        docker类似于低配版虚拟机,先下载docker:

sudo apt install docker.io -y #下载docker
sudo systemctl enable --now docker #设置为开机自启动

再加载国内加速器:

sudo nano /etc/docker/daemon.json
{
  "registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://docker.nju.edu.cn",
    "https://mirror.baidubce.com"
  ]
}

2.3.2 下载镜像与创建容器

再下载ros2 humble的镜像文件(类似于虚拟机的那种系统镜像)

sudo docker pull ros:humble-perception #没有选择桌面版的完全体,perception是专门为机器人感知和控制准备的

创建一个名为robot_brain的docker容器,并且加载刚刚下载的镜像。(记得插USB摄像头)

sudo docker run -it \
  --name robot_brain \
  --network host \
  --device=/dev/video0:/dev/video0 \    #这是usb摄像头的设备节点名
  --privileged \
  ros:humble-perception \
  /bin/bash

当然如果你运行     ls /dev/video*     却发现有多个设备节点(包含了虚拟节点),也可以先把所有节点都包含,之后再排除。

sudo docker run -it \
  --name robot_brain \
  --network host \
  --device=/dev/video0 \
  --device=/dev/video1 \
  --device=/dev/video2 \
  --privileged \
  ros:humble-perception \
  /bin/bash

创建完毕后我们可以看到终端变成:

2.3.3验证

(1)容器验证

那么键入       cat /etc/os-release        来验证是否成功:

可以看到,我们现在是ubuntu22.04.

(2)USB设备节点名称验证
python3 -c "import cv2; print('\n--- 摄像头通道扫描 ---'); [print(f'通道 video{i} 状态: ', cv2.VideoCapture(i).isOpened()) for i in range(3)]"

那个为true哪个就是真正的节点。我这里是video1

3.docker基础操作

3.1文件操作

        一般情况下,docker容器和本地是相互隔离的,文件系统并不互通,但是可以把docker里的文件通过命令行复制到本地里。

        下面是一个图片的复制,相对而言多了 docker 和容器名:

sudo docker cp robot_brain:/root/test_photo.jpg ./

或者把本地的放到容器里

# 把本地的整个 rpi-robot 文件夹 拷贝到 容器的 /root/ 目录下
sudo docker cp /home/clt/rpi-robot robot_brain:/root/

3.2基本docker操作

3.2.1查看容器

docker ps  #正在运行的容器
docker ps -a #所有容器

3.2.2开关容器

docker start robot_brain   #开
docker exec -it robot_brain /bin/bash  #进入容器
exit #退出容器
docker stop robot_brain #关

3.2.3删除与重命名容器

# 在宿主机执行,把 robot_brain 保存为名为 my_robot_v1 的新镜像
sudo docker commit robot_brain my_robot_v1
sudo docker rm robot_brain  #删除旧容器

3.3 挂载的容器

        就是让一个容器与本地有公共的文件夹协助开发,但是这一步要在设置容器的第一步就完成,错过了就只能删了重来了,那先把原来的删了。

sudo docker rm robot_brain  #删除旧容器
sudo docker run -it \
  --name ros_car \
  --network host \
  --device=/dev/video0 \
  --device=/dev/video1 \
  --device=/dev/video2 \
  --privileged \
  -v /home/clt/ros_car:/root/ros_car \
  ros:humble-perception \
  /bin/bash

这样进入的是“/”根目录,我们的工作空间在/root/ros_car

然后再进一步安装导航与视觉的包

# 1. 更新源
apt update

# 2. 安装导航和建图工具
apt install -y ros-humble-navigation2 ros-humble-nav2-bringup ros-humble-slam-toolbox build-essential python3-pip

# 3. 安装轻量级视觉推理引擎和 OpenCV
pip3 install onnxruntime opencv-python-headless -i https://pypi.tuna.tsinghua.edu.cn/simple

4.配置Vscode开发

        打开pc端vscode,安装扩展Remote - SSH;点击左下角的蓝色远程连接                                                   

选择连接到主机,添加新的SSH主机,输入 ssh 用户名@IP

C:\Users\你的名字\.ssh\config)保存;其余按要求来。

更多推荐