X3派完美升级22.04,兼容TROS

X3派官方提供的系统镜像是Ubuntu20.04版本,部分开发者有升级到Ubuntu22.04的需求,本教程将教大家如何将X3派的系统镜像升级到Ubuntu22.04并安装TROS和ROS2(Humble)!

(一)Ubuntu系统升级(20.04->22.04)

升级命令:

sudo apt-get update
#下载Ubuntu升级软件
sudo apt install ubuntu-release-upgrader-core 
#解开gcc锁定
sudo apt-mark unhold  cpp-9 g++-9 gcc-9 gcc-9-base libasan5 libgcc-9-dev libstdc++-9-dev
sudo apt upgrade -y
#升级系统,这一步会比较久,大概四十分钟左右
sudo do-release-upgrade

升级成功后查看版本:

#查看系统版本,更新为22.04:
root@ubuntu:~# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 22.04.2 LTS
Release:        22.04
Codename:       jammy

#查看gcc版本,更新为11.3.0:
root@ubuntu:/# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/aarch64-linux-gnu/11/lto-wrapper
Target: aarch64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 11.3.0-1ubuntu1~22.04' --with-bugurl=file:///usr/share/doc/gcc-11/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-11 --program-prefix=aarch64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libquadmath --disable-libquadmath-support --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --enable-fix-cortex-a53-843419 --disable-werror --enable-checking=release --build=aarch64-linux-gnu --host=aarch64-linux-gnu --target=aarch64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-serialization=2
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 11.3.0 (Ubuntu 11.3.0-1ubuntu1~22.04)

(二)Humble安装使用

根据官方文档安装ROS2(Humble):

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 apt install software-properties-common
sudo add-apt-repository universe

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

sudo apt update
sudo apt upgrade

#安装humble,具体包根据自身需求选择,desktop比较大,安装时间久
sudo apt install ros-humble-desktop 
sudo apt install ros-humble-ros-base

#安装构建ROS包的编译器和其他工具
sudo apt install ros-dev-tools

尝试运行demo(仅限desktop版本):

#第一个终端运行
source /opt/ros/humble/setup.bash
ros2 run demo_nodes_cpp talker

#第二个终端运行
source /opt/ros/humble/setup.bash
ros2 run demo_nodes_py listener

(三)TROS安装使用

安装tros(若系统升级前已安装,忽略此步骤):

sudo apt install tros

添加相关动态库:

系统升级后导致openssl版本升级,使用websocket功能会出现依赖问题,需要获取libssl.so.1.1以及libcrypto.so.1.1两个动态链接库,并存放到/lib/aarch64-linux-gnu/下,其他功能可正常使用

#获取libssl.so.1.1
wget -c --referer=https://pan.baidu.com/s/1SRQgo5dfWHhj3JchL5LDpw?pwd=fgl8 -O /lib/aarch64-linux-gnu/libssl.so.1.1 "https://allall02.baidupcs.com/file/d509b31e6p1e3ee957520efc086a1bcd?bkt=en-2a4ba40c42c88fabb681790bfcb1c911bed2aaf33d2960cb062177376f9e639701a3ae0da5be9584cfe60e3e310964de73ea3db891ba6347bea03f5e21bae58f&fid=984550747-250528-942677971169480&time=1679368959&sign=FDTAXUbGERLQlBHSKfWqiu-DCb740ccc5511e5e8fedcff06b081203-Qwtuopt3p9nG%2BpfHuTYooOV%2BN24%3D&to=80&size=564864&sta_dx=564864&sta_cs=0&sta_ft=1&sta_ct=0&sta_mt=0&fm2=MH%2CBaoding%2CAnywhere%2C%2C%E5%B9%BF%E4%B8%9C%2Cct&ctime=1679368599&mtime=1679368599&resv0=0&resv1=0&resv2=rlim&resv3=5&resv4=564864&vuk=984550747&iv=0&htype=&randtype=&tkbind_id=0&newver=1&newfm=1&secfm=1&flow_ver=3&pkey=en-a5385e9b64cbc8cffe356fb07433dfee109f6ee774ba8c7c4cb5be7da27b3b66c18c5ac73408087918ba1024df32cc87d3717d47b92dc3cf305a5e1275657320&sl=68616270&expires=8h&rt=sh&r=113069502&vbdid=2152772717&fin=libssl.so.1.1&fn=libssl.so.1.1&rtype=1&dp-logid=8760756934773598463&dp-callid=0.1&hps=1&tsl=200&csl=200&fsl=0&csign=mMrr8jOGXalVvGadnD9E0h6hyNw%3D&so=0&ut=6&uter=4&serv=0&uc=4112871698&ti=3a2da66719fb0d4df72fcfbf1ac7d59f205806e3a9660485&hflag=30&from_type=1&adg=c_55ea382ffa351608f27dedcd68ae4058&reqlabel=250528_f_f4264ccc6d97dd9e31e40f3a2f458ba1_-1_b2c4d755696d4ae7b935ea98081d959b&by=themis&resvsflag=1-0-0-1-1-1"

