MATLAB/Simulink에서 C++ ROS 노드 만들기
그러한 사람들에게 사용하기 쉬운 도구 중 하나는 MATLAB/Simulink입니다.
이번에는 MATLAB/Simulink에서 C++로의 변환 기능을 이용하여 C++ ROS 노드를 만드는 방법에 대해 남겨두고 싶습니다.
자세한 절차는 여기을 참조하십시오.
이 절차를 수행하려면 다음 도구 상자가 필요합니다.
Robotics System Toolbox, Simulink Coder,Simulink
matlab과 ROS 연결
roscore를 실행 한 다음 matlab 명령 줄에 rosinit을 입력하여 ROS와 matlab을 연결합니다.
Simulink 모델 만들기
이번에는 매우 간단한 노드를 만들고 싶습니다.
/input이라는 이름의 std_msgs/Float64형 메세지를 받고, 메세지를 받았을 때 그것과 같은 값을/output라고 하는 토픽으로 출력합니다.
Enabled Subsystem의 내용은 다음과 같습니다.
Subscriber, Publisher 블록의 수신, 송신 토픽, 그 타입 등은 블록을 더블 클릭하면 편집할 수 있습니다.
Simulink 모델의 동작 확인
아래와 같은 launch 후아일을 만들어서 launch 해주세요.
sample.launch<?xml version="1.0" encoding="UTF-8"?>
<launch>
<node name="input_node" pkg="rostopic" type="rostopic" args="pub -r 100 /input std_msgs/Float64 -- 1" output="screen" respawn="true">
</node>
</launch>
모델을 저장하고 Simulink 실행 버튼을 누르십시오. 이때 시뮬레이션 종료 시간을 Inf(무한)로 하는 것을 잊지 마세요! 그렇지 않으면 실행이 순식간에 끝납니다!
C++로 변환
Simulink 모델을 만들고 동작 확인을 할 수 있는 곳에서 C++의 ROS 노드로 컨버트 해 봅시다.
Simulink의 바에서 기어 마크를 클릭하여 구성 매개 변수를 설정합니다.
여기에서 솔버 옵션을 고정 단계로 설정하십시오.
그 후 고정 스텝 사이즈를 자신이 만들고 싶은 제어계에 맞추어 설정해 주세요
그런 다음 하드웨어 실행 탭을 엽니다.
하드웨어 보드에서 ROS를 선택합니다.
설정이 끝나면 소스 코드로 확장합니다.
ctrl+B 바로 가기를 사용하거나 코드 -> C/C++ 코드 -> 하드웨어로 배포를 선택합니다.
잠시 후 이런 화면이 나오고 소스 코드가 생성됩니다.
생성한 디렉토리를 확인하면 뭔가 많아지고 있다고 생각합니다.
./build_ros_model.sh.sh의 지시대로 빌드 해 봅시다.
이 명령을 실행하면, 여러가지 경고는 나오는 것입니다만, 빌드에 성공했습니다! !
이제 조속히 테스트해 봅시다.
생성된 ROS 노드의 실행 테스트
다음과 같은 launch 파일을 작성하고 roslaunch하십시오.
sample.launch<?xml version="1.0" encoding="UTF-8"?>
<launch>
<node name="input_node" pkg="rostopic" type="rostopic" args="pub -r 100 /input std_msgs/Float64 -- 1" output="screen" respawn="true">
</node>
<node name="sample_node" pkg="sample" type="sample_node" args="" output="screen" respawn="true">
</node>
</launch>
rqt_graph로 확인한 결과 노드끼리는 통신할 수 있네요! !
받고 있는 데이터에도 이상이 없고, topic의 게시율도 정확합니다.
요약
이상과 같은 느낌으로 Simulink 모델로부터 ROS의 노드를 생성하는 것이 가능합니다.
절차는 다소 어렵지만 그래픽으로 제어 시스템을 구축하는 것이 큰 이점이라고 생각합니다.
그리고, 확인은 하고 있지 않습니다만 Windows상에서도 아마 코드 생성까지는 할 수 있다고 생각합니다.
Reference
이 문제에 관하여(MATLAB/Simulink에서 C++ ROS 노드 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hakuturu583/items/a138755ca45e0623ef9c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
이번에는 매우 간단한 노드를 만들고 싶습니다.
/input이라는 이름의 std_msgs/Float64형 메세지를 받고, 메세지를 받았을 때 그것과 같은 값을/output라고 하는 토픽으로 출력합니다.
Enabled Subsystem의 내용은 다음과 같습니다.
Subscriber, Publisher 블록의 수신, 송신 토픽, 그 타입 등은 블록을 더블 클릭하면 편집할 수 있습니다.
Simulink 모델의 동작 확인
아래와 같은 launch 후아일을 만들어서 launch 해주세요.
sample.launch<?xml version="1.0" encoding="UTF-8"?>
<launch>
<node name="input_node" pkg="rostopic" type="rostopic" args="pub -r 100 /input std_msgs/Float64 -- 1" output="screen" respawn="true">
</node>
</launch>
모델을 저장하고 Simulink 실행 버튼을 누르십시오. 이때 시뮬레이션 종료 시간을 Inf(무한)로 하는 것을 잊지 마세요! 그렇지 않으면 실행이 순식간에 끝납니다!
C++로 변환
Simulink 모델을 만들고 동작 확인을 할 수 있는 곳에서 C++의 ROS 노드로 컨버트 해 봅시다.
Simulink의 바에서 기어 마크를 클릭하여 구성 매개 변수를 설정합니다.
여기에서 솔버 옵션을 고정 단계로 설정하십시오.
그 후 고정 스텝 사이즈를 자신이 만들고 싶은 제어계에 맞추어 설정해 주세요
그런 다음 하드웨어 실행 탭을 엽니다.
하드웨어 보드에서 ROS를 선택합니다.
설정이 끝나면 소스 코드로 확장합니다.
ctrl+B 바로 가기를 사용하거나 코드 -> C/C++ 코드 -> 하드웨어로 배포를 선택합니다.
잠시 후 이런 화면이 나오고 소스 코드가 생성됩니다.
생성한 디렉토리를 확인하면 뭔가 많아지고 있다고 생각합니다.
./build_ros_model.sh.sh의 지시대로 빌드 해 봅시다.
이 명령을 실행하면, 여러가지 경고는 나오는 것입니다만, 빌드에 성공했습니다! !
이제 조속히 테스트해 봅시다.
생성된 ROS 노드의 실행 테스트
다음과 같은 launch 파일을 작성하고 roslaunch하십시오.
sample.launch<?xml version="1.0" encoding="UTF-8"?>
<launch>
<node name="input_node" pkg="rostopic" type="rostopic" args="pub -r 100 /input std_msgs/Float64 -- 1" output="screen" respawn="true">
</node>
<node name="sample_node" pkg="sample" type="sample_node" args="" output="screen" respawn="true">
</node>
</launch>
rqt_graph로 확인한 결과 노드끼리는 통신할 수 있네요! !
받고 있는 데이터에도 이상이 없고, topic의 게시율도 정확합니다.
요약
이상과 같은 느낌으로 Simulink 모델로부터 ROS의 노드를 생성하는 것이 가능합니다.
절차는 다소 어렵지만 그래픽으로 제어 시스템을 구축하는 것이 큰 이점이라고 생각합니다.
그리고, 확인은 하고 있지 않습니다만 Windows상에서도 아마 코드 생성까지는 할 수 있다고 생각합니다.
Reference
이 문제에 관하여(MATLAB/Simulink에서 C++ ROS 노드 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hakuturu583/items/a138755ca45e0623ef9c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
<?xml version="1.0" encoding="UTF-8"?>
<launch>
<node name="input_node" pkg="rostopic" type="rostopic" args="pub -r 100 /input std_msgs/Float64 -- 1" output="screen" respawn="true">
</node>
</launch>
Simulink 모델을 만들고 동작 확인을 할 수 있는 곳에서 C++의 ROS 노드로 컨버트 해 봅시다.
Simulink의 바에서 기어 마크를 클릭하여 구성 매개 변수를 설정합니다.
여기에서 솔버 옵션을 고정 단계로 설정하십시오.
그 후 고정 스텝 사이즈를 자신이 만들고 싶은 제어계에 맞추어 설정해 주세요
그런 다음 하드웨어 실행 탭을 엽니다.
하드웨어 보드에서 ROS를 선택합니다.
설정이 끝나면 소스 코드로 확장합니다.
ctrl+B 바로 가기를 사용하거나 코드 -> C/C++ 코드 -> 하드웨어로 배포를 선택합니다.
잠시 후 이런 화면이 나오고 소스 코드가 생성됩니다.
생성한 디렉토리를 확인하면 뭔가 많아지고 있다고 생각합니다.
./build_ros_model.sh.sh의 지시대로 빌드 해 봅시다.
이 명령을 실행하면, 여러가지 경고는 나오는 것입니다만, 빌드에 성공했습니다! !
이제 조속히 테스트해 봅시다.
생성된 ROS 노드의 실행 테스트
다음과 같은 launch 파일을 작성하고 roslaunch하십시오.
sample.launch<?xml version="1.0" encoding="UTF-8"?>
<launch>
<node name="input_node" pkg="rostopic" type="rostopic" args="pub -r 100 /input std_msgs/Float64 -- 1" output="screen" respawn="true">
</node>
<node name="sample_node" pkg="sample" type="sample_node" args="" output="screen" respawn="true">
</node>
</launch>
rqt_graph로 확인한 결과 노드끼리는 통신할 수 있네요! !
받고 있는 데이터에도 이상이 없고, topic의 게시율도 정확합니다.
요약
이상과 같은 느낌으로 Simulink 모델로부터 ROS의 노드를 생성하는 것이 가능합니다.
절차는 다소 어렵지만 그래픽으로 제어 시스템을 구축하는 것이 큰 이점이라고 생각합니다.
그리고, 확인은 하고 있지 않습니다만 Windows상에서도 아마 코드 생성까지는 할 수 있다고 생각합니다.
Reference
이 문제에 관하여(MATLAB/Simulink에서 C++ ROS 노드 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/hakuturu583/items/a138755ca45e0623ef9c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
<?xml version="1.0" encoding="UTF-8"?>
<launch>
<node name="input_node" pkg="rostopic" type="rostopic" args="pub -r 100 /input std_msgs/Float64 -- 1" output="screen" respawn="true">
</node>
<node name="sample_node" pkg="sample" type="sample_node" args="" output="screen" respawn="true">
</node>
</launch>
이상과 같은 느낌으로 Simulink 모델로부터 ROS의 노드를 생성하는 것이 가능합니다.
절차는 다소 어렵지만 그래픽으로 제어 시스템을 구축하는 것이 큰 이점이라고 생각합니다.
그리고, 확인은 하고 있지 않습니다만 Windows상에서도 아마 코드 생성까지는 할 수 있다고 생각합니다.
Reference
이 문제에 관하여(MATLAB/Simulink에서 C++ ROS 노드 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hakuturu583/items/a138755ca45e0623ef9c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)