镜像烧录
使用Etcher烧录镜像“ubuntu-22.04-preinstalled-desktop-arm64+raspi.img”,注意版本一定是要与树莓派匹配的,即名称中必须有raspi,否则板子初始化会失败。之后进行系统配置,用户名是user , 一个用户可以有多个主机; 主机名是 hostname,要修改,就去 /etc/hostname目录修改.
22.04镜像下载网址为:Index of /releases/jammy
ROS2及VSCode下载
使用鱼香肉丝进行一键下载,依次选择命令1 1 2,等待三分钟左右后选择1 1,安装humble桌面版。如果提出报错按照说明进行操作即可。之后使用同样的命令选择[7]即可下载VSCode
# 注意里面的字母大写O,不是数字0
sudo wget http://fishros.com/install -O fishros && . fishros
设置系统时间
如果系统时间与目前时间相差较大,则会提示证书过期,无法执行sudo apt update命令。具体设置自动同步时间的方法如下:
# 设置系统时间为当前时间,如 "2024-06-19 13:30:40"
sudo date --set="2024-06-19 13:30:40"
# 安装 ntp 工具包,如果出现无法获得锁的提示则杀死对应进程
sudo apt install ntp
sudo kill -9 2549 # 把2549替换为对应占用锁的进程号
date # 查看是否同步
# 启动 ntp 并设置开机自启动
sudo systemctl start ntp
sudo systemctl enable ntp
SSH远程连接树莓派
由于树莓派板子运行太慢,使用笔记本电脑远程SSH连接,对其进行操作。需要树莓派和笔记本连在同一个局域网内(需要是路由器的那种,不可以是手机热点),然后在树莓派上输入ifconfig查看网络ip,如192.168.1.109。查看ip也可以在笔记本上网址输:192.168.1.1,进入局域网管理员界面查看设备ip。
首次开机需要手动打开树莓派的SSH功能,方法如下:
# 安装 ifconfig 对应工具包
sudo apt install net-tools
# 第一次开机需要下载 SSH 工具包
sudo apt install openssh-server
# 打开并设置开机自动运行
sudo systemctl enable ssh
sudo systemctl start ssh
# 查看SSH运行状态
sudo systemctl status ssh
之后在笔记本上的VSCode中,配置SSH文件中修改ip为刚才查到的树莓派的ip,连接,选择linux,输入密码即可。User指的是命令行中的前一个,如例子中的命令行显示为lamps-xe1@bit。
Host mypi
HostName 192.168.1.109
User lamps-xe1
注意:如果笔记本之前连接过相同ip的树莓派,容易出现连接失败的场景,在笔记本cmd中运行 ssh lamps-xe3@192.168.1.109 如下报错,这是因为之前连接的树莓派在笔记本中留下了密钥,更换板子就更换了密钥,使用了相同的ip地址就会出现这个报错。
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ED25519 key sent by the remote host is
SHA256
/RTKufPt7dc2U2jh+PJfqGJtiA.
Please contact your system administrator.
Add correct host key in C:\Users\w_yXenon/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in C:\Users\w_yXenon/.ssh/known_hosts:13
Host key for 192.168.1.109 has changed and you have requested strict checking.
Host key verification failed.
解决方法如下:
-
使用文本编辑器打开
known_hosts
文件:在 Windows 上,你可以使用文本编辑器(如 Notepad++、Sublime Text 等)打开
known_hosts
文件。文件通常位于C:\Users\YourUsername\.ssh\known_hosts
。 -
查找并删除旧的条目:
打开文件后,查找与你尝试连接的树莓派 IP 地址相关的行。行的开头通常显示了主机 IP 地址或主机名以及其密钥。
- 使用编辑器的查找功能(通常是
Ctrl + F
)查找192.168.1.109
(根据你的实际情况替换为正确的 IP 地址)。 - 找到匹配的条目后,删除整行或删除行中的特定条目。
- 保存文件后关闭编辑器即可。
- 使用编辑器的查找功能(通常是
新建工作空间并编译
# 新建文件夹,-p为-parent意思,如果该路径下有父目录不存在,则一并创建父目录
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src
#安装pip3
sudo apt install -y python3-pip
#通过pip3安装rosdepc,rosdepc是中国区适配的rosdep,并初始化和更新
sudo pip3 install rosdepc
sudo rosdepc init
rosdepc update
#到工作空间目录下,安装/更新依赖,此处版本为ROS2 Humble LTS
cd ~/ros2_ws
rosdepc install -i --from-path src --rosdistro humble -y
# 没有colcon命令要先安装
sudo apt update
sudo apt upgrade
sudo apt install python3-colcon-ros
# 到工作空间根目录下,colcon build 将编译文件夹下的所有源码并完成相应配置
cd ~/ros2_ws
colcon build
使用CMake创建功能包
# 创建一个包,在ROS2中创建新包的命令语法是:
ros2 pkg create <package_name> --build-type ament_cmake --license Apache-2.0 --dependencies rclcpp
# 举例,包名称为two_camera
ros2 pkg create two_camera --build-type ament_cmake --dependencies rclcpp --license Apache-2.0
build-type 用来指定该包的编译类型,一共有三个可选项ament_python、ament_cmake、cmake
license 用于制定证书,一般设置为Apache-2.0,如果不指定会弹出一个警告但是没有别的影响
dependencies 指的是这个功能包的依赖,由于我需要的是C++语言,这里使用的依赖是rclcpp
摄像头及GStreamer相关
# 查看摄像机支持的协议帧率:
v4l2-ctl -d /dev/video0 --list-formats-ext --all
# 命令行启动gstreamer:
gst-launch-1.0 v4l2src device=/dev/video0 ! image/jpeg, width=1920, height=1080, framerate=30/1 ! jpegdec ! videoconvert ! autovideosink