[Documentation] [TitleIndex] [WordIndex

Debian Installation

Installation

(Tested on Stretch)

install_ros.sh

 #!/usr/bin/env bash


DISTRO=vivid  ## the basic tools from ROS's Ubuntu Vivid Distribution
              ## also work with Debian Stretch


## http://wiki.ros.org/jade/Installation/Ubuntu#Installation.2BAC8-Ubuntu.2BAC8-Sources.Setup_your_sources.list

sudo -E apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
sudo sh -c "echo \"deb http://packages.ros.org/ros/ubuntu $DISTRO main\" > /etc/apt/sources.list.d/ros-latest.list"

sudo apt-get update
sudo apt-get install cmake python-nose libgtest-dev ## needed to work on Beaglebone Black

## http://wiki.ros.org/jade/Installation/Source
sudo apt-get install python-rosdep python-rosinstall-generator python-vcstool python-rosinstall build-essential

sudo -E rosdep init
rosdep update

mkdir ~/ros_catkin_ws
cd    ~/ros_catkin_ws

rosinstall_generator ros_comm --rosdistro jade --deps --wet-only --tar > jade-ros_comm-wet.rosinstall
vcstool import src < jade-ros_comm-wet.rosinstall

sudo apt-get install -y libboost-all-dev python-empy libconsole-bridge-dev libtinyxml-dev liblz4-dev libbz2-dev
./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release

sudo apt-get install python-netifaces

Workspace sample

To test your setup... the following script creates a workspace in ~/catkin_tmp and compiles and runs the example code from ROS/Tutorials/WritingPublisherSubscriber(c++)

create_workspace.sh

 #!/usr/bin/env bash

WORKSPACE_PATH=~/catkin_tmp

## Source
. ~/ros_catkin_ws/install_isolated/setup.bash


## Create catkin workspace
mkdir -p $WORKSPACE_PATH/src
cd       $WORKSPACE_PATH/src
catkin_init_workspace

cd       $WORKSPACE_PATH/
catkin_make

.        $WORKSPACE_PATH/devel/setup.bash





cd       $WORKSPACE_PATH/src
catkin_create_pkg beginner_tutorials std_msgs rospy roscpp

cd       $WORKSPACE_PATH/
catkin_make

.        $WORKSPACE_PATH/devel/setup.bash





# escaping:
# note in the HEREDOC below, \\ means \ in the output!!
#                            \$ means $ in the output!!
#                            \` means ` in the output!!
cat <<EOF    > $WORKSPACE_PATH/src/beginner_tutorials/CMakeLists.txt
cmake_minimum_required(VERSION 2.8.3)
project(beginner_tutorials)

## Find catkin and any catkin packages
find_package(catkin REQUIRED COMPONENTS roscpp rospy std_msgs genmsg)

## Declare ROS messages and services
#add_message_files(FILES Num.msg)
#add_service_files(FILES AddTwoInts.srv)

## Generate added messages and services
generate_messages(DEPENDENCIES std_msgs)

## Declare a catkin package
catkin_package()

## Build talker and listener
include_directories(include \${catkin_INCLUDE_DIRS})

add_executable(talker src/talker.cpp)
target_link_libraries(talker \${catkin_LIBRARIES})
add_dependencies(talker beginner_tutorials_generate_messages_cpp)

add_executable(listener src/listener.cpp)
target_link_libraries(listener \${catkin_LIBRARIES})
add_dependencies(listener beginner_tutorials_generate_messages_cpp)
EOF


cat <<EOF    > $WORKSPACE_PATH/src/beginner_tutorials/src/talker.cpp
#include "ros/ros.h"
#include "std_msgs/String.h"

#include <sstream>

int main(int argc, char **argv)
{
  ros::init(argc, argv, "talker");

  ros::NodeHandle n;

  ros::Publisher chatter_pub = n.advertise<std_msgs::String>("chatter", 1000);

  ros::Rate loop_rate(10);

  int count = 0;
  while (ros::ok())
    {
      std_msgs::String msg;

      std::stringstream ss;
      ss << "hello world " << count;
      msg.data = ss.str();

      ROS_INFO("%s", msg.data.c_str());

      chatter_pub.publish(msg);

      ros::spinOnce();

      loop_rate.sleep();
      ++count;
    }
  return 0;
}
EOF

cat <<EOF    > $WORKSPACE_PATH/src/beginner_tutorials/src/listener.cpp
#include "ros/ros.h"
#include "std_msgs/String.h"

void chatterCallback(const std_msgs::String::ConstPtr& msg)
{
  ROS_INFO("I heard: [%s]", msg->data.c_str());
}

int main(int argc, char **argv)
{
  ros::init(argc, argv, "listener");

  ros::NodeHandle n;

  ros::Subscriber sub = n.subscribe("chatter", 1000, chatterCallback);

  ros::spin();

  return 0;
}
EOF







cd       $WORKSPACE_PATH
catkin_make

.        $WORKSPACE_PATH/devel/setup.bash


roscore &
PID_roscore=$!

sleep 2  ## wait for roscore to start

echo
echo " ####### "
echo "Hit enter to run talker and listener nodes from 2 seconds"
read

rosrun beginner_tutorials talker   &
PID_talker=$!

rosrun beginner_tutorials listener &
PID_listener=$!


sleep 2  ## run for a short while

kill $PID_listener
kill $PID_talker
kill $PID_roscore

2024-12-07 12:14