부트캠프에서 Cmd+Space 로 한영전환 하기


글을 쓴 적이 있는데.. 

이번엔 CapsLock 으로 한영전환하기를 해봤다. 사실 난 안쓰지만... 형의 요구로...


CapsLock 키를 주로 쓰는 사람이 많이 없으니 요즘 Control 키 등으로 매핑해서 사용하는 사람이 많아지는 것 같다.

나의 경우도 맥에서 Expose(바뀐 이름을 모르겠다)로 매핑해서 사용중이기도 하고.


기본적으론 한영전환으로 바꾸지만 조금만 바꾸면 다른키로 매핑도 가능.


겪은 과정을 다 적을거라서

(1) 레지스트리 수정으로 CapsLock -> 한/영전환 매핑

(2) AutoHotKey 를 이용하여 CapsLock -> 한/영전환 매핑 및 LED 제어

두개의 글을 작성한다.


====================


레지스트리 수정으로 키매핑을 하는 방법은

키보드의 설정 바꾸기 #1 Registry Scancode Map 수정 Shift+Space 한영전환 Capslock2Ctrl

글을 조금 수정하면 된다.


요약하자면


HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout

경로에 "Scancode Map" 이름으로 2진값 항목을 만들어서

00000000 00000000 02000000 72003a00 00000000

내용을 적어주면 되지만 그냥


CapsLock2IME.reg


얘를 다운받아서 실행시켜줘도 된다.


이미 비슷한 프로그램이나 방법으로 설정한 적이 있다면 덮어써지니 주의.



== 참고 ==


Microsoft MSDN - Keyboard and mouse class drivers


CapsLock: 0x003A

한/영: 0x0072


== Git ==

https://github.com/iolate/CapsLockIME

'기타' 카테고리의 다른 글

Prism 설정  (0) 2018.11.27
[Win] CapsLock 키로 한영전환하기 - (2) AutoHotKey 를 이용하여 매핑 / LED 제어  (4) 2016.10.09
dd-wrt dns 설정  (1) 2015.01.15
청소년 나이 제한 정리  (0) 2014.01.28
티스토리 RSS 설정  (6) 2013.12.05

ROS 는 TCP layer에서 두개 이상의 기기의 Communication 도 지원한다.

두 기기가 같은 공유기를 잡고있다면 IP 설정만으로 되고, 그게 아니라면 두 기기를 이더넷케이블 등으로 직접 연결한다음에 설정을 해주면 됨.


편의상 두 기기는 P (Primary, Master) / S (Secondary, Slave) 로 표기한다.


1. 두 기기의 연결

우선 두 기기가 라우터나 스위치를 끼고 물려있다면 상관없지만, 이더넷 케이블로 서로 다이렉트 연결할 것이라면 static ip 설정을 해줘야한다.

이미 공유기 등을 통해 서로 접근가능한 상태라면 건너뛰자!


예전엔 crossover cable 이라고, 이런 목적으로 사용할때 tx/rx 를 바꿔서 만든 utp 케이블을 사용해야하는데, 요즘 기기는 알아서 인식한다. 오히려 crossover cable 을 사용하면 인식을 못하기도 하니, 10년 넘은 장비가 아니라면 그냥 일반 utp 케이블을 꼽도록 하자.


여튼, 두 기기 모두 /etc/networking/interfaces 파일을 열어서 아래 구문을 추가해준다.

인터페이스 이름(eth0)은 필요시 알아서 수정하고, 이미 설정이 되어있다면 수정해주자.


auto eth0

iface eth0 inet static

address 172.16.1.X

netmask 255.255.255.0


보통 10.0.0.X 대역을 많이 사용하는데, 나의 경우 학교가 10.0.0.0/8 대역을 사설망으로 사용하는터라 172.16.1.0/24 대역을 사용하였다.

P는 172.16.1.2, S는 172.16.1.1 을 할당하였음


연결확인은 서로 ping 을 날려보자. ssh 연결 테스트도 좋고..


2. 환경 변수 설정

ROS_IP, ROS_MASTER_URI, ROS_HOSTNAME 3개의 환경변수를 설정해줘야한다.


