ROS ๊ธฐ๋ณธ์ฉ์ด: ํ์ผ์์คํ ๋ ๋ฒจ
- -
Package
๐๐ผ Main unit for organizing software in ROS. A package may contain ROS runtime processes (nodes), a ROS-dependent library, datasets, configuration files
- ROS ์ํํธ์จ์ด๋ฅผ ๊ตฌ์ฑํ๋ ๊ฐ์ฅ ์์ ์ ๋
- ๋ ธ๋, ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ๋ฐ์ดํฐ์ , ์ค์ ํ์ผ ๋ฑ์ ํฌํจํ ์ ์๋ค.
- ํจํค์ง์ ๊ฒฝ๋ก๋ ROS_PACKAGE_PATH ํ๊ฒฝ ๋ณ์์ ์ฐธ์กฐํ๋ฉฐ, ํด๋น ํ๊ฒฝ ๋ณ์์ ๋ฑ๋ก๋ ํจํค์ง๋ง ์ฌ์ฉ ๊ฐ๋ฅ
- catkin build์์ setup.bash ํ์ผ์ ROS_PACKAGE_PATH ๋ฑ ๊ธฐํ ํ๊ฒฝ ๋ณ์๋ฅผ ์ ๋ฐ์ดํธ
์์ฝ


๐๐ผ ๊ธฐ๋ณธ์ ์ธ ๊ตฌ์กฐ
<your-package-name>/
โโโ action
โโโ CMakeLists.txt
โโโ include
โ โโโ <your-package-name>
โโโ msg
โโโ package.xml
โโโ scripts
โโโ src
โโโ srv
- ์ฌ์ฉ์๊ฐ ์์ ๋กญ๊ฒ ๋๋ ํ ๋ฆฌ, ํ์ผ ์ถ๊ฐ ๊ฐ๋ฅ
- CMakeLists.txt: ํจํค์ง ๋น๋, ์ธ์คํจ ๋ฑ์ ์ค์ ํ์ผ
- Package Manifests (package.xml): ํจํค์ง ์ ๋ณด, ์์กด ํจํค์ง ๋ฆฌ์คํธ ๋ฑ
๐๐ผ catkin ๋๊ตฌ๋ฅผ ์ด์ฉํด ํจํค์ง ์์ฑ. ์ฒ์ ์์ฑํ๊ณ ๋๋ฉด...
<your-first-package>/
โโโ CMakeLists.txt
โโโ include
โ โโโ <your-first-package>
โโโ package.xml
โโโ src
๐๐ผ ํ
- ํจํค์ง๋ ์ต์ํ์ ๊ธฐ๋ฅ์ผ๋ก ๋ถ๋ฆฌํ์ฌ ๋ง๋๋ ๊ฒ์ด ๊ด๋ฆฌ์ ์ ๋ฆฌ
- ํนํ Message, Service, Action ๋ฑ์ ๋ฐ๋ก ๋ถ๋ฆฌํ์ฌ ๋ง๋๋๊ฒ ์ถํ ๊ด๋ฆฌ ๋ฐ ๊ฐ๋ฐ์ ์ ๋ฆฌํจ.
- ex) <your_project_name>_msgs
๐๐ผ ์ฌ์ฉ์์ ๋ชจ๋ ํจํค์ง๋ catkin workspace ๋ด์ src ๋๋ ํ ๋ฆฌ ์๋์ ์์นํด์ผ ํจ. (์ค์)
๊ธฐ๋ณธ ํจํค์ง ๊ฒฝ๋ก (ํจํค์ง ๊ด๋ฆฌ์๋ก ์ค์นํ ๊ฒฝ์ฐ): /opt/ros/melodic/share
๐๐ผ ์ฌ์ฉ์์ ํจํค์ง๋ฅผ ๋น๋ํ๋ฉด ROS_PACKAGE_PATH๊ฐ ์ ๋ฐ์ดํธ ๋จ (์๋ก์ด ํจํค์ง์ธ ๊ฒฝ์ฐ)
๐๐ผ ROS_PACKAGE_PATH์ ์ค์ ์ ๋ฐ๋ผ ์ฌ๋ฌ๊ฐ์ workspace๋ฅผ ์ด์ฉ ๊ฐ๋ฅ.
catkin_ws1
โโโ build
โโโ devel
โโโ logs
โโโ src
โโโ <your-package1>
โโโ <your-package2>
...
โโโ <your-packagen>
catkin_ws2
โโโ build
โโโ devel
โโโ logs
โโโ src
โโโ <your-package1>
โโโ <your-package2>
...
โโโ <your-packagen>
๐๐ผ catkin build ํ ros ํด์ ์ด์ฉํด ํจํค์ง๋ก์ ์ ๊ทผ์ด ์๋๋ค๋ฉด? โ ROS_PACKAGE_PATH๋ฅผ ์ ๋ฐ์ดํธ ํด์ค์ผ ํจ
$ source ~/.bashrc
Meta package
๐๐ผ Represent a group of related other packages
- ํจํค์ง์ ํน์ํ ํํ
- ์ด๋ค ํจํค์ง๋ค์ ํน์ ๋ชฉ์ (๋ก๋ด, ์์กด๊ด๋ จ ๋ฑ)์ผ๋ก ๋ฌถ์ ๋ ์ฌ์ฉ
- ๋ฐฐํฌ์ ์์กด์ฑ์ ์ฒดํฌํ ์ ์๋ค.
๊ธฐ์กด ํจํค์ง์ ๊ตฌ๋ถ์ ์ํด package.xml, CMakeLists.txt์ ๊ฐ๊ฐ ๋ฉํ ํจํค์ง๋ฅผ ์ํ ๊ตฌ๋ฌธ ์ถ๊ฐ
package.xml
<export>
<metapackage />
</export>
CMakeLists.txt
cmake_minimum_required(VERSION 2.8.3)
project(<PACKAGE_NAME>)
find_package(catkin REQUIRED)
catkin_metapackage()
Message (.msg) types
๐๐ผ Message descriptions, define the data structures for messages sent in ROS
- ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋, ๋ฉ์์ง์ ๋ด์ฉ์ ์ ์ํ๊ธฐ ์ํ ํ์ผ
- ํ์ฅ์๋ .msg
- ํจํค์ง ๋ด์ msg ๋๋ ํ ๋ฆฌ์ ์์นํ๋๋ก ํจ
๐๐ผ Message Description Specification
The format of this language is simple: a message description is a list of data field descriptions and constant definitions on separate lines
Message ํ์ผ ๊ตฌ์ฑ
field_type1 field_name1
field_type2 field_name2
field_type3 field_name3
Message ์์
float64 x
float64 y
float64 z
Built-in types
Primitive Type | Serialization | C++ | Python2 | Python3 |
---|---|---|---|---|
bool (1) | unsigned 8-bit int | uint8_tย (2) | bool | |
int8 | signed 8-bit int | int8_t | int | |
uint8 | unsigned 8-bit int | uint8_t | intย (3) | |
int16 | signed 16-bit int | int16_t | int | |
uint16 | unsigned 16-bit int | uint16_t | int | |
int32 | signed 32-bit int | int32_t | int | |
uint32 | unsigned 32-bit int | uint32_t | int | |
int64 | signed 64-bit int | int64_t | long | int |
uint64 | unsigned 64-bit int | uint64_t | long | int |
float32 | 32-bit IEEE float | float | float | |
float64 | 64-bit IEEE float | double | float | |
string | ascii string (4) | std::string | str | bytes |
time | secs/nsecs unsigned 32-bit ints | ros::Time | rospy.Time | |
duration | secs/nsecs signed 32-bit ints | ros::Duration | rospy.Duration |
Field Name
- C++, Python ๋ฑ์ผ๋ก translate ๋์ด์ผ ํ๋ฏ๋ก, ์ผ๋ฐ์ ์ธ ํ๋ก๊ทธ๋จ์ธ์ด์ ๊ท์น์ ๋ฐ๋ฆ
- ์์ด, ์ซ์, underscores์ ์กฐํฉ
- ์ซ์๋ก ์์๋๋ ๊ฑด ์๋จ
Constants
- ์์ (Constants)๋ ์ฌ์ฉ ๊ฐ๋ฅ
- =๋ก ์ด๋ฆ๊ณผ ๊ฐ์ ๋ถ๋ฆฌํ๋ค.
constanttype1 CONSTANTNAME1=constantvalue1
constanttype2 CONSTANTNAME2=constantvalue2
ex)
int32 X=123
int32 Y=-123
string FOO=foo
Header
- Frame ID๋ ์๊ฐ ๋ฑ์ด ํฌํจ
- ROS์์ ์ ๊ณตํ๋ ํน์ํ ํํ์ ๋ฉ์์ง ํ์
- std_msgs/msg/Header.msg์ ์ ์๋์ด ์์
Header header
Header.msg
#Standard metadata for higher-level flow data types
#sequence ID: consecutively increasing ID
uint32 seq
#Two-integer timestamp that is expressed as:
# * stamp.secs: seconds (stamp_secs) since epoch
# * stamp.nsecs: nanoseconds since stamp_secs
# time-handling sugar is provided by the client library
time stamp
#Frame this data is associated with
string frame_id
Service (.srv) types
๐๐ผ Service descriptions, define the request and response data structures for services in ROS
- ์๋น์ค๋ฅผ ์ ์ ํ๊ธฐ ์ํ ํ์ผ
- ํ์ฅ์๋ .srv
- ํจํค์ง ๋ด์ srv ๋๋ ํ ๋ฆฌ ๋ด์ ์์น
๐๐ผ Service Description Specification: consists of a request and a response msg type, separated by โ---'.
field_type field_name_requests
---
field_type field_name_responses
- โ---'๋ก request, response ๊ตฌ๋ถ.
- ๋ชจ๋ ๋ฉ์์ง ํ์ ์ฌ์ฉ ๊ฐ๋ฅ
- ์ฌ๋ฌ ๊ฐ์ request, reponse๋ ์ฌ์ฉ ๊ฐ๋ฅ
- ๋ฉ์์ง์๋ ๋ฐ๋๋ก ๋ง๋ค์ด์ ธ ์๋ ๊ฒ์ด ๊ฑฐ์ ์์ (๋ชจ๋ ์กฐํฉ์ ๋ผ ์ ์์ผ๋...), ํ์ํ ๋๋ง๋ค ๋ง๋ค์ด์ ์ฌ์ฉํด์ผ ํจ
Action (.action) types
๐๐ผ Action descriptions, define the goal, feedback, result data structures for actions in ROS
- Action์ ์ ์ ํ๊ธฐ ์ํ ํ์ผ
- ํ์ฅ์๋ .action
- ํจํค์ง ๋ด์ action ๋๋ ํ ๋ฆฌ ๋ด์ ์์น
๐๐ผ Action Description Specification: consists of a goal, result and feedback msg type, separated by โ---'.
fieldtype1 fieldname_for_goal
---
fieldtype2 fieldname_for_result
---
fieldtype3 fieldname_for_feedback
- โ---'๋ก goal, result, feedback ๊ตฌ๋ถ
- ๋ชจ๋ ๋ฉ์์ง ํ์ ์ฌ์ฉ ๊ฐ๋ฅ
- ์๋น์ค์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ง๋ค์ด์ ธ ์๋ ๊ฒ์ด ๊ฑฐ์ ์์ (๋ชจ๋ ์กฐํฉ์ ๋ผ ์ ์์ผ๋...), ํ์ํ ๋๋ง๋ค ๋ง๋ค์ด์ ์ฌ์ฉํด์ผ ํจ.
Uploaded by N2T
'python > ROS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ROS ๊ธฐ๋ณธ์ฉ์ด: ๊ทธ๋ํ ๋ ๋ฒจ (0) | 2023.04.06 |
---|---|
ROS ๊ธฐ๋ณธ์ค์ต (0) | 2023.04.06 |
๋์คํฌ ๊ณต๊ฐ ํ๋ณดํ ์ฐ๋ถํฌ ์ค์น (0) | 2023.04.04 |
ROS ๊ธฐ๋ณธ๋ช ๋ น์ด (0) | 2023.04.04 |
ROS (0) | 2023.04.04 |
์์คํ ๊ณต๊ฐ ๊ฐ์ฌํฉ๋๋ค