.. Cover Letter

공부#Robotics#자율주행/(ROS2)주행로봇

벨로다인 스터디, 가제보에서 사용해보기

BrainKimDu 2023. 5. 4. 00:25

 

PinkWink 대표님께서 이어달리기 형태로 빌려오신 벨로다인 3D라이다

가격은 무려 700만원이라고 합니다.. 이 라이다를 가지고 3D SLAM을 해보는 스터디를 만들어보자고 말씀해주셔서

약 3주간 벨로다인 라이다를 만지는 스터디가 만들어질 것 같습니다.

 

약 2주동안은 Gazebo상에서 3D SLAM을 하는 것을 목표로하고

나머지 2주동안은 실제 LiDAR를 가지고 뛰어다니면서 SLAM을 하게될것같습니다.

 

일단 저는 Gazebo를 활용하는 포지션을 맡았습니다.

그리고 추가로 개인적으로 터틀봇에 벨로다인 라이다를 붙여보고 시뮬레이션을 해보도록하겠습니다.

 

 

 

이 글은 PinkWink님의 스터디 교육자료를 바탕으로 작성되었습니다.

https://pinkwink.kr/

 

PinkWink

한 변두리 공학도의 블로그입니다. 재미있어 보이는 것들을 모두 기초스럽게 접근하는 블로그이며... 그보다 더욱 소중한 우리 아가 미바뤼의 발자취를 남겨두는 블로그이기도 합니다.

pinkwink.kr

 

우선 ROS2 Humble버전이 필요합니다. 

 

https://kimbrain.tistory.com/entry/3-%EC%9A%B0%EB%B6%84%ED%88%AC-2204%EC%97%90-ROS2-Humble-%EC%84%A4%EC%B9%98%ED%95%98%EA%B3%A0-rviz%EC%99%80-gazebo%EA%B9%8C%EC%A7%80-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0

 

(실무리눅스) 12. 우분투 22.04에 ROS2 Humble 설치하고 rviz와 gazebo까지 설치하기

https://docs.ros.org/en/humble/Installation.html Installation — ROS 2 Documentation: Humble documentation Binary packages Binaries are only created for the Tier 1 operating systems listed in REP-2000. Given the nature of Rolling, this list may be updated

kimbrain.tistory.com

 

다음 글에서 설치할 수 있습니다.

 

이 글은 PinkWink 대표님께서 직접만든 Minibot에서 velodyin을 장착하는 방법을 다루고자합니다.

(터틀봇에도 붙여보고 싶은데, 연구를 해보도록하겠습니다.)

 


공통적으로 설치해주어야하는 것입니다.

sudo apt install ros-humble-velodyne*
sudo apt install mrpt-apps
velodyne-view

이렇게 설치가 완료되면 

 

설치가 잘되었는지 확인해보겠습니다.

Humble환경 불러오기
ros2 launch velodyne_description example.launch.py

다음을 입력했을 때 실행이되면 됩니다. 그러나 Gazebo는 실행이 되질 않습니다.

이러면 일단 벨로다인 라이다는 잘 설치가되었습니다.

 

 

 Minibot에서 velodyin장착하기

https://github.com/PinkWink/pinklab_minibot_robot

 

GitHub - PinkWink/pinklab_minibot_robot: PinkLab MiniBot ROS2 Packages

PinkLab MiniBot ROS2 Packages. Contribute to PinkWink/pinklab_minibot_robot development by creating an account on GitHub.

github.com

 

다음의 파일을 git clone합니다. 현재 로봇에는 2D 라이다가 달려있기 때문에 이를 벨로다인 라이다로 바꿔주도록 합시다.

minibot_description의 urdf의 minibot_gazebo.urdf.xacro 파일을 수정하도록 합시다.

우선 2D 라이다를 모두 주석처리합니다.

<!--   --> 로 처리할 수 있습니다.

그리고 다음을 추가합니다.

<gazebo reference="${prefix}laser_link">
            <sensor type="gpu_ray" name="velodyne-VLP16">
                <pose>0 0 0.1 0 0 0</pose>
                <visualize>true</visualize>
                <update_rate>10</update_rate>
                <ray>
                    <scan>
                        <horizontal>
                            <samples>440</samples>
                            <resolution>1</resolution>
                            <min_angle>-3.14159265</min_angle>
                            <max_angle>3.14159265</max_angle>
                        </horizontal>
                        <vertical>
                            <samples>16</samples>
                            <resolution>1</resolution>
                            <min_angle>-0.261799388</min_angle>
                            <max_angle> 0.261799388</max_angle>
                        </vertical>
                    </scan>
                    <range>
                        <min>0.3</min>
                        <max>131</max>
                        <resolution>0.001</resolution>
                    </range>
                    <noise>
                        <type>gaussian</type>
                        <mean>0.0</mean>
                        <stddev>0.0</stddev>
                    </noise>
                </ray>
            <plugin name="gazebo_ros_laser_controller" filename="libgazebo_ros_velodyne_laser.so">
                <ros>
                    <!-- <namespace>/velodyne</namespace> -->
                    <remapping>~/out:=/velodyne_points</remapping>
                </ros>
                <!-- <tf_prefix>''</tf_prefix> -->
                <frame_name>laser_link</frame_name>
                <organize_cloud>false</organize_cloud>
                <min_range>0.9</min_range>
                <max_range>130.0</max_range>
                <gaussian_noise>0.008</gaussian_noise>
                <output_type>sensor_msgs/msg/PointCloud2</output_type>
            </plugin>
        </sensor>
        </gazebo>

다음으로 설정하고, colcon build하고 

minibot환경을 불러온 후에 가제보를 실행합니다.

ros2 launch minibot_bringup bringup_robot_gazebo.launch.py world_name:=simple_building.world

 

다음처럼 보이면 됩니다. 그러면 한 번 움직여 봐야겠죠.

터미널을 두 개 더 켜봅시다.

(모두 minibot 환경을 불러와야합니다)

ros2 run teleop_twist_keyboard teleop_twist_keyboard --ros-args -r cmd_vel:=base_controller/cmd_vel_unstamped
rviz2

 

우선 Rviz가 실행되면 토픽을 받아야한다. Global Option

base_link로 변경하고 

add에서 

다음의 토픽을 구독하면 ladar가 표시된다.

나의 경우는 points로 바꿨다 그리고 컬러도 다음처럼 변경하면 이뻐진다..

 

또한 다음의 토픽도 구독을 한다.

그리고 다음처럼 변경하면

 

 

잘 나온다.. 단점이 1m이내의 라이다 탐지결과는 나오지 않는다.

그리고 이거로 움직이면서 봐도 된다.

 

 

이 이후는 못했습니다. 벨로다인 라이다가 사라져버렸어요..