728x90

이 포스팅은 생활코딩의 유투브 강의를 보고 작성하였습니다.

 

먼저 https://git-scm.com/downloads 로 들어가 아래와 같은 화면에서 모니터 사진 안에 Download 버튼을 클릭하면 본인의 운영체제에 맞는 설치파일이 다운로드 된다.

 

설치 파일이 다운되었다면 실행시킨 다음 계속 Next를 누르면서 기본으로 설정된 값으로 설치를 하면 된다.

이 부분은 기본 에디터를 어떤것을 사용할 것인지를 설정하는 곳인데 그냥 기본인 Vim을 선택 후 Next를 해준다.

 

이제 다 설치가 완료되었다면 Git bash 프로그램을 실행시켜 주면 아래와 같이 실행이 된다. 이 프로그램은 윈도우에서 리눅스 명령어 형태를 사용할 수 있게 해주는 프로그램이다.

git이 제대로 설치되었는지 확인하기 위해선

$ git

을 실행시킬때 아래와 같이 뜨게 된다면 제대로 설치된 것이다.

728x90

'Programming > Git' 카테고리의 다른 글

git checkout  (0) 2020.05.24
git diff  (0) 2020.05.24
git add, git commit, git status, git log  (0) 2020.05.24
git init  (0) 2020.05.24
Git failed to push some refs to 오류  (0) 2020.02.21
728x90

1. DHT11이란?

DHT11은 온도와 습도를 모두 측정할수 있는 센서이다. DHT11의 측정 범위는 다음과 같다.

 

온도 0 ~ 50 ℃ ± 2℃
습도 20 ~ 90 % ± 5%

 

2. DHT11 연결

위 처럼 4개의 Pin 중 1번 Pin은 VCC, 2번 Pin은 Data, 3번 Pin은 비워두고, 4번 Pin은 GND에 연결하면 된다. DHT11은 3~5.5V의 전원을 줄 수 있다.

3. DHT11 통신 방식

Single-bus data format으로 Single-Wire Two-Way 방식이다. 한번 측정 과정은 약 4ms가 소요된다.

 

data는 40bit로 구성되어 있고, 습도 정수 8bit, 습도 소수 8bit, 온도 정수 8bit, 온도 소수 8bit, checksum 8bit로 이루어져 있다. 데이터가 똑바로 수신 되었다면 checksum 8bit는 나머지 32비트를 더한 값이어야 한다.

 

1. 전반적인 통신 방식

전반적인 통신 방식은 다음과 같다. 여기서 검은색 라인은 MCU가 센서에게 값을 보내는 것을 의미하고 금색 라인은 센서가 MCU에게 값을 보내는 것을 의미한다.

 

먼저 MCU측에서 Start Signal을 LOW 시그널로 보내준다. 그 후 pull up 후 센서 반응을 기다린다.

그 후 DHT측에서 LOW 신호를 보내준 후 pull up 후 수집한 데이터 값을 보낼 준비를 한다.

데이터를 보내고 40bit를 전송 완료했다면 다음 전송을 위해 50us간 대기한다.

2. 세부적인 통신 방식

1. MCU가 DHT에 Start Signal 송신, DHT가 MCU에 응답

먼저 MCU측에서 start signal을 보낸다. pull down을 하여 최소 18ms간 LOW신호를 DHT에 보내준다. 그 후 pull up 후 HIGH 신호를 20~40us 동안 보내준다.

MCU가 Start Signal을 보내준 후엔 DHT가 LOW신호를 80us동안 보낸다. 그 후 80us동안 HIGH신호를 보낸 다음 데이터 전송을 시작한다.

2. DHT가 MCU에게 Data 전송

DHT가 데이터를 보내는 방식은 먼저 50us동안 1bit data를 LOW신호로 보낸다. 그 후 HIGH 신호를 보내주게 되는데 이 신호가 26~28us 동안 보냈다면 '0'을 의미하고, 70us 동안 보냈다면 '1'을 보낸다.

4. 소스(C)

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstdint>
#include <wiringPi.h>
#define DHT11 1
using namespace std;

