目录
一、下载YDLidar-SDK & YDLIDAR ROS2 Driver
背景:
1、设备:pc;旭日派x3;EAI_X3激光雷达、YDLIDAR 4ROS,SDM15
2、环境:Ubuntu20.04;ROS2(Foxy)
准备工作:
配置主从机
1、主机(刑天)
端口号:
192.168.3.106
echo $ROS_DOMAIN_ID #如果没有 vim ~/.bashrc export ROS_DOMAIN_ID=5(可更换) export ROS_IP=主机ip
2、从机(PC、ubuntu)
端口号:
192.168.9.99
echo $ROS_DOMAIN_ID #如果没有 vim ~/.bashrc export ROS_DOMAIN_ID=5(可更换) export ROS_IP=从机ip
3、问题
(1)互相ping的通,主机ros2 launch 之后,从机查不到话题
检查主从机的配置,注意网络是否一样(可更换热点进行测试)
一、下载YDLidar-SDK & YDLIDAR ROS2 Driver
(刑天和pc端都需要)
1、打开github编译SDK
https://github.com/YDLIDAR/YDLidar-SDK
git clone https://github.com/YDLIDAR/YDLidar-SDK.git cd YDLidar-SDK/build cmake .. make sudo make install
重点:build需要自己手动创建
cd YDLidar-SDK/build ./tri_test (截图不是刑天)
2、编译 ydlidar_ros2_driver
git clone https://github.com/YDLIDAR/ydlidar_ros2_driver.git ydlidar_ros2_ws/src/ydlidar_ros2_driver -------------------------------------------------------- cd ydlidar_ros2_ws colcon build --symlink-install source install/setup.bas
注意:每次修改功能包里面的代码均需重新【编译】再【更新环境】。
二、重新映射USB串口
cd ~/ydlidar_ros2_ws/src/ydlidar_ros2_driver-master/startup sudo chmod 777 * sudo ./initenv.sh
绑定后,重新拔插一次雷达。
使用以下命令查看修改重映射
(在pc端不会成功,因为雷达接在刑天上)
ll /dev/ydlidar
三、新建工作空间
(此时在pc端)
mkdir -p X3_ws
使用该雷达时,每次执行命令均需进入到工作空间下
cd ~/X3_ws
将【X3_ws_src.zip】功能包解压后放入X3_ws工作空间src文件夹下,在工作空间下打开终端
zip文件:
YDLIDAR X3Pro激光雷达资料地址:https://www.yahboom.com/study/YDLIDAR-X3 提取码:njk9#后续买了新激光雷达
YDLIDAR 4ROS激光雷达资料地址:https://www.yahboom.com/study/YDLIDAR-4ROS 提取码:zzv4
colcon build # 编译 source install/setup.bash # 更新环境
注意:每次修改功能包里面的代码均需重新【编译】再【更新环境】。
四、终端测试
第一步,启动相对应的雷达
ros2 launch ydlidar_ros2_driver ydlidar_launch.py
Error1:
1695371359.9689651 [INFO] [launch]: All log files can be found below /root/.ros/log/2023-09-22-16-29-19-955954-ubuntu-3715 1695371359.9700789 [INFO] [launch]: Default logging verbosity is set to INFO 1695371360.3699036 [INFO] [ydlidar_ros2_driver_node-1]: process started with pid [3727] 1695371360.3730452 [INFO] [static_transform_publisher-2]: process started with pid [3729] 1695371360.4898844 [ERROR] [ydlidar_ros2_driver_node-1]: process has died [pid 3727, exit code -7, cmd '/root/X3_ws/install/ydlidar_ros2_driver/lib/ydlidar_ros2_driver/ydlidar_ros2_driver_node --ros-args -r __node:=ydlidar_ros2_driver_node -r __ns:=/ --params-file /root/X3_ws/install/ydlidar_ros2_driver/share/ydlidar_ros2_driver/params/ydlidar.yaml']. 1695371360.5144827 [static_transform_publisher-2] [INFO] [1695371360.513403543] [static_tf_pub_laser]: Spinning until killed publishing transform from 'laser' to 'base_link'
解决:重新编译YDLIDAR ROS2 Driver
Error2:
解决:重新配置ydlidar.yaml 文件(X3_ws还有ydlidar_ros2_ws均配置)
YDLIDAR 4ROS的配置文件:
ydlidar_ros2_driver_node:
ros__parameters:
port: /dev/ttyUSB0
frame_id: laser_frame
ignore_array: ""
baudrate: 512000
lidar_type: 0
device_type: 0
sample_rate: 20
intensity_bit: 0
abnormal_check_count: 4
fixed_resolution: true
reversion: true
inverted: true
auto_reconnect: true
isSingleChannel: false
intensity: false
support_motor_dtr: false
angle_max: 180.0
angle_min: -180.0
range_max: 50.0
range_min: 0.01
frequency: 12.0
invalid_range_is_inf: false
SDM15配置文件:
ydlidar_ros2_driver_node:
ros__parameters:
port: /dev/ttyUSB1
frame_id: laser_single_frame
ignore_array: ""
baudrate: 460800
lidar_type: 5
device_type: 0
sample_rate: 4
intensity_bit: 8
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: 15.0
range_min: 0.05
frequency: 50.0
invalid_range_is_inf: true
第二步,查看雷达数据
ros2 topic echo /scan
五、rviz2可视化测试
rviz2
您应该在 rviz2 中看到雷达的扫描结果
注意左边的话题,LaserSan的 topic Relisbility 是System Deflault,否则没有点云信息
Error1:
有topic,有/scan信号,但是没有点云信息
解决:更换网络(eg:热点),检查话题信息
六、gmapping建图测试
第一步,启动相对应的雷达
ros2 launch ydlidar_ros2_driver ydlidar_launch.pyros2 launch ydlidar_ros2_driver ydlidar_launch.py params_file:=/opt/deploy/diablo-robot/config/params/ydlidar.yaml
第二步,启动gmapping建图
ros2 launch slam_gmapping slam_gmapping.launch.py ros2 run slam_gmapping slam_gmapping
应该在 rviz2 中看到建图结果
更新2023.10.31
七、突然出现的问题
我的建图一直乱飞!!!!!
root@robot-body:~# ros2 node list
/diablo_ctrl_node
/odommetry
/rviz
/transform/transform_node
/transform_listener_impl_564d383a28e0
ydlidar_ros2_driver_node:
ros__parameters:
port: /dev/ttyUSB0
frame_id: laser_frame
ignore_array: ""
baudrate: 230400
lidar_type: 1
device_type: 0
sample_rate: 4
intensity_bit: 0
abnormal_check_count: 4
fixed_resolution: true
reversion: true
inverted: true
auto_reconnect: true
isSingleChannel: false
intensity: false
support_motor_dtr: true
angle_max: 180.0
angle_min: -180.0
range_max: 18.0
range_min: 0.01
frequency: 12.0
invalid_range_is_inf: false
G4采样率太大了,改成4就好了
更新1106
八、如何更该雷达的发布频率
更改源码,地址:
/opt/deploy/diablo-robot/lib/ydlidar_ros2_driver/src/ydlidar_ros2_driver_node.cpp
#第165行
auto laser_pub = node->create_publisher<sensor_msgs::msg::LaserScan>("scan_single", rclcpp::SensorDataQoS());
auto pc_pub = node->create_publisher<sensor_msgs::msg::PointCloud>("point_cloud", rclcpp::SensorDataQoS());
#第180行
rclcpp::WallRate loop_rate(1800);
此时查看ros2 topic hz /scan就可以看到话题频率更改成功。