【解决】Jetson nano安装ros(melodic)遇到的坑
环境
Ubuntu版本:18.04.6 LTS aarch64
python环境:anaconda3(记住这个环境,后面要考!!!)
安装过程
mkdir -p ~/AiROS
cd ~/AiROS
vim installROS.sh
输入以下脚本:
#!/bin/bash
# Install Robot Operating System (ROS) on NVIDIA Jetson TX2
# Maintainer of ARM builds for ROS is http://answers.ros.org/users/1034/ahendrix/
# Information from:
# http://wiki.ros.org/melodic/Installation/UbuntuARM
# Setup Locale
# sudo update-locale LANG=C LANGUAGE=C LC_ALL=C LC_MESSAGES=POSIX
# Setup sources.lst
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
# Setup keys
sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 0xB01FA116
# Installation
sudo apt-get update
sudo apt-get install ros-melodic-desktop -y # advice ros-melodic-desktop not ros-melodic-desktop-full
# Add Individual Packages here
# You can install a specific ROS package (replace underscores with dashes of the package name):
# sudo apt-get install ros-melodic-PACKAGE
# e.g.
# sudo apt-get install ros-melodic-navigation
#
# To find available packages:
# apt-cache search ros-melodic
#
# Initialize rosdep
sudo apt-get install python-rosdep -y
# Initialize rosdep
sudo rosdep init
# To find available packages, use:
rosdep update
# Environment Setup
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
# Install rosinstall
sudo apt-get install python-rosinstall -y
验证:
roscore
报错
... logging to /home/jetson/.ros/log/d36ed670-f8ab-11ee-a185-00044beb9d47/roslaunch-jetson-desktop-15054.log
Checking log directory for disk usage. This may take a while.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.
Cannot locate [roslaunch]RLException: Invalid <param> tag: Cannot load command parameter [rosversion]: command [['rosversion', 'roslaunch']] returned with code [1].
Param xml is <param command="rosversion roslaunch" name="rosversion"/>
The traceback for the exception was written to the log file
看一下报错日志文件
vim /home/jetson/.ros/log/d36ed670-f8ab-11ee-a185-00044beb9d47/roslaunch-jetson-desktop-15054.log
python版本的锅,ros是在Python2上构建的(自我理解),但是conda的默认base环境是Python3!!!!!
[roslaunch][ERROR] 2024-04-12 17:05:36,852: Traceback (most recent call last):
File "/opt/ros/melodic/lib/python2.7/dist-packages/roslaunch/__init__.py", line 347, in main
p.start()
File "/opt/ros/melodic/lib/python2.7/dist-packages/roslaunch/parent.py", line 305, in start
self._start_infrastructure()
File "/opt/ros/melodic/lib/python2.7/dist-packages/roslaunch/parent.py", line 254, in _start_infrastructure
self._load_config()
File "/opt/ros/melodic/lib/python2.7/dist-packages/roslaunch/parent.py", line 157, in _load_config
roslaunch_strs=self.roslaunch_strs, verbose=self.verbose)
File "/opt/ros/melodic/lib/python2.7/dist-packages/roslaunch/config.py", line 451, in load_config_default
load_roscore(loader, config, verbose=verbose)
File "/opt/ros/melodic/lib/python2.7/dist-packages/roslaunch/config.py", line 94, in load_roscore
loader.load(f_roscore, config, core=True, verbose=verbose)
File "/opt/ros/melodic/lib/python2.7/dist-packages/roslaunch/xmlloader.py", line 761, in load
self._load_launch(launch, ros_config, is_core=core, filename=filename, argv=argv, verbose=verbose)
File "/opt/ros/melodic/lib/python2.7/dist-packages/roslaunch/xmlloader.py", line 733, in _load_launch
self._recurse_load(ros_config, launch.childNodes, self.root_context, None, is_core, verbose)
File "/opt/ros/melodic/lib/python2.7/dist-packages/roslaunch/xmlloader.py", line 669, in _recurse_load
default_machine, is_core, verbose)
File "/opt/ros/melodic/lib/python2.7/dist-packages/roslaunch/xmlloader.py", line 679, in _recurse_load
self._param_tag(tag, context, ros_config, verbose=verbose)
File "/opt/ros/melodic/lib/python2.7/dist-packages/roslaunch/xmlloader.py", line 96, in call
return f(*args, **kwds)
File "/opt/ros/melodic/lib/python2.7/dist-packages/roslaunch/xmlloader.py", line 286, in _param_tag "Invalid <param> tag: %s. \n\nParam xml is %s"%(e, tag.toxml()))
解决
问题找到了就好解决了, 创建一个Python2.7的conda环境
conda create -n ros_env python=2.7
conda install rospkg
这里用conda安装rospkg不要用pip安装,因为装不上
测试
roscore