网站建设的主题,小城镇建设 网站官方,做网站的毕设开题依据,当阳seo外包解决在同一个虚拟机中管理两个不同版本的ros 基于Ubuntu#xff08;20.04#xff09; ros版本1和版本2的切换
前期准备#xff1a;已经在Ubuntu中安装了两个版本的ros#xff0c;这里以版本1的noetic和版本2的foxy为例
在bashrc中#xff1a;
# ~/.bashrc: executed by…解决在同一个虚拟机中管理两个不同版本的ros 基于Ubuntu20.04 ros版本1和版本2的切换
前期准备已经在Ubuntu中安装了两个版本的ros这里以版本1的noetic和版本2的foxy为例
在bashrc中
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples# If not running interactively, dont do anything
case $- in*i*) ;;*) return;;
esac# dont put duplicate lines or lines starting with space in the history.
# See bash(1) for more options
HISTCONTROLignoreboth# append to the history file, dont overwrite it
shopt -s histappend# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE1000
HISTFILESIZE2000# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize# If set, the pattern ** used in a pathname expansion context will
# match all files and zero or more directories and subdirectories.
#shopt -s globstar# make less more friendly for non-text input files, see lesspipe(1)
[ -x /usr/bin/lesspipe ] eval $(SHELL/bin/sh lesspipe)# set variable identifying the chroot you work in (used in the prompt below)
if [ -z ${debian_chroot:-} ] [ -r /etc/debian_chroot ]; thendebian_chroot$(cat /etc/debian_chroot)
fi# set a fancy prompt (non-color, unless we know we want color)
case $TERM inxterm-color|*-256color) color_promptyes;;
esac# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
#force_color_promptyesif [ -n $force_color_prompt ]; thenif [ -x /usr/bin/tput ] tput setaf 1 /dev/null; then# We have color support; assume its compliant with Ecma-48# (ISO/IEC-6429). (Lack of such support is extremely rare, and such# a case would tend to support setf rather than setaf.)color_promptyeselsecolor_promptfi
fiif [ $color_prompt yes ]; thenPS1${debian_chroot:($debian_chroot)}\[\033[01;32m\]\u\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$
elsePS1${debian_chroot:($debian_chroot)}\u\h:\w\$
fi
unset color_prompt force_color_prompt# If this is an xterm set the title to userhost:dir
case $TERM in
xterm*|rxvt*)PS1\[\e]0;${debian_chroot:($debian_chroot)}\u\h: \w\a\]$PS1;;
*);;
esac# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; thentest -r ~/.dircolors eval $(dircolors -b ~/.dircolors) || eval $(dircolors -b)alias lsls --colorauto#alias dirdir --colorauto#alias vdirvdir --colorautoalias grepgrep --colorautoalias fgrepfgrep --colorautoalias egrepegrep --colorauto
fi# colored GCC warnings and errors
#export GCC_COLORSerror01;31:warning01;35:note01;36:caret01;32:locus01:quote01# some more ls aliases
alias llls -alF
alias lals -A
alias lls -CF# Add an alert alias for long running commands. Use like so:
# sleep 10; alert
alias alertnotify-send --urgencylow -i $([ $? 0 ] echo terminal || echo error) $(history|tail -n1|sed -e \s/^\s*[0-9]\\s*//;s/[;|]\s*alert$//\)# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.if [ -f ~/.bash_aliases ]; then. ~/.bash_aliases
fi# enable programmable completion features (you dont need to enable
# this, if its already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! shopt -oq posix; thenif [ -f /usr/share/bash-completion/bash_completion ]; then. /usr/share/bash-completion/bash_completionelif [ -f /etc/bash_completion ]; then. /etc/bash_completionfi
fi# 清除 PYTHONPATH 以避免混合环境
export PYTHONPATH# ROS 版本切换
export ROS_VERSION_CHOICE1if [ $ROS_VERSION_CHOICE 1 ]; then source /opt/ros/noetic/setup.bash source /home/bingda/catkin_ws/devel/setup.bash # source ROS1工作空间# ROS1 相关别名 alias start_main_launchcd ~/catkin_ws roslaunch launch/main_launch.launch
elif [ $ROS_VERSION_CHOICE 2 ]; then source /opt/ros/foxy/setup.bash if [ -f ~/colcon_ws/install/setup.bash ]; then source ~/colcon_ws/install/setup.bash # source ROS2工作空间fi # 可以在这里添加 ROS2 相关别名
fi # 函数: 切换 ROS 版本
switchros() {# 先清除 PYTHONPATH 以避免混合环境 export PYTHONPATHif [ $1 1 ] || [ $1 ros1 ]; then sed -i s/^export ROS_VERSION_CHOICE.*/export ROS_VERSION_CHOICE1/ ~/.bashrc echo 切换到 ROS1请运行 source ~/.bashrc 使更改生效 elif [ $1 2 ] || [ $1 ros2 ]; then sed -i s/^export ROS_VERSION_CHOICE.*/export ROS_VERSION_CHOICE2/ ~/.bashrc echo 切换到 ROS2请运行 source ~/.bashrc 使更改生效 else echo 用法: switchros {1|2|ros1|ros2} fi
} # 添加一个全面的环境清理函数可选
clean_ros_env() { unset ROS_DISTRO unset ROS_VERSION unset ROS_PYTHON_VERSION unset PYTHONPATH unset CMAKE_PREFIX_PATH unset AMENT_PREFIX_PATH echo ROS 环境变量已清理
} # 添加一个检查当前 ROS 环境的函数可选
check_ros() { echo ROS 版本选择: $ROS_VERSION_CHOICE echo ROS 发行版: $ROS_DISTRO echo ROS Python 路径: echo $PYTHONPATH | tr : \n
}
这里面主要是做了字符出匹配用来匹配并且替换不用的ros版本代码
后续在终端中执行命令 查看当前的ros版本
rosversion -d切换ros1版本
switchros 1切换ros2版本
switchros 2特别注意却换完之后请执行source ~/.bashrc来生效