Unable to communicate with master

This is an error report.


Screenshot of the error


Error details

I am not able to get any topic or node list from the VM Library and roscore had to be started manually. I Did restart the simulation MULTIPLE times!!!. When i try rostopic list, i get an error message saying Error: Unable to communicate with master!. I am trying to do ROS Basics in 5 days, the 10th chapter and most of my simulation does not run for all exercises. I feel that my VM is defective. Could someone please guide me on what to do. Happy to send all the screenshots required for this report. Please!!!!!!!!!!!!!!

This usually happens when you modify ROS variables. Did you change anything in your ~/.bashrc file?

If so, can you revert those changes?
If in doubt, please post the content of your ~/.bashrc file.

I havent changed anything in my ~/.bashrc file.
this is what i got when i ran cat ~/.bashrc:

at ~/.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

# ------------------------------------------------------------------------------
# When running commands through Python's Popen or Python's SSH Client (paramiko)
# the shells are not interactive and "source /home/user/.bash_aliases" is not
# executed. Because of that our scripts fails for not having ROS_* variables
# defined. Since we always need those variables, no matter whether we are using
# ssh or python, we uncomment the lines below.
#
# It is worth mentioning also that when running commands with
#   sudo su user -c "echo commands executed by the 'user' user"
#
# the ~/.bashrc is not called. In those cases we have to explicitly call
#   source ~/.bashrc
#
# More details on PR #122.
# ------------------------------------------------------------------------------
# # If not running interactively, don't do anything
# case $- in
#    *i*) ;;
#      *) return;;
# esac

# ------------------------------------------------------------------------------
# After we disabled the "return" above the course tests started failing because
# we have "set -e" and the /usr/share/bash-completion/bash_completion fails.
# Let's them disable the "set -e" if it is enabled.
# ------------------------------------------------------------------------------
tc__exit_on_error=false
if shopt -po errexit > /dev/null; then
    tc__exit_on_error=true;
    set +e
fi
# ------------------------------------------------------------------------------

# don't put duplicate lines or lines starting with space in the history.
# See bash(1) for more options
HISTCONTROL=ignoreboth

# append to the history file, don't overwrite it
shopt -s histappend

# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=1000
HISTFILESIZE=2000

# 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 ]; then
    debian_chroot=$(cat /etc/debian_chroot)
fi

# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
    xterm-color) color_prompt=yes;;
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_prompt=yes

if [ -n "$force_color_prompt" ]; then
    if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
        # We have color support; assume it's 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_prompt=yes
    else
        color_prompt=
    fi
fi

if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt

# If this is an xterm set the title to user@host: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 ]; then
    test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
    alias ls='ls --color=auto'
    #alias dir='dir --color=auto'
    #alias vdir='vdir --color=auto'

    alias grep='grep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias egrep='egrep --color=auto'
fi

# some more ls aliases
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'

# Add an "alert" alias for long running commands.  Use like so:
#   sleep 10; alert
alias alert='notify-send --urgency=low -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 don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi

# If we from The Construct disabled "set -e", let's enable it again.
if  [[ "${tc__exit_on_error}" == "true" ]]; then set -e; fi
unset tc__exit_on_error

# -----------------------------------------------------
#           Note from The Construct
# -----------------------------------------------------
# This file will be saved together with your rosject.
# Add your custom exports at the end of this file. E.g.:
#   export MY_SETTING=value
#   export GAZEBO_RESOURCE_PATH=$GAZEBO_RESOURCE_PATH:/home/user/simulation_ws/src/my_package
# -----------------------------------------------------

export ROS_MASTER_URI=http://localhost:11311
export ROS_HOSTNAME=localhost

These lines are the problem. They are not supposed to be there. Do you remember how they got there?

  • Maybe we asked you to add these somewhere?
  • Maybe you just added them while learning about these concepts?

Anyways, the solution is to remove these lines, save the ~/.bashrc file, then source this on every terminal:

  1. modify your .bashrc for the terminal using the VI program
# remove those two lines
vi ~/.bashrc
  1. When done, source ~/.bashrc by running the command below on all web shells:
source ~/.bashrc
  1. Change to a unit with a different simulation and then come back to the current unit, to restart the simulation.

i have tried the above steps, but it is still not working per say.

It should work “per se” when you come back now.

This topic was automatically closed 5 days after the last reply. New replies are no longer allowed.