class dht11{
    uint8_t data[5];
public:
    dht11();
    void Send();
    void Response();
    void Process();
    int GetData();
};
dht11::dht11()
{
    for(int i = 0 ; i < 5 ; i++)
    {
        data[i] = 0;
    }
}
void dht11::Send()
{
    pinMode(DHT11, OUTPUT);        // MCU send out start siganl
    digitalWrite(DHT11, LOW);    // and pulls down voltage
    delay(20);            // for at least 18ms to let DHT11 detect the signal
    digitalWrite(DHT11, HIGH);    // MCU pulls up voltage
    delayMicroseconds(30);        // and waits for DHT respons(20~40)us
} // 5.2 MCU Sends out Start Signal to DHT
void dht11::Response()
{
    pinMode(DHT11, INPUT);

    while(digitalRead(DHT11)!=LOW);  // DHT send out a low-voltage-level response signal
    while(digitalRead(DHT11)!=HIGH); // DHT pulls up voltage and keeps it for 80us and prepares for data transmisson
    while(digitalRead(DHT11)!=LOW);  // Start to transmit next bit data
} 
int dht11::GetData()
{
    int count = 0;
    int j;
    for(j = 0 ; j < 40 ; j++)
    {
        count = 0;
        while(digitalRead(DHT11) == LOW)
        {
            delayMicroseconds(1);
            count++;
            if(count >= 255) return -1;     // start to transmit 1-bit data(50us)
        } // When DHT is sending data to MCU, every bit of data begins with the 50us low-voltage-level
        count = 0;
        while(digitalRead(DHT11) == HIGH)
        {
            delayMicroseconds(1);
            count++;
            if(count >= 255) return -1;
        }
        data[j/8] <<= 1;
        if(count > 30)
        {
            data[j/8] |= 1;
        } // the length of the following high-voltage-level signal determines whether data bit is "0" or "1"
          // 26-28us voltage-length means data "0"
          // 70us voltage-length means data "1"
    }

    if((j>=40)&&(data[4] == data[0] + data[1] + data[2] + data[3]))
    {
        printf("hum = %d, temp = %d\n", data[0], data[2]);
        return -1;
    }
    else
    {
        // cout << "error";
        return -1;
    } // parity bit(data[4])
} // 5.3 DHT Response to MCU
void dht11::Process()
{
    Send();
    Response();
    int result = GetData();
}
int main()
{
    if(wiringPiSetup() == -1)
        exit(1);
    dht11 mdht11;
    while(1)
    {
        mdht11.Process();
        delay(1000);        // wait 1s
    }
}
 

5. 실행 화면

 

728x90
728x90

본 문서는 표윤석 박사님의 youtube ROS 강의와 github를 참조하여 작성되었습니다.

1. ROS의 용어

  • Node : 최소 단위의 실행 가능한 프로세서. 하나의 실행 가능한 프로그램. ROS에서는 최소한의 실행단위로 프로그램을 나누어 작업하게 된다. 각 노드는 메시지 통신으로 데이터를 주고 받는다.

  • Package : 하나 이상의 노드, 노드 실행을 위한 정보 등을 묶어 놓은 것. 또한, 패키지의 묶음을 메타패키지라 하여 따로 분리한다.

  • Message : 메시지를 통해 노드간의 데이터를 주고받게 된다. 메시지는 interger, floating, point, boolean과 같은 변수형태이다. 또한, 메시지 안에 메시지를 품고 있는 간단한 데이터 구조 및 메시지들의 배열과 같은 구조도 사용할 수 있다.

  • 메시지의 종류

    • Topic : 단방향, 연속성을 가진 통신 방법. 1:1 뿐만아니라 1:N, N:1, N:N 통신도 가능. 일방적인 데이터를 계속 보낼 때 많이 사용. 센서 데이터 송수신에 많이 사용됨.

      • Publisher Node : 메시지를 보내는 쪽

      • Subscriber Node : 메시지를 받는 쪽

    • Service : 양방향, 1회성인 통신 방법.

    • Action : 명령을 내리면 중간 피드백을 보내주고 마지막에 결과 값을 전송해줌. 복잡하고 장시간 테스트, 중간중간 결과값을 알고싶은 테스트에 쓰임.

    • Parameter : 변수를 네트워크에 지정해 놓고 그 변수를 외부에서 변경시키고 다른 노드에서 받아서 프로세스를 바꿀수 있음.

