Giter Club home page Giter Club logo

ros_menu's Introduction

Neuron Startup Menu

Setting ROS environment every time is an annoying job. ADLINK provides Neuron Startup Menu to make your life easier.

Neuron Startup Menu offers these features:

  1. Install ROS 1, ROS2, and Cyclone DDS for you automatically.

  2. Prompt ROS menu whenever you opening a new terminal.

Support Platform

  • Ubuntu 18.04
    • ROS 1 melodic / ROS 2 dashing
  • Ubuntu 20.04
    • ROS 1 noetic / ROS 2 foxy
  • Ubuntu 22.04
    • ROS 2 humble

Install

  • Get Git tools if you haven't installed yet
sudo apt update
sudo apt install -y git curl
  • There are two ways to install: install in native host / container

    • native host:

      sh -c "$(curl -fsSL https://raw.githubusercontent.com/Adlink-ROS/ros_menu/master/scripts/setup.sh)"
    • container

      # Add docker privilege to current user
      sudo apt install docker.io
      sudo groupadd docker
      sudo gpasswd -a $USER docker
      reboot
      # After reboot
      sh -c "MENU_CONFIG=ros_menu_20.04_container.yaml USE_CONTAINER=True $(curl -fsSL https://raw.githubusercontent.com/Adlink-ROS/ros_menu/main/scripts/setup.sh)"
  • (Optional) you can add variables while downloading ros_menu.

# Select which version you want.
sh -c "MENU_VERSION=<Your Version> $(curl -fsSL https://raw.githubusercontent.com/Adlink-ROS/ros_menu/main/scripts/setup.sh)"
# Select which config you want.
sh -c "MENU_CONFIG=<Config Name> $(curl -fsSL https://raw.githubusercontent.com/Adlink-ROS/ros_menu/main/scripts/setup.sh)"

Usage

  • While you open a new terminal, it'll show the following menu.
************ Neuron Startup Menu for ROS *************
* Usage: Please select the following options to load *
*        ROS environment automatically.              *
******************************************************
0) Do nothing
1) ROS 1 noetic 
2) ROS 2 foxy 
3) ROS2/ROS1_bridge 
h) Help
Please choose an option:
  • Here is what the menu does for us:

    • Do nothing:
      • Does not setup any environment.
    • ROS noetic:
      • Sets up the ROS 1 environment.
      • Sets the ROS_IP and ROS_MASTER_URI, which is your host IP.
    • ROS 2 foxy:
      • Sets up the ROS 2 environment.
      • Loads DDS settings and select the DDS you want to use.
    • ROS2/ROS1_bridge:
      • Sets up the ROS Bridge environment.
      • Runs ROS Bridge automatically.
    • Help:
      • Show using details of the ROS menu.
      • You can type h or H or help when choosing the option

Configuration

You can configure the menu easily by modify ~/ros_menu/config.yaml. The following are the options you can control.

  • Enable menu:
    • menu_enable: "true" to enable the menu, “false” or otherwise do nothing.
  • ROS option:
    • ros_option: “menu” to show the whole menu, or any option_num you set to choose the option automatically.
  • ROS domian id:
    • default_ros_domain_id: set if you want to have the same domain ID for every ROS 2 version, otherwise the domain ID will be set to 30.
  • Here are some parameters you need to set if you want to create a new option for your menu:
    • ROS 1:
      • option_num: give the option name to this option, avoid using specific characters(e.g:help,H,h,0) or duplicate option name
      • ROS_version: 1
      • distro_name: the name of the ROS 1 you are using.
      • ros1_path: the path where the ROS 1 is.
      • master_ip: set the IP address of the master if master isn't on current computer.
      • container: if the option is set, then ros_menu will run container for ROS environment.
      • cmds: source your ROS 1 workspace here.
    • ROS 2:
      • option_num: give the option name to this option, avoid using specific characters(e.g:help,H,h,0) or duplicate option name
      • ROS_version: 2
      • distro_name: the name of the ROS 2 you are using.
      • ros2_path: the path where the ROS 2 is.
      • domain_id: set the Domain ID for DDS communication. Keep empty to use $default_ros_domain_id(30)
      • container: if the option is set, then ros_menu will run container for ROS environment.
      • cmds: source your ROS 2 workspace here. Remarks: source_plugin dds_bashrc is necessary every time using ROS 2
    • ROS2/ROS1_bridge:
      • option_num: give the option name to this option, avoid using specific characters(e.g:help,H,h,0) or duplicate option name
      • ROS_version: bridge
      • ros1_version_name: the name of the ROS 1 you are using.
      • ros2_version_name: the name of the ROS 2 you are using.
      • ros1_path: the path where the ROS 1 is.
      • ros2_path: the path where the ROS 2 is.
      • master_ip: set the IP address of the master if master isn't on current computer.
      • domain_id: set the Domain ID for DDS communication. Keep empty to use $default_ros_domain_id(30)
      • container: if the option is set, then ros_menu will run container for ROS environment.
      • cmds: any command you want to run every time using ROS bridge. Remarks: source_plugin dds_bashrc and ros2 run ros1_bridge dynamic_bridge --bridge-all-topics is necessary every time using ROS bridge

Upgrade

  • It's very easy to upgrade the menu by typing ros_menu_upgrade.
  • Optional: You can also select which version you want.
ros_menu_upgrade <version>
  • Next time you open the terminal, it'll be new version.

Disable/Enable the menu

  • You could disable/enable the ros_menu by typing ros_menu_disable / ros_menu_enable
#Disable ros_menu
ros_menu_disable 
#Enable ros_menu
ros_menu_enable

Uninstall

  • If you don't want the ros_menu anymore, you can just type ros_menu_uninstall.
  • Also remember to remove source ~/.ros_bashrc in your ~/.bashrc.

Issues Report

If you find any problems or have any suggestions, feel free to open issues on GitHub.

Issue URL: https://github.com/Adlink-ROS/ros_menu/issues

ros_menu's People

Contributors

danielho-bs avatar evshary avatar jeffrey870517 avatar qqting avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

ros_menu's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.