본문 바로가기

ROS

(9)
ROS2 humble에서 PointCloud2 메시지 변환 의존성 꼬임 이슈 라이다 회사에서 제공하는 ROS패키지에서 만들어내는 메시지 타입은 sensor_msgs::msg::PointCloud2인데, 2023년 1월 현재 "sudo apt-get install ros-humble-pcl-conversions"로 받아오는 헤더파일에는 sensor_msgs::msg::PointCloud2를 pcl::PointCloud로 바꿔주는 소스가 없다. 이 헤더파일로 컴파일을 하려고 하면 이런 에러메시지가 난다. note: cannot convert ‘_msg’ (type ‘const PCLMsgType’ {aka ‘const sensor_msgs::msg::PointCloud2_’}) to type ‘const PointCloud2&’ {aka ‘const sensor_msgs::Point..
[ROS2]tf에 대해서 알아봅시다-1 제가 처음에 ros_control이라거나 gazebo, rviz등을 접했을 때는 urdf로 모델을 만들었기때문에 tf랑 직접 마주칠일이 없었는데 요즘 일때문에 SLAM을 다루다 보니까 tf를 모르면 일이 되지 않더군요. 그래서 한번 짚어봅니다. 자료는 ROS2의 자습서를 참고로 했으니까 소스코드는 따로 업로드하지 않겠습니다. 이 게시물에선 소스코드의 설명을 위주로 하니, 빌드스크립트는 원 게시물인 자습서를 참고로 작성해주세요. TF란 뭘까? 어떤 점에서 프레임과 프레임의 상대적 위치를 표현하는 변환입니다. 예를들어, 자습서에 자주나오는 turtle_sim에서는 거북이의 위치,각도를 world와의 상대적인 위치/방위로 표현합니다. world가 (0,0,0)이고, 기본적인 방위는 (1,0,0,0)이라고 하고..
From implementation of RobotHW to implementation of PI control I have implemented customized RobotHW object and used controller manage to publish/subscribe topics of which enables control joints in this article. https://hellosagal.tistory.com/13 ros_control API를 이용한 하드웨어 제어프로그램 작성 ros_control은 ros에서 임베디드 컨트롤러를 제어하기 위해서 만들어진 API입니다. 하나의 패키지라기보다는 여러개의 계층을 가진 패키지들의 묶음이라고 생각하는게 편하겠네요. 이해하고나면 쉬 hellosagal.tistory.com In this time, I will implement position contr..
ros_control API를 이용한 하드웨어 제어프로그램 작성 ros_control은 ros에서 임베디드 컨트롤러를 제어하기 위해서 만들어진 API입니다. 하나의 패키지라기보다는 여러개의 계층을 가진 패키지들의 묶음이라고 생각하는게 편하겠네요. 이해하고나면 쉬운데... 전 처음에 이 그림을 보고 무슨말인지 잘 모르겠더군요. 큼직한 블록을 하나하나 분해해봅시다. Real Robot - 액추에이터(모터) 장치입니다. 모터+센서+임베디드컨트롤러로 구성되어있고, 계층과는 시리얼통신같은 통신으로 작동합니다. 다시 말해 ros밖의 영역입니다. hardware_interface::RobotHW - 임베디드 컨트롤러와 ros내부와의 인터페이스를 담당합니다. 보통 모터는 로봇의 관절에 붙어있으니까 ros 내부에선 모터를 joint라고 취급합니다. Controller & Contro..
URDF로봇 이동 시뮬레이션 하기 이 글은 앞선 글의 레퍼런스의 후속 글을 따라해보며 작성한 글입니다. https://gbiggs.github.io/rosjp_urdf_tutorial_text/mobile_robot_gazebo.html ロボットモデリング講習会:URDFの作成方法 by gbiggs 移動型ロボットのシミュレーション Updated on: 2018-02-27 トップに戻る 本セクションでは、移動型ロボットのURDF作成で作成したURDFを拡張して、Gazebo上のシミュレーションに必要な情報を追加し gbiggs.github.io 앞선 글에서 SLAM로봇의 디자인은 만들었지만, 이는 외형만 만들었을 뿐, 질량에 관한 정보는 없습니다. 시뮬레이터로서는 이게 차체가 100kg에 바퀴가 1kg인지 혹은 그 반대인지 알 수가 없다는 이야기지요. 그래서 ..
간단한 urdf모델 만들고 rviz로 보기 이 글은 아래 링크를 보고 따라한 글입니다. https://gbiggs.github.io/rosjp_urdf_tutorial_text/mobile_robot_urdf.html#mobile_robot_links ロボットモデリング講習会:URDFの作成方法 by gbiggs 移動型ロボットのURDF作成 Updated on: 2018-02-27 トップに戻る 本セクションではURDFの基本を説明し、簡単な移動型ロボットのURDFの作成によってURDFの作成方法を学習します。 作成する移動型ロボ gbiggs.github.io 우선 패키지를 만들어줍니다. cd ~/catkin_ws/src catkin_create_pkg rt_mouse_replica geometry_msgs roscpp rospy std_msgs rt_mouse_re..
Writing simple action server and client using class This article is written while I implement sample code of material the "mastering ros for robotics programming 3rd edition". But the action client code is quite different from the material since it didn`t use class on it. 0. Generate a package and source files and action definition file. I have generated a package its name is "mastering_ros_demo_pkg" Then, I have two plain cpp files in the src di..
package.xml/CMakelist.txt 각 태그 내용 정리 package.xml 스스로 만든 코드를 빌드하는데 있어서는 누락되어도 문제는 없지만, 다른 사람과 패키지를 공유할 때 누락되어있다면 실행이 되지 않는다. 의존성을 정의한다. 그러나 이게 어떤 때에 의존되는 지는 명시하지 않는다. 어떤 때에 의존되는지 알고있다면 아래의 세부내용을 적어도 된다. 빌드 툴 의존성을 정의한다. 예를들어 catkin빌드 시스템을 이용한다면, catkin라고 적는다. 빌드 시에만 사용하고, 런타임에는 사용하지 않는 의존성을 정의한다. 예를 들자면, 어떤 메시지를 msg파일에다가 정의했다고 해보자. message_generation패키지는 이 msg파일을 읽고, 해당 데이터타입을 정의하는 헤더파일을 만들어주는 역할을 한다. 따라서, 이는 빌드 시에는 필요하지만 런타임에는 필요하지 ..