2. 메시지 통신

ROS에서 가장 기본이 되는 기술적 포인트인 노드간의 메시지 통신이다.

1. 마스터 구동 : XMLRPC(XML-Remote Procedure Call)

`$ roscore` 실행시키면 노드 정보를 관리하고 노드간의 통신을 연결시켜주는 매개체 역할을 하는 마스터가 구동된다. XMLRPC라는 XML기반의 간단한 서버 클라이언트 시스템을 구동한다고 볼 수 있다.

2. Subscriber Node(Node 2) 구동

`$ rosrun 패키지이름 노드이름` 으로 Subscriber Node를 실행시키면 노드의 정보(노드의 이름, 토픽의 이름, 메시지의 형태, IP번호와 포트번호)를 마스터에게 전달해준다.

3. Publisher Node(Node 1) 구동

`$ rosrun 패키지이름 노드이름` 으로 Publisher Node를 실행시키면 2번과 같이 노드의 정보를 마스터에게 전달해 준다.

4. Publisher 정보 알림

마스터는 노드 간의 토픽이름과 메시지의 형태를 매칭하여 Subscriber Node에게 새로운 Publisher 정보를 알린다.

5. Publisher Node에 접속 요청

마스터로부터 받은 Publisher 정보를 이용하여 TCPROS 접속을 요청

6. Subscriber Node에 접속 응답

접속 응답에 해당하는 자신의 TCP URI 주소와 포트번호를 전송

7. TCP 접속

TCPROS를 이용하여 퍼블리셔 노드와 직접 연결한다.

8. 메시지 전송

Publisher Node는 Subscriber Node에게 메시지를 전송 (토픽)

9. 서비스 요청 및 응답

1회에 한해 접속, 서비스 요청 및 서비스 응답이 수행되고 서로간의 접속을 끊는다.

tutlesim 패키지를 예제로 들어보자

먼저 `roscore`로 마스터를 구동시킨 후 `rosrun turtlesim turtlesim_node`를 실행시켜 Subscriber Node를 구동한 후 `rosrun tutlesim tutle_teleop_key`를 실행시켜 Publisher Node를 구동한다.

3. ROS 메시지

메시지는 노드 간에 데이터를 주고받을 때 사용하는 데이터의 형태

  • 토픽, 서비스, 액션은 모두 메시지를 사용

  • 단순 자료형으로 이루어져 있음

  • 메시지 안에 메시지를 품고 있는 간단한 데이터 구조

  • 메시지들이 나열된 배열과 같은 구조

ex) geometry_msgs/Twist

728x90

'Programming > Ros' 카테고리의 다른 글

Ros 개발환경 구축  (2) 2019.07.15
Ros란 무엇인가?  (0) 2019.07.11
728x90

본 문서는 표윤석 박사님의 youtube ROS 강의와 github를 참조하여 작성되었습니다.

1. 한줄설치

ubuntu 터미널에서 wget https://raw.githubusercontent.com/ROBOTIS-GIT/robotis_tools/master/install_ros_kinetic.sh && chmod 755 ./install_ros_kinetic.sh && bash ./install_ros_kinetic.sh 를 실행하면 자동으로 설치가 된다.

