0.系统镜像文件的烧录

下载树莓派官方镜像烧录软件

蓝奏云 https://wwz.lanzoue.com/iKmpo1vmapfa 密码:b9zi

安装的是 Ubuntu22.04.4 64bit LTS 版本

TF卡插读卡器里


1.初见Ubuntu22.04.4 LTS – 配置远程连接(同一)

如何在 Windows笔记本 上远程控制 Ubuntu22.04.4 LTS 树莓派(同一局域网下):

1. 受控端(树莓派4B)

1.Ubuntu初始化引导(未作记录)

2.找到设置 – Sharing(共享) ,配置一下

找到设置

配置WIFI(注意控制端和被控端要在同一局域网下)

3.配置部分防火墙:

1
2
sudo ufw allow 5900/tcp
sudo ufw allow 3389/tcp

配置部分防火墙

4.查询本机在此局域网内的的IP:

1
ip a

查询本机在此局域网内的的IP

查询到ip地址

2.主控端(Windows)

1.找到Windows内置应用 – 远程桌面连接

进来了


4.18 opencv的安装、调用USB摄像头

  • Ubuntu 内置 Python3
1
2
sudo apt update
# 更新软件包列表,确保系统中的软件包列表是最新的

1
2
3
sudo apt install libopencv-dev python3-opencv
# libopencv-dev: 这是 OpenCV 的开发库,包含了编译和开发 OpenCV 应用程序所需的头文件和静态库文件。
# python3-opencv: 这是用于 Python3 的 OpenCV 包,允许在 Python 中使用 OpenCV 库进行图像处理和计算机视觉任务。

1
2
python3 -c "import cv2; print(cv2.__version__)"
# 在 Python3 中检查安装的 OpenCV 版本。它会导入 cv2 模块并打印出当前安装的 OpenCV 版本号。

桌面新建文件夹,进入其目录

1
2
touch 1.py
# 在当前目录下创建名为"1”的 python文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import cv2

def main():
# 打开USB摄像头
cap = cv2.VideoCapture(0)

# 检查摄像头是否成功打开
if not cap.isOpened():
print("无法打开摄像头")
return

while True:
# 从摄像头中读取一帧视频
ret, frame = cap.read()

# 检查视频帧是否成功读取
if not ret:
print("无法获取视频帧")
break

# 在窗口中显示视频帧
cv2.imshow('Video Stream', frame)

# 检测按下 'q' 键退出循环
if cv2.waitKey(1) & 0xFF == ord('q'):
break

# 释放摄像头资源
cap.release()

# 关闭所有窗口
cv2.destroyAllWindows()

if __name__ == "__main__":
main()

1
2
`python3 1.py`
# 使用 python3 运行当前文件夹下的 1.py

1
2
^C # 即按键"Ctrl+C"
# 停止运行打开的程序

ying.树莓派硬件相关

1.风扇安装位置

40Pin树莓派GPIO引脚图


Ubuntu22.04+usi 配置摄像头

1.检查gpu_mem,start_x是否如以下配置(其实不需要改,默认就已打开,只需要检查确认下)

gpu_mem=128

start_x=1

将camera_auto_detect注释掉

1
#camera_auto_detect=1

2.安装raspi-config的依赖组件

1
sudo apt-get install triggerhappy lua5.1 alsa-utils

3.获取raspi-config,也可以去链接里自己下最新的,或者用我写好的命令

1
Wget http://archive.raspberrypi.org/debian/pool/main/r/raspi-config/raspi-config_20210212_all.deb

4.安装raspi-config,在

1
sudo dpkg -i raspi-config_20210212_all.deb

5.修改Raspberry的启动配置使能项

1
sudo raspi-config

选择3 Interface

选择第一个 P1 Camera,然后就一直选择OK,如果报错就执行下面的步骤,如果没有就一直OK下去,然后返回初始界面后选择 Finish ,会让你选择是否重启,选择OK。

如果出现错误Your firmwave appears to be out of date (no start_x.elf). Please update

(1)查看boot分区所在的设备号,设备号可能是:/dev/mmcblk0p1

df -h

(2)这个要看具体是哪个了,有可能是我这条语句里面的

sudo mount /dev/mmcblk0p1 /boot

6.查看是否成功

1
ls -al /dev/ | grep video

如果是排线插在树莓派上的,可能是video0,如下图所示。如果有则应该是成功的。或者你可以拔掉再重新上电试一试,看是不是少一个。


