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