[rk3588 ubuntu20.04]移植ROS2

2024-09-05 05:20
文章标签 rk3588 ubuntu20.04 ros2 移植

本文主要是介绍[rk3588 ubuntu20.04]移植ROS2,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

1 使用命令行安装ROS2

1.1设置语言

1.2添加源

1.3安装ROS2

1.4设置环境变量

2 在编译源码阶段安装ROS2

2.1调整roofts.img大小

2.2 安装ROS2

3 ROS2功能测试


使用命令行安装ROS2

1.1设置语言

        设置语言为UTF-8。

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

1.2添加源

        使能代码库。

sudo apt install software-properties-common -y
sudo add-apt-repository universe

        添加ROS2秘钥,第三步命令添加秘钥可能会超时,多次执行该命令直到添加成功即可。

sudo apt update
sudo apt install curl -y
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg

        将ROS2储存库添加到源列表中。

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

1.3安装ROS2

        设置存储库后,更新apt存储库缓存。

sudo apt update
sudo apt upgrade -y

        安装aptitude工具,为的是能正常安装ros-foxy-rviz2和ros-foxy-joy。如果使用apt来安装ros-foxy-rviz2和ros-foxy-joy会安装失败。

sudo apt install aptitude -y

        安装ros-foxy-desktop的依赖包ros-foxy-rviz2,执行该命令时会要求输入Y/n/q,依次输入n、Y、Y即可。

sudo aptitude install ros-foxy-rviz2

        安装ros-foxy-desktop的依赖包ros-foxy-joy,执行该命令时会要求输入Y/n/q,依次输入n、Y、Y即可。

sudo aptitude install ros-foxy-joy

        安装ros-foxy-desktop,ROS2桌面版。

sudo apt install ros-foxy-desktop -y
sudo apt install python3-argcomplete

        若在安装ros-foxy-desktop时没有预先使用aptitude工具安装ros-foxy-rviz2和ros-foxy-joy,则会报错,报错如下所示。

root@ubuntu:/home/rockchip# sudo apt install ros-noetic-desktop-full
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:The following packages have unmet dependencies:ros-noetic-desktop-full : Depends: ros-noetic-desktop but it is not going to be installedDepends: ros-noetic-perception but it is not going to be installedDepends: ros-noetic-simulators but it is not going to be installedDepends: ros-noetic-urdf-sim-tutorial but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

        安装编译器和其他构建ROS包的工具。

sudo apt install ros-dev-tools -y

1.4设置环境变量

        设置环境变量后,在任意终端都能使用ROS2。

echo "source /opt/ros/foxy/setup.bash " >> /home/rockchip/.bashrc
source /home/rockchip/.bashrc 	

2 在编译源码阶段安装ROS2

2.1调整roofts.img大小

        安装的ROS2空间大小比较大,若不调整roofts.img,后面会因rootfs.img空间不足无法安装ROS,如下所示。

/usr/bin/mandb: can't write to /var/cache/man/31302: No space left on device
/usr/bin/mandb: can't create index cache /var/cache/man/31302: No space left on device

        将rootfs.img调整为8000M,修改的代码如下所示。

diff --git a/build/python3/build.py b/build/python3/build.py
index 1cfa376e6..248168a50 100755
--- a/build/python3/build.py
+++ b/build/python3/build.py
@@ -675,7 +675,7 @@ class Build:sys.exit(1)if rootfs_size == "auto":
-            cmd = '%s/build/scripts/resize.sh %s/rootfs.img 5000M' % (root_path, out_path)
+            cmd = '%s/build/scripts/resize.sh %s/rootfs.img 8000M' % (root_path, out_path)else:cmd = '%s/build/scripts/resize.sh %s/rootfs.img %dM' % (root_path, out_path, int(rootfs_size))if edge_cmd(cmd, None) != 0:

2.2 安装ROS2

        在vendor/common/pre-install/目录下增加ROS2的安装脚本,并添加可执行权限。