다운로드된 파일 install_ros_kinetic.sh은 다음과 같다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#!/bin/bash
# Apache License 2.0
# Copyright (c) 2017, ROBOTIS CO., LTD.
echo ""
echo "[Note] Target OS version >>> Ubuntu 16.04.x (xenial) or Linux Mint 18.x"
echo "[Note] Target ROS version >>> ROS Kinetic Kame"
echo "[Note] Catkin workspace   >>> $HOME/catkin_ws"
echo ""
echo "PRESS [ENTER] TO CONTINUE THE INSTALLATION"
echo "IF YOU WANT TO CANCEL, PRESS [CTRL] + [C]"
read
echo "[Set the target OS, ROS version and name of catkin workspace]"
name_os_version=${name_os_version:="xenial"}
name_ros_version=${name_ros_version:="kinetic"}
name_catkin_workspace=${name_catkin_workspace:="catkin_ws"}
echo "[Update the package lists and upgrade them]"
sudo apt-get update -y
sudo apt-get upgrade -y
echo "[Install build environment, the chrony, ntpdate and set the ntpdate]"
sudo apt-get install -y chrony ntpdate build-essential
sudo ntpdate ntp.ubuntu.com
echo "[Add the ROS repository]"
if [ ! -/etc/apt/sources.list.d/ros-latest.list ]; then
sudo sh -"echo \"deb http://packages.ros.org/ros/ubuntu ${name_os_version} main\" > /etc/apt/sources.list.d/ros-latest.list"
fi
echo "[Download the ROS keys]"
roskey=`apt-key list | grep "Open Robotics"`
if [ -"$roskey" ]; then
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
fi
echo "[Check the ROS keys]"
roskey=`apt-key list | grep "Open Robotics"`
if [ -"$roskey" ]; then
echo "[ROS key exists in the list]"
else
echo "[Failed to receive the ROS key, aborts the installation]"
exit 0
fi
echo "[Update the package lists and upgrade them]"
sudo apt-get update -y
sudo apt-get upgrade -y
echo "[Install the ros-desktop-full and all rqt plugins]"
sudo apt-get install -y ros-$name_ros_version-desktop-full ros-$name_ros_version-rqt-*
echo "[Initialize rosdep]"
sudo sh -"rosdep init"
rosdep update
echo "[Environment setup and getting rosinstall]"
source /opt/ros/$name_ros_version/setup.sh
sudo apt-get install -y python-rosinstall
echo "[Make the catkin workspace and test the catkin_make]"
mkdir -p $HOME/$name_catkin_workspace/src
cd $HOME/$name_catkin_workspace/src
catkin_init_workspace
cd $HOME/$name_catkin_workspace
catkin_make
echo "[Set the ROS evironment]"
sh -"echo \"alias eb='nano ~/.bashrc'\" >> ~/.bashrc"
sh -"echo \"alias sb='source ~/.bashrc'\" >> ~/.bashrc"
sh -"echo \"alias gs='git status'\" >> ~/.bashrc"
sh -"echo \"alias gp='git pull'\" >> ~/.bashrc"
sh -"echo \"alias cw='cd ~/$name_catkin_workspace'\" >> ~/.bashrc"
sh -"echo \"alias cs='cd ~/$name_catkin_workspace/src'\" >> ~/.bashrc"
sh -"echo \"alias cm='cd ~/$name_catkin_workspace && catkin_make'\" >> ~/.bashrc"
sh -"echo \"source /opt/ros/$name_ros_version/setup.bash\" >> ~/.bashrc"
sh -"echo \"source ~/$name_catkin_workspace/devel/setup.bash\" >> ~/.bashrc"
sh -"echo \"export ROS_MASTER_URI=http://localhost:11311\" >> ~/.bashrc"
sh -"echo \"export ROS_HOSTNAME=localhost\" >> ~/.bashrc"
source $HOME/.bashrc
echo "[Complete!!!]"
exit 0
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none;color:white">cs


2. 수동 설치

우선 http://wiki.ros.org/ 에 접속한다. Install을 클릭해 다음 화면으로 넘어간다.

ROS 설치 옵션이 2가지가 있는데 본인의 우분투 버전이 16이라면 ROS Kinetic Kame을 18이라면 ROS Melodic Morenia를 선택한다.

다음으로 본인의 운영체제를 선택한다.

그 후로 다음 순서에 따라 설치를 진행한다.

1. source.list 설정

ROS 패키지 저장소를 설정해준다.

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

2. key 설정

sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

