ROS 사용자를 위한 conda 환경 구축
로컬 환경도 더러워지고 ....
코드를 움직이면서 기계 학습을 배울 수 있는 교재 등에서는 Anaconda나 Miniconda를 사용하고 있는 것을 자주(잘) 봅니다.
그리고 이러한 환경을 만들 때 ROS 사용자는 비교적 곤란한 경우가 많습니다만, 의외로 기사가 적기 때문에 여기에 남기기로 했습니다. 환경은 다음과 같습니다.
Miniconda 설치
여기에서 Python3.7의 64bit 버전 다운로드
$ cd ~/Downloads
$ bash Miniconda3-latest-Linux-x86_64.sh
위의 명령을 실행하고 터미널의 지시에 따라 설치를 진행합니다.
마지막으로
conda init
를 실행할지 묻기 때문에, yes라고 대답하면 환경 구축은 종료가 됩니다.성공적으로 설치할 수 있다면
conda init
를 실행할 때 어떤 일이 일어나는지 알아보십시오..bashrc가 편집되기 때문에 내용을 일단 확인해 봅시다.
추기된 것은 다음 부분입니다.
여기서 주의!
.bashrc로 ROS를 읽는 경우
conda init
때 다음과 같은 경고가 발생합니다.ROS 환경을 읽고 있다면 PYTHONPATH가/opt/ros/melodic/lib/python2.7/dist-packages를 가리키게 되었기 때문입니다.
따라서 설치하기 전에 ROS 로딩을 비활성화하십시오.
conda를 이용한 ROS 환경 구축
아래 명령을 치는 것만
$ conda create --name ros --channel conda-forge ros-core ros-actionlib ros-dynamic-reconfigure python=2.7
$ conda activate ros
이것만으로, conda의 가상 환경상에 ROS의 환경이 생기는 것이 편리하네요.
roscore, rosrun, roslaunch 등의 기본 명령을 사용할 수 있습니다.
자체 제작 패키지
conda를 사용한 가상 환경에서 ROS를 움직이는 것에 신경이 쓰이는 것은 자작 패키지입니다.
이번에는 ROS1을 사용하고 있으므로 C++로 패키지 등을 작성하면 catkin_make가 필요합니다.
htps : // 기주 b. 코 m / 나카 16180 / 로 scp p_p 등 c 치세
위의 링크 패키지를 이번에 사용했습니다.
흠집
본래라면 github 패키지를 clone하고 catkin_make하면 rosrun으로 시작할 수 있습니다.
그러나 이번은 멈춘 것은 이쪽. pthread에 대한 경로가 통과하지 않은 패턴?
이 문제를 해결하기 위해 CMakeLists.txt를 다음과 같이 편집했습니다.
CMakeLists.txt
CMakeLists.txt
cmake_minimum_required(VERSION 2.8.3)
project(roscpp_practice)
## Compile as C++11, supported in ROS Kinetic and newer
# add_compile_options(-std=c++11)
## Find catkin macros and libraries
## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz)
## is used, also find other catkin packages
find_package(catkin REQUIRED COMPONENTS
roscpp
std_msgs
rosbag
)
## System dependencies are found with CMake's conventions
find_package(Boost REQUIRED COMPONENTS system)
find_package(Threads REQUIRED) # ここ追記
## Uncomment this if the package has a setup.py. This macro ensures
## modules and global scripts declared therein get installed
## See http://ros.org/doc/api/catkin/html/user_guide/setup_dot_py.html
# catkin_python_setup()
###########
## Build ##
###########
## Specify additional locations of header files
## Your package locations should be listed before other locations
include_directories(
# include
${catkin_INCLUDE_DIRS}
)
## Declare a C++ library
# add_library(${PROJECT_NAME}
# src/${PROJECT_NAME}/roscpp_practice.cpp
# )
## Add cmake target dependencies of the library
## as an example, code may need to be generated before libraries
## either from message generation or dynamic reconfigure
# add_dependencies(${PROJECT_NAME} ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
## Declare a C++ executable
## With catkin_make all packages are built within a single CMake context
## The recommended prefix ensures that target names across packages don't collide
# add_executable(${PROJECT_NAME}_node src/roscpp_practice_node.cpp)
add_executable(talker src/talker.cpp)
add_executable(listener src/listener.cpp)
add_executable(bag_write src/bag_write.cpp)
add_executable(bag_read src/bag_read.cpp)
## Rename C++ executable without prefix
## The above recommended prefix causes long target names, the following renames the
## target back to the shorter version for ease of user use
## e.g. "rosrun someones_pkg node" instead of "rosrun someones_pkg someones_pkg_node"
# set_target_properties(${PROJECT_NAME}_node PROPERTIES OUTPUT_NAME node PREFIX "")
## Add cmake target dependencies of the executable
## same as for the library above
# add_dependencies(${PROJECT_NAME}_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
## Specify libraries to link a library or executable target against
# target_link_libraries(${PROJECT_NAME}_node
# ${catkin_LIBRARIES}
# )
target_link_libraries(talker
${catkin_LIBRARIES}
Threads::Threads ##追記
)
target_link_libraries(listener
${catkin_LIBRARIES}
Threads::Threads ##追記
)
target_link_libraries(bag_write
${catkin_LIBRARIES}
Threads::Threads ##追記
)
target_link_libraries(bag_read
${catkin_LIBRARIES}
Threads::Threads ##追記
)
이상과 같이 편집해 하는 것으로 무사, build 해 실행할 수 있었습니다.
마지막으로
여기까지 쓰고 있어요만, Python3계를 사용할 수 있는 ROS2에 빨리 이행합시다!
Reference
이 문제에 관하여(ROS 사용자를 위한 conda 환경 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/KN_Apple/items/b3da9b996a91449a9718텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)