touch vendor/common/pre-install/ros_foxy_desktop_install.sh
chmod +x vendor/common/pre-install/ros_foxy_desktop_install.sh

   ros_foxy_desktop_install.sh脚本的内容如下所示。之所以sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg会重复三次,是因为执行该命令时有可能会因网络不好超时,所以多执行几次避免没发添加秘钥成功。

#!/bin/bashsudo 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 apt install software-properties-common -y
sudo add-apt-repository universe
sudo apt update
echo "--------------         install curl -y               ----------------------"
sudo apt install curl -y
echo "--------------         add key                   ----------------------"
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
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 $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
echo "--------------         apt update                 ----------------------"
sudo apt update
echo "--------------         apt upgrade                ----------------------"
sudo apt upgrade -y
sudo apt install aptitude -y
echo "--------------         install ros-foxy-rviz2          ----------------------"
sudo aptitude install ros-foxy-rviz2
echo "--------------         install ros-foxy-joy            ----------------------"
sudo aptitude install ros-foxy-joy
echo "--------------         install ros-foxy-desktop        ----------------------"
sudo apt install ros-foxy-desktop -y
echo "--------------         install python3-argcomplete     ----------------------"
sudo apt install python3-argcomplete
echo "--------------         install ros-dev-tools            ----------------------"
sudo apt install ros-dev-tools -y
echo "--------------         source /opt/ros/foxy/setup.bash  ----------------------"
echo "source /opt/ros/foxy/setup.bash " >> /home/rockchip/.bashrc
source /home/rockchip/.bashrc

    ./edge build -r生成根文件系统时会执行build/scripts/rootfs-install.sh脚本,修改build/scripts/rootfs-install.sh脚本,使其在执行时能执行ros_foxy_desktop_install.sh脚本从而安装ROS2环境,修改的内容如下所示。

diff --git a/build/scripts/rootfs-install.sh b/build/scripts/rootfs-install.sh
index 853a125df..d64dab498 100755
--- a/build/scripts/rootfs-install.sh
+++ b/build/scripts/rootfs-install.sh
@@ -19,6 +19,7 @@ function post_install()pre_installsudo chroot rootfs /pre-install/install.sh $*
+sudo chroot rootfs /pre-install/ros_foxy_desktop_install.shret=$?sleep 1post_install

        执行./edge build -r编译命令生成根文件系统时,在执行到ros_foxy_desktop_install.sh脚本中的sudo aptitude install ros-foxy-rviz2命令时,执行该命令时会要求输入Y/n/q,依次输入n、Y、Y即可。在执行到ros_foxy_desktop_install.sh脚本中的sudo aptitude install ros-foxy-joy命令时执行该命令时会要求输入Y/n/q,依次输入n、Y、Y即可。等待./edge build -r执行成功完成后,ROS2的环境即已经预安装成功在roofts.img里面。

ROS2功能测试

#测试小乌龟功能包
#一个终端执行该命令
ros2 run turtlesim turtlesim_node
#另一个终端执行该命令
ros2 run turtlesim turtle_teleop_key#测试cpp与py的demo功能包
#一个终端执行该命令
ros2 run demo_nodes_cpp talker
#另一个终端执行该命令
ros2 run demo_nodes_py listener


 

这篇关于[rk3588 ubuntu20.04]移植ROS2的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1138058

相关文章

基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(五):Blender锥桶建模

前言 本系列教程旨在使用UE5配置一个具备激光雷达+深度摄像机的仿真小车,并使用通过跨平台的方式进行ROS2和UE5仿真的通讯,达到小车自主导航的目的。本教程默认有ROS2导航及其gazebo仿真相关方面基础,Nav2相关的学习教程可以参考本人的其他博客Nav2代价地图实现和原理–Nav2源码解读之CostMap2D(上)-CSDN博客往期教程: 第一期:基于UE5和ROS2的激光雷达+深度RG

FreeRTOS-基本介绍和移植STM32