만약 keyserver 연결에 문제가 있다면 hkp://pgp.mit.edu:80 이나 hkp://keyserver.ubuntu.com:80 를 위 명령어에 'hkp://keyserver.ubuntu.com:80' 대신에 입력한다.

3. 설치

설치 전에 우분투 업데이트를 해준다.

sudo apt-get update

ROS에는 설치 종류를 3가지를 제시하고 있는데 전체설치 버전인 Desktop-Full Install 부터 최소 설치 버전인 ROS-Base 까지 있다. ROS에서는 Desktop-Full Install을 권장하고 있다. 만약 Desktop-Full Install로 설치를 하지 않아도 Individual Package 방법을 이용해서 개별적으로 패키지를 다운로드 받을 수 있다.

  • Desktop-Full Install: (Recommended) : ROS, rqt, rviz, robot-generic libraries, 2D/3D simulators, navigation and 2D/3D perception

    • sudo apt-get install ros-kinetic-desktop-full

  • Desktop Install: ROS, rqt, rviz, and robot-generic libraries

    • sudo apt-get install ros-kinetic-desktop

  • ROS-Base: (Bare Bones) ROS package, build, and communication libraries. No GUI tools.

    • sudo apt-get install ros-kinetic-ros-base

  • Individual Package: You can also install a specific ROS package (replace underscores with dashes of the package name):

    • sudo apt-get install ros-kinetic-PACKAGE

      e.g

    • sudo apt-get install ros-kinetic-slam-gmapping

To find available packages, use:

apt-cache search ros-kinetic

4. rosdep 초기화

ROS를 사용하기 전에 rosdep를 초기화 해주고 업데이트를 해준다.

sudo rosdep init

rosdep update

5. 환경 설정

쉘을 실행시킬때마다 환경변수를 자동적으로 설정되도록 하는 설정

echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc

source ~/.bashrc

6. 추가 의존성 패키지 설치

sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential

7. ROS Workspace 생성

catkin 작업공간을 만들고 빌드를 해본다.

mkdir -p ~/catkin_ws/src

cd ~/catkin_ws/

catkin_make

처음 catkin_make로 실행을 하면 ~/catkin_ws/src폴더 안에 CMakeLists.txt파일이 생성된다. 그리고 builddevel폴더가 생성된다. devel폴더 안에는 설정과 관련된 .sh파일들이 있다.

source devel/setup.bash

설정 스크립트에 overlay 시켜주기 위해서ROS_PACKAGE_PATH 환경변수를 포함시켜줘야 한다.

echo $ROS_PACKAGE_PATH

설치를 완료했다면 터미널 창에서 roscore 을 실행시킨 후 새로운 터미널을 열어 rosrun turtlesim turtlesim_node를 실행시키면 다음과 같은 화면이 나오게 된다.

또 다른 터미널을 열어 rosrun turtlesim turtle_teleop_key를 실행시킨 후 방향키를 누르게되면 거북이가 움직이게 된다. 이것이 정상적으로 실행된다면 이상없이 설치가 완료된 것이다.

 

728x90

'Programming > Ros' 카테고리의 다른 글

Ros의 중요 컨셉  (0) 2019.07.25
Ros란 무엇인가?  (0) 2019.07.11
728x90

1. wiringPi

wiringPi는 라즈베리파이에서 사용하는 GPIO 사용을 위한 C언어 라이브러리다. wiringPi를 이용하면 아두이노같은 문법으로 사용할 수 있다.

2. 설치

터미널에 git clone git://git.drogon.net/wiringPi를 입력해서 wiringPi 소스코드를 다운받는다.

 

wiringPi 소스코드를 다운 받았다면 wiringPi 폴더로 들어가 git pull origin 명령어를 입력한 후 ./build로 실행한다.

 

정상적으로 설치가 완료되었다면 gpio readall 명령어를 입력하면 다음과 같이 본인 파이의 gpio map이 출력된다.

 

여기서 Physical은 파이 우측 상단에 있는 핀 배열이고 그에 해당하는 이름들, 우리가 사용되는 wPi가 있다. wiringPi를 이용하여 프로그래밍할때는 Physical의 번호가 아닌 wPi의 번호를 이용해 프로그래밍한다.

 

