写在前面:这个是我在学校里大概围绕着研究的项目,跟索尼 Spresense 开发板有关系。要用到索尼的板子和 ROS,进行一些边缘的机器人运行和操控。在这里记录一下步骤,以方便后续需要。
前置环境准备
Ubuntu 22.04 版本上,安装 ros-humble
-
换源,将
/etc/apt/souces.list
备份后全部替换为1 2 3 4 5 6 7 8 9 10 11 12 13 14
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释 deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse deb http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse # deb-src http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse # 预发布软件源,不建议启用 # deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse # # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
-
添加 ROS 源及安全证书
1 2 3
sudo apt update && sudo apt install curl gnupg lsb-release sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
-
更新源并安装ROS
1 2 3
sudo apt update && sudo apt upgrade sudo apt install ros-humble-desktop sudo apt install ros-humble-ros-base
-
设置环境变量
1
source /opt/ros/humble/setup.bash
<可选>: 将设置环境变量写入 shell 启动脚本:
1
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
测试:
- 打开一个终端,并输入:
ros2 run demo_nodes_cpp talker
,终端中开始不断输出 - 打开另一个终端,并输入:
ros2 run demo_nodes_py listener
,终端开始不断输出另一个节点发出的内容,则环境配置正确。
- 打开一个终端,并输入:
在 Ubuntu 22.04 中安装 Arduino IDE 和 Sony Spresense 开发板库
从官网中下载最新的 Arduino IDE:
https://www.arduino.cc/en/software
Linux USB 串口配置
将用户添加到 dialout
组中: sudo usermod -a -G dialout $USER
,注销用户并重新登录以使用新设置
安装 Spresense Arduino 库
-
打开安装好的 Arduino IDE
-
在[文件 - 首选项]中打开首选项
-
将以下 URL 复制并粘贴到名为
Additional Boards Managers URLs:
的字段中: -
打开
Boards Manager
[工具→Board→Boards Manager]。 -
搜索 Spresense。在列表中找到后,选择它并单击安装。如果软件包列表下载失败,可能的原因是您的网络连接使用代理。要设置代理,请导航至[网络→文件→首选项]。
在 Ubuntu 环境中安装 micro-ROS-agent
docker 环境
-
在终端输入:
sudo apt install docker docker-compose
-
安装并运行
micro-ROS-agent
的 docker 镜像:sudo docker run -it --rm -v /dev:/dev --privileged --net=host microros/micro-ros-agent:humble serial --dev /dev/ttyUSB0
当看见输出如:
1 2
[1702026333.143516] info | TermiosAgentLinux.cpp | init | running... | fd: 3 [1702026333.143919] info | Root.cpp | set_verbose_level | logger setup | verbose_level: 4
时,则已经在 Ubuntu 上安装好带有
micro-ROS2
的 docker 镜像,此时可停止控制台程序。
在 Ubuntu 内的 Arduino IDE 中编写脚本并烧录至 Spresense
-
下载官方提供的 micro-ROS 相关库文件,以
.zip
格式打包下载,解压至自己方便的目录下。 -
指定安装刚才下载的库
-
下载由官方提供的示例代码文件:
https://github.com/TE-YoshinoriOota/Spresense-microROS-Seminar
-
在 IDE 中选择目标开发板为 Spresense,并将示例文件夹
sketches
中的spresense_micro-ros_publisher_serial.ino
的内容复制到编辑器里(或者直接通过 IDE 打开),选择左上方的烧录按钮(右箭头→)将脚本烧录制 Spresense 中。烧录时,需要注意不要有其他程序占用端口。
-
再次通过在 Ubuntu 终端中输入
sudo docker run -it --rm -v /dev:/dev --privileged --net=host microros/micro-ros-agent:humble serial --dev /dev/ttyUSB0
指令启动 micro-ROS-agent。大致输出如下图:
打开一个新的终端窗口,并输入
ros2 topic list
和ros2 topic echo /micro_ros_arduino_node_publisher
可以检查来自 Spresense 发出的数据。
以上为止,是一个粗略的在 Spresense 上部署 micro-ROS2 的整理。
参考链接:
TE-YoshinoriOota/micro_ros_arduino: micro-ROS library for Arduino (github.com)