28 May 2020
|
Flutter
Intelli J에서는 PATH 경로를 체크해서 Flutter의 설치 여부를 확인합니다.
.zshrc에 다음과 같은 alias를 추가해준 다음 터미널을 통해 intelliJ로 실행하면
Intelli J에서 Flutter를 사용할 수 있습니다.
# for Flutter
export PATH=$PATH:~/Development/flutter/bin
alias intelliJ="open '/Applications/IntelliJ IDEA CE.app/'"
28 May 2020
|
Flutter
Setup
flutter channel dev
flutter upgrade
flutter config --enable-macos-desktop
Device 확인
그 이후 flutter devices 명령어를 통해 현재 Mac PC가 발견되면 준비 끝입니다.
$ flutter devices
1 connected device:
macOS • macOS • darwin-x64 • Mac OS X 10.15.4 19E287
실행
flutter create snowdeer_flutter
cd snowdeer_flutter
flutter run -d macos
28 May 2020
|
Flutter
Flutter 설치 방법
Flutter를 Mac OS에 설치 하는 방법입니다.
여기에서 Flutter SDK를 다운로드할 수 있으며, 그 중 Mac OS 버전은 여기에서 받을 수 있습니다.
설치 후 다음 명령어로 Flutter를 설치합니다.
mkdir ~/Development
cd ~/Development
unzip ~/Downloads/flutter_macos_1.17.2-stable.zip
그리고 .zshrc 파일에 아래 부분을 추가합니다.
# for Flutter
export PATH=$PATH:~/Development/flutter/bin
Pre-download Development Binaries
flutter precache
Flutter doctor
설치 후 flutter doctor 명령어를 이용해서 현재 시스템에 부족한 부분이 어떤 것이 있는 지 점검할 수 있습니다.
flutter doctor
점검 사항
안드로이드 라이센스가 수락되어 있지 않으면
flutter doctor --android-licenses
를 해줍니다.
XCode 설치가 불완전하면
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
sudo xcodebuild -runFirstLaunch
sudo gem install cocoapods
를 실행합니다.
Android Studio나 IntelliJ, VSCode 같은 경우는 Flutter 플러그인을 설치해줍니다.
Flutter 프로젝트 생성하기
flutter create snowdeer_flutter
28 May 2020
|
C++
Git Commit Id 및 날짜 획득 방법
CMakeLists.txt 예제
CMakeLists.txt 파일에 다음 명령어를 추가하면 Git Commit Id 및 Commit Date를 얻을 수 있습니다.
add_definitions 명령어를 이용해서 C++ 코드에 전달할 수 있습니다.
execute_process(
COMMAND git log -1 --format=%h
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE GIT_COMMIT_HASH
OUTPUT_STRIP_TRAILING_WHITESPACE
)
execute_process(
COMMAND git log -1 --format=%cd
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE GIT_COMMIT_DATE
OUTPUT_STRIP_TRAILING_WHITESPACE
)
add_definitions("-DVERSION_HASH=\"${GIT_COMMIT_HASH}\"")
add_definitions("-DCOMMIT_DATE=\"${GIT_COMMIT_DATE}\"")
C++ 예제
실제 C++ 코드에서 사용하는 예제는 다음과 같습니다.
#ifndef VERSION_HASH
#define VERSION_HASH "0000000"
#endif
#ifndef COMMIT_DATE
#define COMMIT_DATE ""
#endif
string Prefs::GET_VERSION() {
return VERSION_HASH;
}
string Prefs::GET_COMMIT_DATE() {
return COMMIT_DATE;
}
30 Apr 2020
|
ROS
기본 요소 설치
brew install python3
brew install asio tinyxml2
brew install tinyxml eigen pcre poco
brew install qt freetype assimp
brew install console_bridge
brew install log4cxx
brew install cunit
brew install graphviz
python3 -m pip install pygraphviz pydot
python3 -m pip install lxml
python3 -m pip install catkin_pkg cryptography empy ifcfg lark-parser lxml netifaces numpy pyparsing pyyaml setuptools argcomplete
ROS2 바이너리 다운로드
ROS 2.0 바이너리는 여기에서 다운로드 가능합니다.
mkdir -p ~/ros2_eloquent
cd ~/ros2_eloquent
tar xf ros2-eloquent-20200124-macos-amd64.tar.bz2
설치 확인
. ~/ros2_eloquent/ros2-osx/local_setup.zsh
ros2 run demo_nodes_cpp talker
. ~/ros2_eloquent/ros2-osx/local_setup.zsh
ros2 run demo_nodes_py listener
에러 발생시
Poco 버전 관련 에러
현재 MacOS(Catalina 버전 이후)에서 ROS 2.0 바이너리를 설치한 후 talker, listener와 같은 예제 명령어를 실행하면 아래와 같은 오류 메시지가 나오면서 실행이 되지 않습니다. Poco 라이브러리 버전 때문에 발생하는 문제입니다.
Failed to load entry point 'launch': dlopen(/Users/justinmarple/ros2_eloquent/ros2-osx/lib/python3.7/site-packages/rclpy/_rclpy.cpython-37m-darwin.so, 2): Library not loaded: /usr/local/opt/poco/lib/libPocoFoundation.63.dylib
Referenced from: /Users/justinmarple/ros2_eloquent/ros2-osx/lib/librosidl_typesupport_c.dylib
Reason: image not found
The C extension '/Users/justinmarple/ros2_eloquent/ros2-osx/lib/python3.7/site-packages/rclpy/_rclpy.cpython-37m-darwin.so' failed to be imported while being present on the system. Please refer to 'https://index.ros.org/doc/ros2/Troubleshooting/#import-failing-even-with-library-present-on-the-system' for possible solutions
Failed to load entry point 'info': dlopen(/Users/justinmarple/ros2_eloquent/ros2-osx/lib/python3.7/site-packages/rclpy/_rclpy.cpython-37m-darwin.so, 2): Library not loaded: /usr/local/opt/poco/lib/libPocoFoundation.63.dylib
Referenced from: /Users/justinmarple/ros2_eloquent/ros2-osx/lib/librosidl_typesupport_c.dylib
Reason: image not found
이 경우는 ROS 2.0 을 소스로 다운받아서 빌드 후 설치하거나 아래 명령어로 임시로 실행되도록 헐 수 있습니다.
ln -s /usr/local/opt/poco/lib/libPocoFoundation.71.dylib /usr/local/opt/poco/lib/libPocoFoundation.63.dylib
sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat libsdl1.2-dev xterm
TinyXml2 버전 관련 에러
dyld: Library not loaded: /usr/local/opt/tinyxml2/lib/libtinyxml2.7.dylib
Referenced from: /Users/snowdeer/ros2_eloquent/ros2-osx/lib/libbuiltin_interfaces__rosidl_typesupport_fastrtps_c.dylib
Reason: image not found
만약 위와 같은 오류가 발생한다면 먼저 tinyxml2 라이브러리 버전을 최신으로 설치합니다.
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null 2> /dev/null
brew install tinyxml2
이 글을 포스팅하는 현 시점에는 tinyxml2 8.0이 설치가 되네요. ROS2는 7.0 이후부터 지원합니다. 하지만 바이너리 빌드시 7.0으로 링크가 되어 있기 때문에 8.0을 7.0 버전으로 사용할 수 있도록 다음 명령어를 추가로 실행합니다.
cd /usr/local/opt/tinyxml2/lib
cp libtinyxml2.8.dylib libtinyxml2.7.dylib