#获取libcrypto.so.1.1
wget -c --referer=https://pan.baidu.com/s/1SRQgo5dfWHhj3JchL5LDpw?pwd=fgl8 -O /lib/aarch64-linux-gnu/libcrypto.so.1.1 "https://allall02.baidupcs.com/file/90be2fedci99016b19b389eba686babb?bkt=en-0f64e6ca9b24f0bc12cfddbdda434c5b4296893ad52d90a0b9cecc41dd27d49dea485fc88dc7890aecddf01422f914bf50e88ee679335e1f488160e945a03a52&fid=984550747-250528-938181381853897&time=1679369099&sign=FDTAXUbGERLQlBHSKfWqiu-DCb740ccc5511e5e8fedcff06b081203-wVUz9LaI8z8GRDFHPrVxMRz4Faw%3D&to=80&size=2596576&sta_dx=2596576&sta_cs=1&sta_ft=1&sta_ct=0&sta_mt=0&fm2=MH%2CBaoding%2CAnywhere%2C%2C%E5%B9%BF%E4%B8%9C%2Cct&ctime=1679368599&mtime=1679368599&resv0=-1&resv1=0&resv2=rlim&resv3=5&resv4=2596576&vuk=984550747&iv=0&htype=&randtype=&tkbind_id=0&newver=1&newfm=1&secfm=1&flow_ver=3&pkey=en-daa67096d5a2ceaca4eba74b43a79f40bb2077375ac432c2bc7eab520195ea84a4fbd3da138de40aec56301b668ddf41b4e01ff0ee6ecc96305a5e1275657320&sl=76480590&expires=8h&rt=sh&r=336194537&vbdid=2152772717&fin=libcrypto.so.1.1&fn=libcrypto.so.1.1&rtype=1&dp-logid=8760794539192057325&dp-callid=0.1&hps=1&tsl=80&csl=80&fsl=-1&csign=Hb%2FY%2F6WGlKCX9NC7FV%2F8iiimjFI%3D&so=0&ut=6&uter=4&serv=0&uc=4112871698&ti=b901726ac386759cb604346bdc46dcbf585528e9fa6a85c8305a5e1275657320&hflag=30&from_type=1&adg=c_55ea382ffa351608f27dedcd68ae4058&reqlabel=250528_f_f4264ccc6d97dd9e31e40f3a2f458ba1_-1_b2c4d755696d4ae7b935ea98081d959b&by=themis&resvsflag=1-0-0-1-1-1"

尝试运行demo:

#第一个终端运行 
source /opt/tros/local_setup.bash 
ros2 run examples_rclcpp_minimal_subscriber subscriber_member_function  

#第二个终端运行 
source /opt/tros/local_setup.bash 
ros2 run examples_rclcpp_minimal_publisher publisher_member_function

安装Python3.8:

Ubuntu22.04使用的是Python3.10,由于Python版本差异,使用ros2 launch命令会出现找不到rclpy的问题,需将Python版本更换为3.8

#安装Python3.8
sudo apt update && sudo apt upgrade
sudo apt install software-properties-common -y
sudo add-apt-repository ppa:deadsnakes/ppa -y
sudo apt install python3.8 -y
sudo apt install libpython3.8

#建立软链接,将版本更换回3.10同理
rm /usr/bin/python3
ln -s /usr/bin/python3.8 /usr/bin/python3

#python版本查看
python3 --version

本次分享就到这里啦,如果过程中出现问题,欢迎在下方留言,我会尽快帮大家解决!

很赞,我的X3使用2.1.0版本镜像已经通过此方法成功升级22.04,并安装了humble版本,但是在补全需要获取libssl.so.1.1以及libcrypto.so.1.1两个动态链接库后websocket功能还是有问题,我尝试运行了tros的姿态检测demo,websocket会报错,收不到图像,希望能够得到大佬帮助,谢谢。

今天尝试了系统更新,有两个问题:

一是镜像版本的问题。使用2.0.0版本的镜像无法获得22.04的更新内容,只能从1.1.7中获得更新内容

二是更新后能够使用X3中的算法工具链之类的专属工具吗

该方法之前是基于1.x版本做的,2.x版本我们会再梳理相关方案。更新后不影响算法相关功能的使用

已解决,多重启了几遍机器就好了

谢谢解答

有可能是该终端确实没收到消息,可以有ros2 topic list看看能不能收到话题