여러 네트워크를 통한 ROS 네트워크 구축 메모
3980 단어 ubuntu16.04네트워크ROS
개요
최근 연구실에서 "모션 캡처로 로봇의 움직임을 추적하여 그 데이터와 로봇상의 LiDAR의 데이터를 바탕으로 실시간으로 로봇을 동작시킨다"가 필요했다. 여러 네트워크를 가로질러 ROS를 작동시킬 필요가 있었지만, 당연한 것인지, 단순히 아무도 하려고 하지 않는지, 조사해도 정확히 같은 일을 하려고 하는 예가 발견되지 않고 약간 고전 그래서 메모 해 둡니다. 또한 문장 중에 등장하는 ip 주소 등은 실물과 다릅니다.
조건
그림으로 나타내면 이런 느낌이 듭니다.
절차
연결
우선 PC1과 PC2를 wifi로 접속하기 위해 Ubuntu16.04의 액세스 포인트을 참고로 PC2를 액세스 포인트로 했다. PC1을 연결하면 새로운 네트워크 (10.42.0.0/24)가 만들어졌습니다.
PC1의 wifi 측 ip 주소는 10.42.0.100으로 고정했습니다.
이제 연결 자체를 만들었지만 각 네트워크 간의 핑은 아직 통과하지 못했습니다.
이하, 여러 네트워크를 통한 통신을 수행하는 환경을 간편하게 작성 을 참고로, 설정을 진행해 갑니다.
ip 포워딩
두 PC에서 ethernet, wifi의 각각에 오는 패킷을 다른 쪽에 흘려 주었으면 하므로, ip 포워딩의 설정을 실시합니다.
# iptableの設定を削除(共通.不要?)
$ iptables -t nat -F
$ iptables -F
# 双方向のipフォワーディングを設定(PC1)
$ iptables -A FORWARD -i enp3s0 -o wlp112s0 -j ACCEPT
$ iptables -A FORWARD -o enp3s0 -i wlp112s0 -j ACCEPT
# 双方向のipフォワーディングを設定(PC2)
$ iptables -A FORWARD -i enp4s0 -o wlp114s0 -j ACCEPT
$ iptables -A FORWARD -o enp4s0 -i wlp114s0 -j ACCEPT
라우팅 테이블 설정
두 PC에서 게이트웨이를 설정하여 다른 PC의 이더넷 네트워크에 액세스 할 수 있습니다.
# PC1
$ ip route add 192.168.10.0/24 via 10.42.0.1 dev wlp112s0
# PC2
$ ip route add 192.168.0.0/24 via 10.42.0.100 dev wlp114s0
이제 상대 PC의 이더넷 네트워크에 액세스 할 수 있습니다.
확인
두 PC의 ROS_MASTER_URI를 PC2로 설정합니다.
$ export ROS_MASTER_URI=http://192.168.10.200:11311
ROS_IP도 설정합니다.
# PC1
$ export ROS_IP=192.168.0.100
# PC2
$ export ROS_IP=192.168.10.200
PC2에서 roscore를 기동해, rostopic pub/echo등으로 소통을 확인할 수 있으면, 성공입니다.
비고
이번에는 Ubuntu의 액세스 포인트화를 GUI로 실시했습니다만, 이 방법이라고 IEEE802.11g로의 접속이 되고 있는 것 같고, 조금 속도에 불안이 있습니다(PointCloud의 교환에도 붙어 있는 모습.tf도 수상한). 어쩌면 통신 속도에 기인하는 것은 아닐지도 모릅니다만, create_ap를 사용하면 IEEE802.11ac를 사용할 수 있는 것 같기 때문에, 어쨌든 시도해 보겠습니다.
# iptableの設定を削除(共通.不要?)
$ iptables -t nat -F
$ iptables -F
# 双方向のipフォワーディングを設定(PC1)
$ iptables -A FORWARD -i enp3s0 -o wlp112s0 -j ACCEPT
$ iptables -A FORWARD -o enp3s0 -i wlp112s0 -j ACCEPT
# 双方向のipフォワーディングを設定(PC2)
$ iptables -A FORWARD -i enp4s0 -o wlp114s0 -j ACCEPT
$ iptables -A FORWARD -o enp4s0 -i wlp114s0 -j ACCEPT
# PC1
$ ip route add 192.168.10.0/24 via 10.42.0.1 dev wlp112s0
# PC2
$ ip route add 192.168.0.0/24 via 10.42.0.100 dev wlp114s0
두 PC의 ROS_MASTER_URI를 PC2로 설정합니다.
$ export ROS_MASTER_URI=http://192.168.10.200:11311
ROS_IP도 설정합니다.
# PC1
$ export ROS_IP=192.168.0.100
# PC2
$ export ROS_IP=192.168.10.200
PC2에서 roscore를 기동해, rostopic pub/echo등으로 소통을 확인할 수 있으면, 성공입니다.
비고
이번에는 Ubuntu의 액세스 포인트화를 GUI로 실시했습니다만, 이 방법이라고 IEEE802.11g로의 접속이 되고 있는 것 같고, 조금 속도에 불안이 있습니다(PointCloud의 교환에도 붙어 있는 모습.tf도 수상한). 어쩌면 통신 속도에 기인하는 것은 아닐지도 모릅니다만, create_ap를 사용하면 IEEE802.11ac를 사용할 수 있는 것 같기 때문에, 어쨌든 시도해 보겠습니다.
Reference
이 문제에 관하여(여러 네트워크를 통한 ROS 네트워크 구축 메모), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/KazukiTakahashi/items/5416c0df40ee6cd37f89텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)