无密码登录/插电就登录:解除密钥环–自动登录

先输入自己原来设置的密码

设置新密码-确认新密码:直接空着,点继续

解锁--输一遍密码

开启自动登录


4.22 鱼香Ros

1.鱼香Ros – 一键安装 Ros2 和 VScode

1
wget http://fishros.com/install -O fishros && . fishros

输一次密码

选1

选1

选2

自动检测系统架构(树莓派4B芯片架构为arm64)

选1

选1

输一次密码,结束

回到第一行代码,按7安装VScode


M.Ubuntu个性化合集

语言更改为中文:

然后会提示你重启 – 手动重启

会提示你语言安装不完全,按它的指引安装完再手动重启即可


4.ROS2到底装哪里了

在Windows安装过软件的小伙伴都知道安装软件都会选择一个安装目录,但是安装ROS时候并没有让你选择,ROS安装的默认目录在/opt/ros/下,根据版本的名字进行区分。

我们本节安装的是humble版本的ROS,所以安装目录在/opt/ros/humble下。

1
2
cd /opt/ros/humble/
ls

安装 Partimage 磁盘克隆软件(失败了)

要在 Ubuntu 上安装 Partimage 磁盘克隆软件:

1
sudo apt install partimage

从命令行启动:

1
sudo partimage

串口通信工具minicom

1
2
sudo apt instal minicom
# 安装minicom
1
2
sudo minicom -s
# 进入minicom的配置界面


1
2
ls -l /dev/serial*
# 查看串口的映射关系

树莓派安装非官方系统没有raspi-config命令的解决方法

1、安装依赖

1
sudo apt install whiptail parted lua5.1 alsa-utils psmisc

2、从Raspberrypi官网下载最新的deb安装包

1
wget http://archive.raspberrypi.org/debian/pool/main/r/raspi-config/raspi-config_20200707_all.deb

官网下载地址

3、安装Deb安装包

1
sudo dpkg -i raspi-config_20200707_all.deb

4、装好软件还是提示缺少依赖执行错误

1
sudo apt install -f -y

5、运行raspi-config,需要sudo或以上权限

1
sudo raspi-config

顿时熟悉的窗口出现在眼前

原文链接:https://blog.csdn.net/no1xium/article/details/107477055

2.1 开启GPIO串口功能,并使用硬件串口

使用 sudo raspi-config 进入图形界面
选择菜单 Interfacing Options -> P6 Serial,
第一个选项(would you like a login shell to be accessible over serial?)选择 NO,
第二个选项(would you like the serial port hardware to be enabled?)选择 YES

原文链接:https://blog.csdn.net/wanggao_1990/article/details/103702563

2.2 禁用串口的控制台功能

前面步骤已经交换了硬件串口与mini串口的映射关系,但是,现在还不能使用树莓派串口模块与电脑进行通信,因为,树莓派gpio口引出串口默认是用来做控制台使用的,即是为了用串口控制树莓派,而不是通信。所以我们要禁用此默认设置。
首先执行命令如下:

1
2
sudo systemctl stop serial-getty@ttyAMA0.service
sudo systemctl disable serial-getty@ttyAMA0.service

然后执行命令行修改文件:

1
sudo nano /boot/cmdline.txt

并删除语句console=serial0,115200(没有的话就不需要此步骤)

2.3 测试验证串口通信功能

这里使用三种方式进行测试验证, c语言下使用wiringPi库, python语言下使用serial包,最后命令行使用minicom工具。
先安装以上开发工具

1
2
3
4
sudo apt-get install wiringpi
sudo apt-get install python3-serial
sudo apt-get install minicom
# c语言下使用wiringPi库, python语言下使用serial包,最后命令行使用minicom工具

原文链接:https://blog.csdn.net/wanggao_1990/article/details/103702563

1
touch test.py
1
`python3 test.py`
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# -*- coding: utf-8 -*

import serial
import time

ser = serial.Serial("/dev/ttyAMA0",115200)

if not ser.isOpen():
print("open failed")
else:
print("open success: ")
print(ser)

try:
while True:
count = ser.inWaiting()
if count > 0:
recv = ser.read(count)
print("recv: " + recv)
ser.write(recv)
sleep(0.05)
except KeyboardInterrupt:
if ser != None:
ser.close()

下载这个,搬到桌面上

