配置宇树激光雷达的时候出现程序报错问题
问题:
问题链接
原因:普通账户没有权限访问设备——也就是ubuntu 存在串口数据读取权限问题
ttyS0设备的用户主为root,所属的组为dialout 同时owner和group都是有相同的rw权限的,但others是没有任何权限的
zhaobojun@zhaobojun:~$ ls -l /dev/ttyS0
crw-rw---- 1 root dialout 4, 64 10月 30 08:10 /dev/ttyS0
使用groups命令,我们就明了了:我们在安装Ubuntu时,安装时使用的账户并不会默认加入dialout组,因此该用户就没有权限可以访问ttyS设备了
解决:想让我们的用户组同样能够获得访问权限:
sudo usermod -a -G dialout zhaobojun #如下指令设置永久可操作
sudo chmod 777 /dev/ttyUSB0 #修改权限为可读可写可执行,但电脑重启之后每次需重新设置
参考
参考
Unitree 4D lidar 每次外接的时候 需要进行如下操作
参考连接 启动 雷达外接设备需要
cd unilidar_sdk/unitree_lidar_ros
source devel/setup.bash
roslaunch unitree_lidar_ros run_without_rviz.launch
#同时 因为laser需要通过USB进行与电脑设备的连接 所以需要每次调试的时候 为外接的USB端口设置权限
sudo su #进入root 权限
chmod 777 /dev/ttyUSB0 #为当前的USB接口设置读取函数的权限
#因为我要需要在pointlio中做实测 所以在类似于打开了laser的SDK后 还需要source pointlio
cd PointLio_ws/
source./devel/setup.bash
roslaunch pointlio xxx.launch(我这里没有为unilidar单独写一个launch的运行文件 )
知识总结
以64线激光雷达为例:
这张图片展示的要点:
基本信息:3维笛卡尔坐标系的所有点云点坐标(x,y,z)
输出映射信息:以雷达为中心,以地面平面X-Y为基面的**(d,θ,z)**坐标系
这里d:表示点云中某点在X-Y平面的投影点,到雷达中心点的距离,这个距离与点云所在的线与高度有关
这里θ:表示:点云点 投影到X-Y平面的点,与X轴正方向轴的夹角,这个角度与同环雷达扫描的timestamp有关,也就是同环扫描对应的是同一个激光雷达的scan,在扫描一圈中对应的点云pcd数据信息。
这里z:表示:实际三维空间点云pcd的高度
这里可以解释为:一般基于雷达扫描一圈,如果单扫描线考虑(扫描一圈对应的扫描点的数量是2000),那么对于角度的分辨率的话就是:360/2000 = 0.18度,我们把雷达在X-Y平面的投影点分成2000个扇区,那么每一个扇区就代表当前的pcd一片点云的数据信息,按照径向距离的不同,分出若干的同心环道(类似磁盘的磁道),这个径向距离的差异体现在不同的扫描线(因为不同的扫描线(64线),扫描线的高度不同 对应着投影不同 所以可以分出64个同心的环道),对于基于不同θ的扇区,则代表着多线激光雷达,每个单线scan扫描一圈对应着不同的扫描角度(扫描一圈对应着不同的timestamp)的pcd点云数据
这个点的疑惑是终于通了,感谢博客感谢大佬
跑通了pointlio之后,发现显示存在n多不理想的情况又排查了一下,发现是rviz的config问题,通过请教了一位冠以资深大学霸加上好朋友的朋友,我的问题出在了坐标系上。rviz_loam.rviz的坐标系显示如下:缺少了laser运动轴的原因是坐标系不对应!target 坐标系选择错了!!!
关注:reference frame 以及 target frame 的设置