svn repository setup

etc... 2015. 6. 19. 11:36

1. 아래 명령어로 버전관리할 프로젝트를 만들어준다.

$ svnadmin create 디렉토리명


2. 디렉토리 권한을 변경해준다.

$ chown -R 소유자:그룹

- 여기서 -R 옵션은 하위폴더까지 권한을 변경해주는 것이다.


3. 임시 디렉토리를 (trunk,branches,tags)를 만들어 준다.

$ mkdir ~/tmp/trunk ~/tmp/brances ~/tmp/tags


4. 임시폴더를 import해준다.

$svn import svn+ssh://유저@타겟주소/디렉토리(위에서 create한 디렉토리)


임시 디렉토리를 지워준다. svn 변경사항 메일로 알려주려면 post-commit파일 참고

'etc...' 카테고리의 다른 글

GNU Scientific Library 설치  (0) 2014.02.05
Posted by 신영식
,

sudo apt-get install gsl-bin libgsl0-dev

'etc...' 카테고리의 다른 글

svn repository setup  (0) 2015.06.19
Posted by 신영식
,

1. sudo apt-get install ros-electric-laser-drivers

2. ls -l /dev/ttyACM0

    초기에는 다음과 같은 내용을 확인할 수 있다. 권한 변경을 해줄 필요가 있음.
    crw-rw---- 1 root dialout 166, 0 2009-10-27 14:18 /dev/ttyACM0

    sudo chmod a+rw /dev/ttyACM0로 권한을 변경해주면 다음과 같은 내용을 확인 할 수 있다.
    crw-rw-rw- 1 root dialout 166, 0 2009-10-27 14:18 /dev/ttyACM0