1
2
sudo mv ~/Desktop/slam_gmapping-eloquent-devel/* /opt/ros/humble/src
# 移动到Ros工作区下
1
2
sudo apt install python3-roslaunch
# 不知道啥 ros的工具包

Ros2 命令行操作

 终端 - Terminal 快捷键 - CTRL+ALT+T

1
2
pwd
# 当前终端所在的路径在哪里
1
2
ls
# 当前路径下有哪些文件以及文件夹
1
2
3
ls -A
# 当前路径下有哪些隐藏文件(.开头即为隐藏文件)
# 文件浏览器下Ctrl+h也可以显示对应的隐藏文件
1
2
mkdir test
# 在当前路径下创建一个新文件夹(test)
1
2
cd test/
# 从终端进入到该文件夹(进入到test文件夹下)
1
2
touch readme.txt
# 在当前文件夹下创建一个新文件(readme.txt)
1
2
rm readme.txt
# 删除当前文件夹下的指定文件(readme.txt)
1
2
cd ..
# 返回上一级目录
1
2
3
rm -R test 
# 删除当前文件夹下的指定文件夹(test)
# -R:递归删除,查询该文件夹下有哪些文件和子文件夹,依次递归删除
1
2
sudo apt install XXXX
# 安装功能包(XXXX)

1
2
3
4
- Ctrl+Alt+T 打开终端
pi@pi-desktop:~$ ros2 run turtlesim turtlesim_node
# ros2 run turtlesim:运行了 turtlesim 功能包提供的第一个功能;
# turtlesim_node:一个海龟仿真器的节点
1
2
3
4
- 重新打开一个终端
ros2 run turtlesim turtle_teleop_key
# 启动 turtlesim 功能包提供的一个功能节点;
# turtle_teleop_key: 功能:读取键盘按键值变为素指令,从而控制海龟

成果如下

1
2
3
# 查看某个节点的基本信息,或者当前系统里有哪些节点
- 打开一个新的终端
ros2 node

弹出了帮助信息,后面可以跟 info list 参数

1
2
ros2 node list
# 打印所有正在运行的raw系统中的节点

1
2
ros2 node info /turtlesim
# 得知某一指定节点的信息(/turtlesim)

查看了海龟仿真器的一些基本信息

1
2
ros2 topic
# 显示当前话题参数

1
2
# 得知当前系统有哪些话题正在发布和订阅
ros2 topic list
1
2
# 对(/turtlel/pose)话题进行订阅并打印(数据会周期性地打印出来)
ros2 topic echo /turtle1/pose

1
2
# 控制海龟运动(转圈)
ros2 topic pub --rate 1 /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0,y: 0.0,z: 0.0}, angular:{x: 0.0,y: 0.0,z: 1.8}}"

如图,海龟在转圈

1
2
# 创建一只新的海龟,名为"haigui"
$ ros2 service call /spawn turtlesim/srv/Spawn "{x: 2, y: 2, theta: 0.2, name: 'haigui'}"

此时查看新增接口

1
2
# 将上面命令中参数 "turtle1" 改为 "haigui",可以看到"haigui"开始转圈了
$ ros2 topic pub --rate 1 /haigui/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0,y: 0.0,z: 0.0}, angular:{x: 0.0,y: 0.0,z: 1.8}}"

1
ros2 bag
1
2
# 录制动作(ctrl+c停止,保存在当前终端所在路径下面)
ros2 bag record /turtlel/cmd_vel
1
2
# 复现录制的动作(善用Tab)
ros2 bag play rosbag2_2024_05_18-18_55_12/

镭神N10激光雷达 在 Ubuntu22.04LTS Ros2 中的驱动使用安装流程

1
sudo chmod 777 /dev/ttyUSB0
1
sudo usermod -aG dialout happy

Linux 下查看串口

Linux下查看串口状态:快速掌握要点(linux下查看串口) – 后浪云 (idc.net)

1
ls -l /dev/tty*

安装Ros2

#重装了系统,系统初始化后#

sudo apt update

sudo apt install locales

sudo locale-gen en_US en_US.UTF-8

sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8

export LANG=en_US.UTF-8

#配置了远程连接#

sudo ufw allow 5900/tcp

sudo ufw allow 3389/tcp

sudo apt install net-tools

ifconfig

#-#-#-#-#


从头配一遍

1.起手初始化配置

​ Settings – Power – Screen Blank –> Never 永不息屏

2.连接WiFi

3.设置 - Sharing

​ 要你设置密码 - 直接空着点继续 - Remote Desktop 开起来

​ ip a 看ip

​ 远程连接(今天的远程连接非常奇怪,只能看和共享剪切板,不能控制)

4.happy@happy:~/Desktop$ cd

happy@happy:~$ wget http://fishros.com/install -O fishros && . fishros

选5 – 更换系统源; 再选2 –更换系统源并清理第三方源;再选1 – 添加Ros/Ros2源

#草,换源更新失败三次,第四次换成http-ROS官方源才成功

5.happy@happy:~$ wget http://fishros.com/install -O fishros && . fishros

选1 – 装Ros2

((再选2 – 不更换源 继续安装(但它貌似还是帮我还原了 并且还是换源两次失败 第三次换成https-ROS官方源成功)

再选1 – humble

再选1 - 桌面版

跑到最后没跑通。。关了终端重来一遍))

选1 – 更换系统源再继续安装

选1 – humble

选1 – 桌面版 成功了

6.- Ctrl+Alt+T 打开终端
pi@pi-desktop:~$ ros2 run turtlesim turtlesim_node 启动小乌龟

7.- 重新打开一个终端
ros2 run turtlesim turtle_teleop_key 启动键盘映射

测试完毕,证明ROS环境安装成功

8.Ctrl+C 关闭海龟和键盘

9.再跑小鱼 选3 – 配rosdepc

rosdepc update

10.再跑小鱼 选4 – 检测到有Ros环境 成功了


Ros2开发环境配置

1
2
# 安装git:
sudo apt install git
1
2
# 安装 VSCode:
sudo dpkg -i code_1.89.1-1715060508_amd64.deb

安装VSCode schinese 插件

安装 python 插件

安装 C/C++ 插件

安装 cmake 插件

安装 vscode-icons 插件

安装 ROS 插件

安装 Msg language support 插件

安装 URDF 插件(机器人模型)

安装 intelliCode 插件 (人工智能助手)

安装 Markdown All in One 插件


工作空间与功能包:开发过程的大本营

工作空间(workspace):存放项目开发相关文件的文件夹;是开发过程的大本营。

Home/

Home/dev_ws(dev workspace):工作空间的根目录,内有四个子空间(工作空间的名字可以自定义,数量也并不是唯一)

  • src:代码空间(Source Space)
  • install:安装空间(Install Space):放置所有代码最终编译结果
  • build:编译空间(Build Space):放置编译的中间文件,不太可读
  • log:日志空间(Log Space):编译的日志信息

开始创建工作空间:

1.创建文件夹 dev_ws ;

1
2
2.# 创建dev_ws:
mkdir -p ~/dev_ws/src
1
2
3.# 进入src空间:
cd dev_ws/src/
1
2
4.# 安装 pip
sudo apt install python3-pip
1
2
5.# 使用 pip 安装 ros 小依赖工具 rosdepc(解决ROS网络访问问题)
sudo pip3 install rosdepc
1
2
6.# 初始化 rosdepc 工具
sudo rosdepc init & rosdepc udate
1
2
7.# 回到工作空间根目录
cd ..
1
2
8.# 从src文件夹下搜索所有功能包的依赖项并判断是否安装好
rosdepc install -i --from-path src --rosdistro hummble -y
1
2
9.# 安装 colcon
sudo apt install python3-colcon-ros
1
2
10.# 使用 colcon 对整个工作空间进行完整编译
colcon build
1
2
11.# 配置你的环境变量(因为我们的工作空间是在的任意目录下创建的)
source install/local setup.sh

古月居8:话题:节点间传递数据的桥梁

1
happy@happy:~$ ros2 run learning_topic topic_helloworld_pub

6.4 重新配

0.烧录TF卡 UBUNTU DESKTOP 22.04.4 LTS (64-BIT)

1.起手初始化配置

​ Settings – Power – Screen Blank –> Never 永不息屏

​ Display – Resolution – 1280*720(备选)

2.连接WiFi

3.设置 - Sharing

​ 要你设置密码 - 直接空着点继续 - Remote Desktop 开起来

​ ip a 看ip

​ 远程连接

4.happy@happy:~/Desktop$ cd

happy@happy:~$ wget http://fishros.com/install -O fishros && . fishros

选5 – 更换系统源; 再选2 –更换系统源并清理第三方源;再选1 – 添加Ros/Ros2源

5.happy@happy:~$ wget http://fishros.com/install -O fishros && . fishros

选1 – 装Ros2

选1 – 更换系统源再继续安装

选1 – humble

选1 – 桌面版

(等待半天ing)

Ros2安装成功了,输密码确认一下

6.再跑小鱼 选3 – 配rosdepc

rosdepc update

7.再跑小鱼 选4 – 检测到有Ros环境 成功了

至此ROS2环境配置完毕

8.sudo apt install python3-pip 检查一下pip 没问题

happy@happy:~$ python3 -m pip install numpy

检查numpy 安装了

sudo apt install libopencv-dev python3-opencv

检查opencv-python 安装了

happy@happy:~$ python3 -m pip install matplotlib

检查matplotlib 安装了

至此OpenCV环境安装完毕

下面是一段用于解决特定问题的配置:http://t.csdnimg.cn/gMpU6

相关知识:如何在 Ubuntu 中创建、删除和调整 SWAP 空间 - 系统极客 (sysgeek.cn)

1
2
3
4
5
6
7
8
9
10
11
12
13
# 创建分区路径
sudo mkdir -p /var/cache/swap/
# 设置分区的大小
# bs=64M是块大小,count=64是块数量,所以swap空间大小是bs*count=4096MB=4GB
sudo dd if=/dev/zero of=/var/cache/swap/swap0 bs=64M count=64
# 设置该目录权限
sudo chmod 0600 /var/cache/swap/swap0
# 创建SWAP文件
sudo mkswap /var/cache/swap/swap0
# 激活SWAP文件
sudo swapon /var/cache/swap/swap0
# 查看SWAP信息是否正确
sudo swapon -s
开始创建工作空间:

happy@happy:~$ cd /home

1.创建文件夹 dev_ws ;

1
2
2.# 创建dev_ws:
mkdir -p ~/dev_ws/src
1
2
3.# 进入src空间:
happy@happy:~$ cd dev_ws/src/
1
2
3
4.# 检验 pip 是否安装
sudo apt install python3-pip
安装了
1
2
5.# 使用 pip 安装 ros 小依赖工具 rosdepc(解决ROS网络访问问题)(未使用)
sudo pip3 install rosdepc
1
2
6.# 初始化 rosdepc 工具
sudo rosdepc init & rosdepc udate
1
2
7.# 回到工作空间根目录
cd ..
1
2
8.# 从src文件夹下搜索所有功能包的依赖项并判断是否安装好
rosdepc install -i --from-path src --rosdistro hummble -y
1
2
9.# 检查 colcon 是否安装
sudo apt install python3-colcon-ros
1
2
3
10.# 使用 colcon 对整个工作空间进行完整编译
colcon build
显示 colcon build successful
1
2
11.# 配置你的环境变量(因为我们的工作空间是在的任意目录下创建的)
source install/local_setup.sh

下一步,从U盘导入

下一步,USB插上N10雷达;

1
2
# 提升指定串口权限
sudo chmod 777 /dev/ttyUSB0
1
sudo usermod -aG dialout happy

插上USB摄像头

1
sudo apt install ros-humble-usb-cam

报错:Waiting for cache lock: Could not get lock /var/lib/dpkg/lock-frontend. It is heWaiting for cache lock: Could not get lock /var/lib/dpkg/lock-frontend. It is held by process 2220 (unattended-upgr)
Waiting for cache lock: Could not get lock /var/lib/dpkg/lock-frontend. It is held by process 2220 (unattended-upgr)… 916s

解决方案:

1
sudo killall apt apt-get

如果提示没有apt进程:

1
2
apt: no process found
apt-get: no process found

解决了

6.7 进入 home/dev_ws

colcon build 显示 cartographer 编译 failed

#sudo apt install cmake 检查cmake 没事

初步判断为 cratographer 没有 absl

进入 home

sudo apt-get install stow

sudo chmod +x ~/dev_ws/src/cartographer/scripts/install_abseil.sh

$ cd ~/dev_ws/src/cartographer/scripts

./install_abseil.sh

报错:bash: ./install_abseil.sh: /bin/sh^M: bad interpreter: No such file or directory

sed -i ‘s/\r$//‘ install_abseil.sh

git clone https://github.com/abseil/abseil-cpp.git
./install_abseil.sh: 20: git: not found

这个错误提示表示系统无法找到git命令,因此无法执行git clone命令。

安装git

sudo apt-get install git

报错

http://t.csdnimg.cn/geasP

sudo apt install ros-humble-cartographer

sudo apt install ros-humble-cartographer-ros

wget http://fishros.com/install -O fishros && . fishros

3