Not able to deploy and run SITL

I’m using WSL 2 Windows 10 Ubuntu 20.04. Followed this to set up. Setting up the Build Environment on Windows10 using WSL1 or WSL2 — Dev documentation

Set up the build environment using this
https://ardupilot.org/dev/docs/building-setup-linux.html#building-setup-linux

I started setting up SITL using this
https://ardupilot.org/dev/docs/setting-up-sitl-on-linux.html#setting-up-sitl-on-linux

Ran into an error when executing
sim_vehcile.py -w
Error: sim_vehicle.py: command not found
Resolved using: Sim_vehicle.py: Command not found - #3 by Anthony_Short

I then ran sim_vehicle.py --console --map
and got back
[Errno 2] No such file or directory: ‘mavproxy.py’

I’ve already run Tools/environment_install/install-prereqs-ubuntu.sh -y
and I checked mavproxy is installed

image

While running Tools/environment_install/install-prereqs-ubuntu.sh -y
I did get


I tried adding the path into the ~/.profile file but I’m very new to Ubuntu so not sure I did that okay …

Can someone please help. I’ve already reinstalled Ubuntu and WSL once.

I notice that you have cloned the ArduPilot repository in to the Windows file structure. Instead clone it into the WSL2 system.

open WSL2 then under your user’s home directory git clone https://github.com/USERNAME/ardupilot.git

Then try rerunning the script Tools/environment_install/install-prereqs-ubuntu.sh -y again.

I wonder if the warning about things not being added to the path has something to do with that where you tried using the script from.

The easy way to Reload Your PATH at the end is to close all instances of WSL then reopen them.

To show what your PATH is set to do echo $PATH

I’m really sorry for such a basic error but I’ve been trying to clone the repo for a while now. Getting this,

I already removed Github from the credential manager, not sure how to proceed.

I also uninstalled Ubuntu and tried again same results

I checked you user username and you have not yet forked the repository so that command wont work yet.

Start your development experience here first, Downloading the Code / Using Git — Dev documentation

Read and complete everything up until Rebasing. You can read up on that later.

Thanks, I followed the instructions and have successfully compiled ./waf . sim_vehicle.py also seems fine now. However I ran into some warnings and errors while updating the packages using Tools/environment_install/install-prereqs-ubuntu.sh -y .

a) when I ran sim_vehicle.py --console --map it got this,

I tried connecting using XLaunch and used the following commands to connect to display

   export DISPLAY=172.27.144.1:0.0
   export LIBGL_ALWAYS_INDIRECT=1
   sudo apt install x11-apps
   xcalc

However, it did not open xcalc.
What should I do now ?

b) accidentally ran this command
echo "export PATH=$PATH:$HOME/.local/bin" >> ~/.bashr

The ‘c’ is missing from the bashrc, When I started a new terminal I get,

What should I do to revert it back to original ?

c) Also, should I execute this as well? Setting up the Build Environment (Linux/Ubuntu) — Dev documentation

d) I executed sim_vehicle.py -f quadplane --console --map --osd

Got, this error,

Ok so we’ve got a lot of different things going o. Let’s focus on one of them first. We cancome back to others as we go…

For the DISPLAY variable did you do the following in ~/.basrc

  1. Open the “Ubuntu” application and add the following to the end of ~/.bashrc. Be sure to comment and uncomment the appropriate lines depending on if you are using WSL1 or WSL2 (if in doubt, WSL1 is the default)
# Export Display for XWindows 
# For WLS1 
# export DISPLAY=0:0 
# For WSL2 
export DISPLAY=$(grep -m 1 nameserver /etc/resolv.conf | awk '{print $2}'):0

Once you add that you will need to restart the terminal ( close and reopen)

Where did you get these commands from,

export LIBGL_ALWAYS_INDIRECT=1
sudo apt install x11-apps
xcalc

To launch a window you must have an instance of XWindows open in Windows 10,

XWindows can be found here, VcXsrv Windows X Server download | SourceForge.net
Setting up the Build Environment on Windows10 using WSL1 or WSL2 — Dev documentation