FreeRTOS-基本介绍和STM32移植 一、裸机开发和操作系统开发介绍二、任务调度和任务状态介绍2.1 任务调度2.1.1 抢占式调度2.1.2 时间片调度 2.2 任务状态 三、FreeRTOS源码和移植STM323.1 FreeRTOS源码3.2 FreeRTOS移植STM323.2.1 代码移植3.2.2 时钟中断配置 一、裸机开发和操作系统开发介绍 裸机:前后台系

[环境配置]ubuntu20.04安装后wifi有图标但是搜不到热点解决方法

最近刚入手一台主机,暗影精灵8plus电竞主机,安装ubuntu后wifi怎么都搜不到热点,前后重装系统6次才算解决问题。这个心酸历程只有搞技术人才明白。下面介绍我解决过程。 首先主机到手后是个windows10系统,我用无线网连接了一下,可以正常上网,说明主机有无限网卡且正常。然后我就直接开始安装Ubuntu20.04了,安装成功后发现wifi有图标但是搜不到热点,我想是不是无线网卡驱动有没有

RT-Thread(Nano版本)的快速移植(基于NUCLEO-F446RE)

目录 概述 1 RT-Thread 1.1 RT-Thread的版本  1.2 认识Nano版本 2 STM32F446U上移植RT-Thread  2.1 STM32Cube创建工程 2.2 移植RT-Thread 2.2.1 安装RT-Thread Packet  2.2.2 加载RT-Thread 2.2.3 匹配相关接口 2.2.3.1 初次编译代码  2.2.3.

Ubuntu20.04+ros-noetic配置Cartographer

一、概述         因为要配置激光SLAM,Cartographer属于激光雷达SLAM 中比较经典的一款,在学习之前先将其在Ubuntu20.04首先配置出来并成功运行demo。 二、具体操作 (一)概述         使用平台是Windows的wsl2上的Ubuntu20.04子系统,双系统与虚拟机的安装原理与这个相同。主要依照的安装操作是官方文档,链接如下所示。 Runni

Ubuntu20.04使用systemd配置Gogs开机启动

先说现象,大家用sudo systemctl start gogs是不是和我一样? ubuntu@raspberry-pi:~$ sudo systemctl status gogs● gogs.service - GogsLoaded: loaded (/lib/systemd/system/gogs.service; enabled; vendor preset: enabled)Acti

libmad音频解码库-Linux交叉编译移植

下载并解压libmad-0.15.1b.tar.gz 下载链接:https://downloads.sourceforge.net/mad/libmad-0.15.1b.tar.gz $tar -xvf libmad-0.15.1b.tar.gz$cd libmad-0.15.1b 1、先执行下面的命令:这条命令是为了适配高版本的gcc,因为高版本的gcc已经将-fforce-mem去除了:

arm linux lua移植

lua: lua home 1.下载lua源码 lua下载 lua-5.3.4.tar.gz 2.解压: tar xvf lua-5.3.4.tar.gz 3.修改makefile and luaconf.h $修改 lua-5.3.4/Makefile #INSTALL_TOP= /usr/local INSTALL_TOP= $(shell pwd)/out #修改安装目录(当前目录/o

用python fastapi写一个http接口,使ros2机器人开始slam toolbox建图

如果你想使用Python的FastAPI框架编写一个HTTP接口,以便通过接口启动ROS 2机器人的SLAM Toolbox建图,可以按照以下方式进行: 首先,确保你已经安装了fastapi和uvicorn库。你可以使用以下命令进行安装: pip install fastapi uvicorn 接下来,创建一个Python文件(例如app.py),并将以下代码添加到文件中: import

Windows下基于VMware虚拟机安装Ubuntu20.04系统

Windows下基于VMware虚拟机安装Ubuntu20.04系统 前言安装VMware软件安装Ubuntu20.04下载Ubuntu镜像安装镜像 结语 前言 本教程旨在帮助想要接触linux的道友,为诸位道友们连接进入linux世界的桥梁,从此可以在linux的世界里任意翱翔,本博客为笔者亲自实践总结,可放心收藏点赞并实践 安装VMware软件 链接稍后附上 安装Ubu