자료출처

- 서영진, 사물인터넷을 위한 리눅스 프로그래밍 with 라즈베리파이 책, 제이펍, p.112

728x90
728x90

라즈베리파이는 RTC(Real Time Clock) 기능이 없어 부팅시에 시간을 설정해줘야하는 단점이 있다. 부팅할때 마다 자동으로 시간을 동기화해주는 작업을 해줄 예정이다.

 

먼저 sudo apt-get update를 실행해주고, 다음으로 sudo apt-get install rdate 를 입력해준다.

설치가 완료됐으면 sudo /usr/bin/rdate -s time.bora.net을 입력 후 date를 실행해 확인해보면 시간이 제대로 설정된것을 볼 수 있다.

부팅 시 마다 위와 같은 실행을 자동으로 해주기 위해 sudo nano /etc/rc.local 로 파일을 열어 전에 했던 명령어들을 아래와 같이 입력해준다.

 

자료 출처

728x90
728x90

본 포스팅은 표윤석 박사님의 youtube 강의와 자료들을 토대로 작성하였습니다.

자료 출처

- 표윤석 박사님의 ROS Courses, ROS 강의 Chapter2. 로봇 운영체제 ROS,https://www.youtube.com/watch?v=KcIUl3WH-C8&list=PLRG6WP3c31_VIFtFAxSke2NG_DumVZPgw&index=2

- ros-seminar pdf Github Link, https://github.com/robotpilot/ros-seminar

- ros wiki, http://wiki.ros.org/ko/ROS/Introduction

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. It also provides tools and libraries for obtaining, building, writing, and running code across multiple computers.
  • 로봇 소프트웨어를 개발하기 위한 소프트웨어 프레임워크
    • 노든간에 메시지 교환 방법으로 복잡한 프로그램을 나눠 공동 개발 가능
    • 명령어 도구, 시각화 도구 Rviz. GUI 도구 모음 rqt, 3차원 시뮬레이터 Gazebo 지원
    • 로보틱스에서 많이 사용되는 모델링, 센싱, 인식, 내비게이션, 매니퓰레이션 기능 지원

Ros 특징

1. 이기종 디바이스 간의 통신 지원

  • Ros를 깔고 앱 사용 시 다른 운영체제, 로봇간에 움직이거나 데이터를 주고받을 수 있음

2. 유닉스 기반의 다양한 운영체제에서 사용 가능

  • Ubuntu, OS X, Windows, Fedora, Gentoo, OpenSUSE, Debian, Raspbian, Arch, QNX REaltime OS 등이 있으나 기능 제한사항이 있을 수 있다.
  • Android. iOS의 경우 부분적으로 사용 가능
  • OS를 탑재할 수 없는 마이크로 컨트롤러 유닛(MCU)의 경우 시리얼 통신, 블루투스, LAN 경유로 통신할 수 있는 라이브러리 제공
  • 기본적으로 Ubuntu, OS X에서 구동하는 것을 추천

3. 통신 인프라

  • 노드 간 데이터 통신을 제공
  • 통상적 미들웨어로 지칭되는 메시지 전달 인터페이스 지원
  • 메시지 파싱 기능
    • 로봇 개발 시에 빈번히 사용되는 통신 시스템 제공
    • 캡슐화 및 코드 재사용을 촉진하는 노드들 간의 메시지 전달 인터페이스
  • 메시지의 기록 및 재생
    • 노드 간 송/수신되는 데이터인 메시지를 저장하고 필요시에 재사용 가능
    • 저장된 메시지를 기반으로 반복적인 실험 가능, 알고리즘 개발에 용이
  • 메시지 사용으로 인한 다양한 프로그래밍 언어 사용 가능
    • 노드 간의 데이터 교환이 메시지를 사용하기 때문에 각 노드는 서로 다른 언어로 작성 가능
    • 클라이언트 라이브러리 : roscpp, rospy, oslisp, rosjava, roslua, roscs, roseus, PhaROS, rosR
  • 분산 매개 변수 시스템
    • 시스템에서 사용되는 변수를 글로벌 키 값으로 작성하여 공유 및 수정하여 실시간으로 반영