Please slow down. I know the feeling of frustrated with the setup experience…

I’d like to work with you to make that easier. But moving forward without the first steps complete can lead to issues.

This is my way of saying lets ask one or two questions at a time. Too many long and different questions make responses hard to create and answer.

1 Like

You should not need to execute b & c. They are part of the setup script already. If that wasn’t there or you didn’t see the warning on the page then I need to change that.

c.) Fixing your PATH can be tricky and dangerous. ALWAYS backup your old .bashrc cp ~/.bashrc ~/.bashrc_old_dec_9_2021`

The command you executed basically appended $HOME/.local/bin to the end. To remove it all you need to do is edit your PATH in .bashrc and remove that.

There may be other issues in your PATH as it looks like executed our install script from the ArduPIlot directory with the files located in the Windows File structure and not in the WSL file structure. (They are different… and it is much faster to have the code inside of WSL.)

d.) Is the same DISPLAY issue as a.) they are nearly equivalent commands.

First of all thanks for replying sir. You are absolutely right, I’ve been rushing things :sweat:. I’ll make sure to be more through and slower going forward.

Yes I realized that later. I restored the defaults of the file with AskUbuntu - Forum Answer

As you had asked me to fork the repo from github, I did everything from square 1.

image

Am I still in the windows directory?

I did install VcXsrv and followed the Dev Documentation - Setting up Build Environment on Windows 10 for WSL1 & WSL 2 for the same

I followed the video here.

Okay, I have added this in my ~/.bashrc file :+1:.

I’ll wait for your reply on what to do next :+1::pray:

Anything in /mnt/c is the windows directory.

Instead you want to be in your main user directory so, ~/ardupilot
So if you just cd ~ then do git clone BLAH as before the files will be stored in WSL. You still should have been able to get sitl working from that directory. It will just be slower.

What does your .bashrc look like? You should be able to send it.

Using windows file explorer this get me to my .bashrc, \\wsl$\Ubuntu-20.04\home\veritas\.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, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

# 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|*-256color) 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

# colored GCC warnings and errors
#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'

# 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
export DISPLAY=$(grep -m 1 nameserver /etc/resolv.conf | awk '{print $2}'):0

This is my bashrc file.

I’ll try it out :+1:. Thanks for replying

Hmmm I don’t see the tell tale signs of our script adding things to .bashrc

Specifically this line, source /home/veritas/ardupilot/Tools/completion/completion.bash
and there is noe line that says
`export PATH="/home/veritas/ardupilot/Tools/autotest:/usr/lib/ccache:MORE:MORE:AND:…"

:thinking: What should I do then ?

What is the output of echo $PATH ?

So have you re-cloned ardupilot into your home directory ie

(base) veritas@DESKTOP-V9LAGA3:~/ardupilot$ cd ~
(base) veritas@DESKTOP-V9LAGA3:~$ pwd
/home/veritas

No, sorry sir I’m not able to it. I did this.

image

After this I ran
git clone https://github.com/janeka1122/ardupilot.git

Ok from that location lets do the following.

Then once that cloning operation is done you should be able to do

cd ardupilot
git submodule update --init --recursive

then
Tools/environment_install/install-prereqs-ubuntu.sh -y
. ~/.profile

Next,

Close the terminal

Oh I think I know where your PATH is being set instead.

Can you give me the contents of your ~/.profile ?

# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.

# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022

# if running bash
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
	. "$HOME/.bashrc"
    fi
fi

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/.local/bin" ] ; then
    PATH="$HOME/.local/bin:$PATH"
fi
export PATH=/opt/gcc-arm-none-eabi-10-2020-q4-major/bin:$PATH
export PATH=/mnt/c/Users/DELL/ardupilot/Tools/autotest:$PATH
export PATH=/usr/lib/ccache:$PATH

This one ?

Yup. So as always when modifying these file take a backup!!!

You can remove this line because we want everything ran from the WSL filesystem.

export PATH=/mnt/c/Users/DELL/ardupilot/Tools/autotest:$PATH

I completed the previous mentioned commands

I’m getting this when ruuning