Difference between revisions of "ROS"

From ArchWiki
Jump to: navigation, search
(Removed EOL / unsupported ROS versions)
(Removed questionable rebuild script and replaced bash one-liner with a slightly more sane one.)
Line 1: Line 1:
 
[[Category:Mathematics and science]]
 
[[Category:Mathematics and science]]
 
[[ja:Ros]]
 
[[ja:Ros]]
{{Style|Does not conform to [[Help:Style]], poor shell one-liners}}
+
{{Accuracy|Links to questionable, outdated third-party resource for installation instructions (yaourt, pacman -Sy, etc.)}}
{{Accuracy|Relies on a horribly written, outdated third-party resource for installation instructions (yaourt, pacman -Sy, etc.)}}
 
 
[http://www.ros.org ROS] is an open-source, meta-operating system for your robot. It provides the services you would expect from an operating system, including hardware abstraction, low-level device control, implementation of commonly-used functionality, message-passing between processes, and package management.
 
[http://www.ros.org ROS] is an open-source, meta-operating system for your robot. It provides the services you would expect from an operating system, including hardware abstraction, low-level device control, implementation of commonly-used functionality, message-passing between processes, and package management.
  
== Setup Notes - Kinetic ==
+
== Installation Instructions ==
 +
 
 +
=== Kinetic ===
  
 
Kinetic packages on the AUR are a work in progress. There are [https://github.com/bchretien/arch-ros-stacks/issues/57#issuecomment-228612399 some issues regarding opencv3] that have not been fully resolved yet. That said, installing a metapackage such as {{AUR|ros-kinetic-ros-core}} or {{AUR|ros-kinetic-robot}} should bring in all required dependencies. Beware of AUR helpers, some cannot navigate the highly complex dependency trees that ROS generates.
 
Kinetic packages on the AUR are a work in progress. There are [https://github.com/bchretien/arch-ros-stacks/issues/57#issuecomment-228612399 some issues regarding opencv3] that have not been fully resolved yet. That said, installing a metapackage such as {{AUR|ros-kinetic-ros-core}} or {{AUR|ros-kinetic-robot}} should bring in all required dependencies. Beware of AUR helpers, some cannot navigate the highly complex dependency trees that ROS generates.
Line 11: Line 12:
 
Packages are being added on an as-needed basis. Please send package requests to <aur AT seangreenslade DOT com>, and post any issues with the current packages in their respective AUR comments section.
 
Packages are being added on an as-needed basis. Please send package requests to <aur AT seangreenslade DOT com>, and post any issues with the current packages in their respective AUR comments section.
  
== Setup Notes - Jade ==
+
=== Jade ===
  
 
For ROS Jade, see [http://wiki.ros.org/jade/Installation/Arch Installation Instructions for jade in Arch Linux].
 
For ROS Jade, see [http://wiki.ros.org/jade/Installation/Arch Installation Instructions for jade in Arch Linux].
Line 18: Line 19:
 
If using gcc in version 6.x or above, log4cxx 0.10 (one of dependencies) will not build. Use SVN version ({{AUR|log4cxx-svn}} in aur) until 0.11 is released.}}
 
If using gcc in version 6.x or above, log4cxx 0.10 (one of dependencies) will not build. Use SVN version ({{AUR|log4cxx-svn}} in aur) until 0.11 is released.}}
  
== Setup Notes - Indigo ==
+
=== Indigo ===
  
 
For ROS Indigo, see [http://wiki.ros.org/indigo/Installation/Arch Installation Instructions for Indigo in Arch Linux].
 
For ROS Indigo, see [http://wiki.ros.org/indigo/Installation/Arch Installation Instructions for Indigo in Arch Linux].
  
== Rebuild when boost is updated ==
+
== Rebuild when Boost is updated ==
When you update a library that ROS depends on, e.g. boost, then you need to rebuild all the packages that link to it. You can search for the packages, with a command similar to the one below. You can use the output from that to rebuild the AUR packages with your favorite AUR helper/wrapper.
 
  
export LANG=C;grep -r "libboost" /opt/ros/indigo |  awk '{ print $3 }' | grep opt |  pacman -Qo - | awk '{ print $5 }' | tr '\n' ' '
+
When you update a library that ROS depends on, e.g. Boost, then you need to rebuild all the packages that link to it. You can determine which ROS packages depend on Boost with a command similar to the one below.
  
Or use the following script that build all ros-indigo-* packages following the dependency tree:
+
  export LANG=C;pacman -Qi boost | grep "Required By" | tr " " "\n" | grep -e "^ros"
   
 
  ros_version="ros-indigo"
 
 
 
  pack_file=$1
 
  if [[ $pack_file == "" ]]; then
 
pack_file=$(mktemp)
 
  fi
 
 
 
  function contains() {
 
  for item in $(cat $1); do
 
      if [ "$2" == "$item" ]; then
 
          return 0
 
      fi
 
  done
 
  return 1
 
  }
 
 
 
  export built=""
 
 
 
  function get_deps() {
 
    deps=$(pacman -Qi $1 | grep 'Depends On' | tr ' ' '\n' | grep ${ros_version})
 
    echo $deps
 
  }
 
 
  function build_package() {
 
  local pack=$1
 
  local recursion_level=$2
 
  if contains $pack_file $pack; then
 
return 0
 
  fi
 
printf '%*s' $recursion_level ''
 
  echo "building $pack "
 
  deps=$(get_deps $pack)
 
  for dep in $deps; do
 
      build_package $dep $(( $recursion_level + 1 ))
 
  done
 
yaourt -S $pack --noconfirm
 
echo "$pack" >> $pack_file
 
  }
 
 
 
  echo "getting list of package built with boost"
 
  list=$(export LANG=C;grep -r "libboost" /opt/ros/indigo | awk '{ print $3 }' | grep opt | pacman -Qo - | awk '{ print $5 }' | tr '\n' ' ')
 
 
 
  for pack in $list; do
 
    build_package $pack 0
 
  done
 

Revision as of 04:08, 23 December 2016

Tango-inaccurate.pngThe factual accuracy of this article or section is disputed.Tango-inaccurate.png

Reason: Links to questionable, outdated third-party resource for installation instructions (yaourt, pacman -Sy, etc.) (Discuss in Talk:ROS#)

ROS is an open-source, meta-operating system for your robot. It provides the services you would expect from an operating system, including hardware abstraction, low-level device control, implementation of commonly-used functionality, message-passing between processes, and package management.

Installation Instructions

Kinetic

Kinetic packages on the AUR are a work in progress. There are some issues regarding opencv3 that have not been fully resolved yet. That said, installing a metapackage such as ros-kinetic-ros-coreAUR or ros-kinetic-robotAUR should bring in all required dependencies. Beware of AUR helpers, some cannot navigate the highly complex dependency trees that ROS generates.

Packages are being added on an as-needed basis. Please send package requests to <aur AT seangreenslade DOT com>, and post any issues with the current packages in their respective AUR comments section.

Jade

For ROS Jade, see Installation Instructions for jade in Arch Linux.

Note: If using gcc in version 6.x or above, log4cxx 0.10 (one of dependencies) will not build. Use SVN version (log4cxx-svnAUR in aur) until 0.11 is released.

Indigo

For ROS Indigo, see Installation Instructions for Indigo in Arch Linux.

Rebuild when Boost is updated

When you update a library that ROS depends on, e.g. Boost, then you need to rebuild all the packages that link to it. You can determine which ROS packages depend on Boost with a command similar to the one below.

export LANG=C;pacman -Qi boost | grep "Required By" | tr " " "\n" | grep -e "^ros"