4. 로봇 관련 다양한 기능

  • 로봇에 대한 표준 메시지 정의
  • 로봇 기하학 라이브러리 제공
  • 로봇 기술 언어
  • 진단 시스템 제공
  • 센서 드라이버, 센싱/인식 레벨의 라이브러리 제공
  • 로봇에서 많이 사용되는 롭소의 포즈 추정, 지대 내의 자기 위치 추정 제공하며, 지도 작성에 필요한 SLAM, 작성된 지도 내에서 목적지를 찾아가는 Navigation 라이브러리 제공
  • 로봇 암에 사용되는 IK, FK는 물론 응용단의 Pick and Place를 지원하는 다양한 Manipulation 라이브러리를 제공
  • GUI 형태의 Manipulation Tools 제공 (MoveIt!)

5. 다양한 개발 도구

  • 로봇 개발에 필요한 다양한 개발 도구를 제공
    • Command-Line Tools
      • GUI 없이 ROS에서 제공되는 명령어로만 로봇 엑세스 및 거의 모든 ROS 기능 소화
    • RViz
      • 강력한 3D 시각화 툴 제공
      • 레이저, 카메라 등의 센서 데이터를 시각화
      • 로봇 외형과 계획된 동작을 표현
    • RQT
      • 그래픽 인터페이스 개발을 위한 Qt 기반 프레임 워크 제공
      • 노드와 그들 사이의 연결 정보 표시(rqt_graph)
      • 인코더, 전압, 또는 시간이 지남에 따라 변화하는 숫자를 플로팅(rqt_plot)
      • 데이터를 메시지 형태로 기록하고 재생(rqt_bag)
    • Gazebo
      • 물리 엔진을 탑재, 로봇, 센서, 환경 모델 등을 지원, 3차원 시뮬레이터
      • ROS와의 높은 호완성을 가
  • 로봇 개발의 효율성 향상
728x90

'Programming > Ros' 카테고리의 다른 글

Ros의 중요 컨셉  (0) 2019.07.25
Ros 개발환경 구축  (2) 2019.07.15
728x90

1. 삼바(Samba)란?

Windows 운영체제를 사용하는 PC에서 Linux 또는 Unix 서버에 접속하여 파일이나 프린터를 공유하여 사용할 수 있도록 해주는 소프트웨어이다.

2. 삼바 설치

터미널에서 sudo apt-get update을 입력하여 업데이트를 해준 다음 sudo apt-get install samba samba-common-bin명령어를 이용하여 설치한다.

3. 삼바 유저 추가 및 패스워드 설정

설치가 완료되었다면 sudo smbpasswd -a pi 명령어를 입력해 비밀번호를 설정해야 한다. 설정한 다음 sudo nano /etc/samba/smb.conf로 들어간다.

smb.conf 파일에 들어온 후 다음과 같이 수정한다.

comment = 유저 서버 설정에 대한 코멘트
path = 삼바 서버 접속 시 최초 화면
vaild user = 사용 가능한 유저
writable = 쓰기 허용 여부
read only = 읽기만 가능하게 하는 지
browseable = 공유 폴더의 목록을 보여주는 옵션

을 입력 후 에디터를 빠져나오고 sudo service samba restart 명령어를 입력해 서비스를 재실행 시켜준다. 만약 다음과 같이 Failed to restart samba.service 오류가 뜨게 된다면 sudo service smbd restart 명령어로 재실행 시켜준다.

4. 삼바 접속

라즈베리파이쪽에서 설정을 모두 했다면 윈도우 R키를 눌러 실행창에 들어간 후 다음과 같이 입력해준다.

다음과 같은 창이 뜨게 된다면 설정해준 id, password를 입력해주면 된다.

 

자료 출처

- 지구빵집, 라즈베리 파이 삼바 서버 접속과 설치방법 - 삼바서버, 삼바설치, https://fishpoint.tistory.com/1553

728x90

+ Recent posts

Buy Me A Coffee