3. 테스트 프로그램 실행

    rosrun rviz rviz -d `rospack find hokuyo_node'/hokuyo_test.vcg


참고사이트 : http://wiki.ros.org/hokuyo_node/Tutorials/UsingTheHokuyoNode


UTM30-LX 설정변경하기 (dynamic reconfigure)사용

참고사이트 wiki.ros.org/hokuyo_node/Tutorials/UsingReconfigureGUIToChangeHokuyoLaserParameters

  • cluster: 1

  • skip: 1

  • intensity: false

  • min_ang: -2.2689

  • max_ang: 2.2689


Posted by 신영식
,


Posted by 신영식
,

1. data recording

예제
roscore rosrun turtlesim turtlesim_node rosrun turtlesim turtle_teleop_key

발행중인 토픽 목록 확인하기

rostopic list -v

data를 기록할 폴더를 만들고 모든 topic을 기록한다
mkdir ~/bagfiles cd ~/bagfiles rosbag record -a
-a 옵션으로 모든 topic을 기록한다.

rosbag record -O subset /turtle1/command_velocity /turtle1/pose
data의 일부만 기록하기


기록된 bag파일 정보 확인

rosbag info <your bagfile>

기록된 bag파일 재생

rosbag play <your bagfile>


Posted by 신영식
,

1. Service Node 실행

$ rosrun beginner_tutorials add_two_ints_server


2. Client Node 실행

$ rosrun beginner_tutorials add_two_ints_client 1 3


Posted by 신영식
,

publisher와 subscriber처럼 항상 메시지를 주고 받는게 아니라 client가 service를 request하였을 때만 response해주는 것이다


1. Service Node 작성
$ roscd beginner_tutorials
$ cd src
$ vi add_two_ints_server.cpp

#include "ros/ros.h"
#include "beginner_tutorials/AddTwoInts.h"

bool add(beginner_tutorials::AddTwoInts::Request &req, 
beginner_tutorials::AddTwoInts::Response &res)
{
    res.sum = req.a + req.b;
    ROS_INFO("request: x=%ld, y=%ld", (long int)req.a, (long int)req.b);
    ROS_INFO("sending back response: [%ld]", (long int)res.sum);
    return true;
}

int main(int argc, char **argv)
{
    ros::init(argc, argv, "add_two_ints_server");
    ros::NodeHandle n;

    ros::ServiceServer service = n.advertiseService("add_two_ints", add);
    ROS_INFO("Ready to add two ints.");
    ros::spin();

    return 0;
}


2. Client Node 작성
$ roscd beginner_tutorials
$ cd src
$ vi add_two_ints_client.cpp
#include "ros/ros.h"
#include "beginner_tutorials/AddTwoInts.h"
#include <cstdlib>

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

    if (argc != 3)
    {
        ROS_INFO("usage: add_two_ints_client X Y");
        return 1;
    }

    ros::NodeHandle n;
    ros::ServiceClient client = n.serviceClient<beginner_tutorials::AddTwoInts>("add_two_ints");
    beginner_tutorials::AddTwoInts srv;

    srv.request.a = atoll(argv[1]);
    srv.request.b = atoll(argv[2]);

    if (client.call(srv))
    {
        ROS_INFO("Sum: %ld", (long int)srv.response.sum);
    }
    else
    {
        ROS_ERROR("Failed to call service add_two_ints");
        return 1;
    }
    return 0;
}


3. CMakefileLists.txt 수정

아래 두 줄을 추가해 준다.

rosbuild_add_executable(add_two_ints_server src/add_two_ints_server.cpp) rosbuild_add_executable(add_two_ints_client src/add_two_ints_client.cpp)

빌드
rosmake beginner_tutorials


'ROS electric' 카테고리의 다른 글

ROS data 기록하고 재생하기  (0) 2014.01.08
Simple Service와 Client 실행  (0) 2014.01.08
Simple publisher와 subscriber 실행  (0) 2014.01.08
Simple publisher와 subscriber 작성(C++)  (0) 2014.01.08
ROS msg와 srv생성  (0) 2014.01.08
Posted by 신영식
,

1. Publisher 실행

$ roscore
$ rosrun beginner_tutorials talker

2. Subscriber 실행

$ rosrun beginner_tutorials listener


'ROS electric' 카테고리의 다른 글

Simple Service와 Client 실행  (0) 2014.01.08
Simple Service와 Client 작성(c++)  (0) 2014.01.08
Simple publisher와 subscriber 작성(C++)  (0) 2014.01.08
ROS msg와 srv생성  (0) 2014.01.08
ROS editor (rosed)  (0) 2014.01.08
Posted by 신영식
,

1. Publisher Node 작성

$ roscd beginner_tutorials
$ cd src
$ vi 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;
}

요약 : ROS system 초기화, publish할 메시지를 chatter topic에 advertise, 1초에 10번씩 loop돌면서 message를 보낸다


2. Subscriber Node 작성

$ roscd beginner_tutorials
$ cd src
$ vi 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;
}

요약 : ROS System 초기화, chatter topic으로부터 subscribe, message들어올때마다 spin하면서 chatterCallback함수 수행


3. CMakeList.txt 수정

rosbuild_add_executable(talker src/talker.cpp)
rosbuild_add_executable(listener src/listener.cpp)

위 내용을 CMakeList.txt에 추가해주자

'ROS electric' 카테고리의 다른 글

Simple Service와 Client 작성(c++)  (0) 2014.01.08
Simple publisher와 subscriber 실행  (0) 2014.01.08
ROS msg와 srv생성  (0) 2014.01.08
ROS editor (rosed)  (0) 2014.01.08
roslaunch 사용하기  (0) 2014.01.08
Posted by 신영식
,

msg : ROS message의 field를 설명하는 단순 text file

srv : request와 response로 이뤄져 있는 service file


1. msg 생성하기

$ roscd beginner_tutorials $ mkdir msg $ echo "int64 num" > msg/Num.msg
$ rosmake beginner_tutorials
빌드하기 전 CMakefile에서 # rosbuild_genmsg()이부분의 주석을 제거해주자


2. msg 확인하기( rosmsg show [message type] )

$ rosmsg show beginner_tutorials/Num
$ rosmsg show Num

3. srv 생성하기( roscp [package_name] [file_to_copy_path] [copy_path]$ roscd beginner_tutorials ) $ mkdir srv
$ roscp rospy_tutorials AddTwoInts.srv srv/AddTwoInts.srv
$ rosmake beginner_tutorials

마찬가지로 빌드하기전 # rosbuild_gensrv() 이부분의 주석을 제거해주자

4. srv 확인하기(rossrv show <service type>)

$ rossrv show beginner_tutorials/AddTwoInts

참고 : 도움말확인하기
$ rosmsg -h
$ rosmsg show -h


'ROS electric' 카테고리의 다른 글

Simple publisher와 subscriber 실행  (0) 2014.01.08
Simple publisher와 subscriber 작성(C++)  (0) 2014.01.08
ROS editor (rosed)  (0) 2014.01.08
roslaunch 사용하기  (0) 2014.01.08
ROS Service와 Parameter의 이해  (0) 2014.01.08
Posted by 신영식
,