(라즈베리파이 4) 우분투 설치 후 공통 사항
* 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