# Primary

export ROS_IP={IP_of_P}

export ROS_MASTER_URI=http://localhost:11311

export ROS_HOSTNAME=$ROS_IP


# Secondary

export ROS_MASTER_URI=http://{IP_of_P}:11311

export ROS_HOSTNAME={IP_of_S}


이렇게 설정해주면 된다.


나의 경우엔

# Primary

export ROS_IP=172.16.1.2

export ROS_MASTER_URI=http://localhost:11311

export ROS_HOSTNAME=$ROS_IP


# Secondary

export ROS_MASTER_URI=http://172.16.1.2:11311

export ROS_HOSTNAME=172.16.1.1


이렇게 된다.


각 기기의 ~/.bashrc 최하단에 넣어주고 재부팅 혹은 $ source ~/.bashrc 하면 끝


3. 테스트

https://erlerobotics.com/docs/Robot_Operating_System/ROS/Basic_concepts/Examples/Publisher_and_subscriber.html


간단하게 timestamp 를 publish 하고 subscribe 하는 샘플 코드가 있다.

파이썬 코드는 굳이 컴파일(catkin_make)까지 할 필요 없으니 하단의 python 코드 두개를 기기에 적당히 복붙하고

$ python talker.py

$ python listener.py

로 실행해줘도 된다.



4. Erlebrain 에서의 mavros


환경변수가 설정되지 않고 실행된 topic 들은 다른 기기에서 subscribe 가 안된다.

보통 roscore 등을 직접 실행하는 경우엔 상관없겠지만,

내가 사용하려는 Erlebrain 의 경우 roscore 와 mavros 등을 자동실행해서 데몬처럼 유지시켜준다.

즉, 자동실행되는 mavros 의 토픽은 Secondary 에서 topic 을 subscribe 하는게 안된다...


이래저래 머리를 굴려보다 결국 mavros 를 실행하는 부분을 찾아서 환경변수 설정을 끼워넣었다.

좀 더 범용적인 해결책을 원했지만.. 어차피 딴거 별거 없기도 하고........


Erlebrain2 기준 /lib/systemd/system 경로의 service 파일들을 통해 프로세스가 실행되며,

그 스크립트들은 ~/ros_catkin_ws/install_isolated 에 위치한다.

즉, ~/ros_catkin_ws/install_isolated/setup-mavros.bash 파일을 열어서

rosrun 직전에 위에서한 환경변수 설정을 다시 해주면 된다.


수정 후 재부팅하면 S 에서도 subscribe 가 잘된다.


mavros 가 아닌 다른 topic 에 대해서도 필요하다면 비슷한 방법으로 해결을 보자.

혹은 ~/ros_catkin_ws/install_isolated/setup.sh 파일을 수정해도 될 것 같긴 하다. (안해봄)

setup-~~.bash 형태의 스크립트들이 쟤를 source 하고 시작해서...



참고

http://wiki.ros.org/ROS/NetworkSetup

http://wiki.ros.org/ROS/Tutorials/MultipleMachines

https://erlerobotics.com/docs/Robot_Operating_System/ROS/Basic_concepts/Configure_your_network.html


매번 검색하기 귀찮아서 작성함

그냥 UNetbootin 을 사용하는것도 괜찮은 선택지인 것 같다.


디스크 목록 보기

$ diskutil list


디스크 추출

$ diskutil unmountDisk /dev/disk#


ISO -> IMG

$ hdiutil convert -format UDRW -o ~/path/to/output.img /path/to/input.iso

$ mv /path/to/output.img.dmg /path/to/output.img


Flashing image

$ sudo dd if=/path/to/output.img of=/dev/rdisk# bs=8m


압축된 이미지 Flashing

$ gunzip -c /path/to/image.gz | sudo dd of=/dev/rdisk# bs=8m



bs 는 한번에 작업할 block size. 1m 을 쓰라고 하는 곳도 있는데.. 뭐 상관없겠지


dd 작업 중간에 Ctrl+T 를 누르면 작업상황을 확인할 수 있다.

+ Recent posts