问题:在使用YDlidar TG30激光雷达的过程中出现了下面的错误。
命令&: roslaunch ydlidar_ros_driver TG.launch
输出:Error, cannot bind to the specified serial port[/dev/ydlidar] and baudrate[512000]
试了创建串行端口别名的命令也不行。
$ sudo sh src/ydlidar_ros_driver/startup/initenv.sh
YDlidar TG30使用的是FT232的usb转ttl转换器与电脑进行连接的,在win系统下,能够通过官网提供的
点云数据可视化软件 LidarViewer成功获取到激光雷达的点云数据。
在ubuntu系统下,通过ls -l /dev/ttyUSB*
命令,能够查看得到“/dev/ttyUSB0”串口的存在。
解决:
1.修改ydlidar_ros_driver.cpp文件中串口部分
std::string str_optvalue = "/dev/ydlidar"; //原先的
std::string str_optvalue = "/dev/ttyUSB0"; //修改后的
nh_private.param<std::string>("port", str_optvalue, "/dev/ydlidar"); //原先的
nh_private.param<std::string>("port", str_optvalue, "/dev/ttyUSB0"); //修改后的
2. 修改TG.launch文件
<param name="port" type="string" value="/dev/ydlidar"/> #原先的
<param name="port" type="string" value="/dev/ttyUSB0"/> #修改后的
3. 在ros工作空间中catkin_make重新编译。
4. 给串口权限,在终端运行下面命令。
$ sudo chmod 666 /dev/ttyUSB0
5. 执行launch启动文件,即可看到点云视图
$ roslaunch ydlidar_ros_driver lidar_view.launch
注:需将 lidar_view.launch 文件中的 lidar.launch 改为对应的 **.launch 文件。(如使用 TG 系列雷达,需改成 TG.launch)
6. 解决ubuntu中普通用户没有权限访问USB串口设备问题
将用户添加至dialout用户组,因为tty设备是属于dialout用户组,所以将用户添加到dialout用户组,该用户就具备了访问tty设备的权限;
sudo usermod -a -G dialout username
其中username就是要添加的当前用户名,重启一下即可。