카테고리 없음

(라즈베리파이 4) 우분투 설치 후 공통 사항

미친토끼 2025. 4. 6. 17:08

* ssh 설치하기

sudo apt install openssh-server

 

* YDLidar ROS2 드라이버 설치

https://github.com/YDLIDAR/ydlidar_ros2_driver

(foxy, humble, jazzy 구분하여 설치할 것)

 

* /dev/ttyUSB0에 접근 권한 문제 생길 시 참고할 것

https://madrabbit7.tistory.com/168           

sudo vi /etc/udev/rules.d/99-usb-serial.rules

아래 추가

KERNEL=="ttyUSB[0-9]*", SYMLINK+="ttyACM%n", GROUP="dialout", MODE="0666"

그리고 아래 실행

sudo udevadm control --reload-rules

sudo udevadm trigger

 

* 라즈베리파이에서 주변 PC로 핑을 때려서 SSH 접속을 가능하게 할 것

#!/bin/bash

for (( ; ; ));
do
	ping -c 1 192.168.35.11
	ping -c 1 192.168.35.139
	sleep 2m
done

 

* 몇 가지 필요한 소프트웨어 설치할 것

sudo apt install smplayer

sudo apt install vlc

 

* ~/.bashrc 

# python3 -m pip config set global.break-system-packages true
alias cls=clear
alias del='mv -f -t ~/.trash/'
alias python=python3
alias dir=ls
export PATH="$PATH:$HOME/bin"
alias scpp='f(){ scp "$@" 192.168.35.11:/home/don; unset -f f; }; f'
alias grepp='grep -rnw ./ -e'

 

alias cba='colcon build --symlink-install'
alias cbp='colcon build --packages-select'
alias ros_domain="export ROS_DOMAIN_ID=13; echo 'ROS_DOMAIN_ID is set to $ROS_DOMAIN_ID'"
alias humble='source /opt/ros/humble/setup.bash; ros_domain; echo "ROS2 humble is activated!"'
#alias jazzy='source /opt/ros/jazzy/setup.bash; ros_domain; echo "ROS2 jazzy is activated!"'
source /opt/ros/humble/setup.bash; echo "ROS2 humble is activated!"
alias sb='source ~/.bashrc; echo "bashrc is reloaded"'

 

* 라이다를 드라이버 노드로 실행할 때의 옵션 (YDlidar X4, G2, X2)

 

for YDLidar X4
ros2 run ydlidar_ros2_driver ydlidar_ros2_driver_node --ros-args -p port:=/dev/ttyUSB0  -p frame_id:=laser_frame  -p baudrate:=128000  -p lidar_type:=1  -p device_type:=0  -p sample_rate:=5  -p abnormal_check_count:=4  -p resolution_fixed:=true  -p reversion:=true  -p inverted:=true  -p auto_reconnect:=true  -p isSingleChannel:=false  -p intensity:=false  -p support_motor_dtr:=true  -p angle_max:=180.0  -p angle_min:=-180.0  -p range_max:=12.0  -p range_min:=0.1  -p frequency:=10.0  -p invalid_range_is_inf:=false

YDLidar G2
ros2 run ydlidar_ros2_driver ydlidar_ros2_driver_node --ros-args -p port:=/dev/ttyUSB0 -p frame_id:=laser_frame  -p baudrate:=230400  -p lidar_type:=1  -p device_type:=0  -p sample_rate:=5 -p intensity_bit:=10 -p abnormal_check_count:=4  -p resolution_fixed:=true  -p reversion:=true  -p inverted:=true  -p auto_reconnect:=true  -p isSingleChannel:=false  -p intensity:=true  -p support_motor_dtr:=false -p angle_max:=180.0  -p angle_min:=-180.0  -p range_max:=16.0  -p range_min:=0.1  -p frequency:=10.0  -p invalid_range_is_inf:=false


for YDLidar X2
ros2 run ydlidar_ros2_driver ydlidar_ros2_driver_node --ros-args -p port:=/dev/ttyUSB0 -p frame_id:=laser_frame -p baudrate:=115200 -p lidar_type:=1 -p device_type:=0  -p sample_rate:=3 -p abnormal_check_count:=4 -p resolution_fixed:=true -p reversion:=true -p inverted:=true -p auto_reconnect:=true -p isSingleChannel:=true -p intensity:=false -p support_motor_dtr:=true -p angle_max:=180.0 -p angle_min:=-180.0 -p range_max:=12.0 -p range_min:=0.1 -p invalid_range_is_inf:=false

 

* launch 파일로 라이다 두 대를 동시에 돌리기

$ ros2 launch ydlidar_ros2_driver ydlidar_multi_launch.py 

 

ydlidar_multi_launch.py

from launch import LaunchDescription
from launch_ros.actions import Node

def generate_launch_description():
  return LaunchDescription([
    Node(
      package="ydlidar_ros2_driver", 
      executable='ydlidar_ros2_driver_node',
      parameters=[{
        'port': '/dev/ttyUSB0',
        'frame_id': 'laser_frame',
        'baudrate': 230400,
        'lidar_type': 1,
        'device_type': 0,
        'sample_rate': 4,
        'intensity_bit': 10,
        'abnormal_check_count': 4,
        'resolution_fixed': True,
        'reversion': True,
        'inverted': True,
        'auto_reconnect': True,
        'isSingleChannel': False,
        'intensity': True,
        'support_motor_dtr': False,
        'angle_max': 180.0,
        'angle_min': -180.0,
        'range_max': 16.0,
        'range_min': 0.1,
        'frequency': 10.0,
        'invalid_range_is_inf': False
      }],
      remappings=[
        ('/scan', '/scan_1'),
      ]
    ),
    Node(
      package="ydlidar_ros2_driver",
      executable="ydlidar_ros2_driver_node",
      namespace='/scanner2',
      parameters=[{
        'port': '/dev/ttyUSB1',
        'frame_id': 'laser_frame',
        'baudrate': 115200,
        'lidar_type': 1,
        'device_type': 0,
        'sample_rate': 3,
        'abnormal_check_count': 4,
        'resolution_fixed': True,
        'reversion': True,
        'inverted': True,
        'auto_reconnect': True,
        'isSingleChannel': True,
        'intensity': False,
        'support_motor_dtr': True,
        'angle_max': 180.0,
        'angle_min': -180.0,
        'range_max': 12.0,
        'range_min': 0.1,
        'invalid_range_is_inf': False
      }]
    )
  ])

 

YDLidar X2

$ ros2 topic echo /scanner2/scan --no-arr

 

YDlidar G2

$ ros2 topic echo /scan_1 --no-arr