x5 学习笔记
x5 610 平台, ros 系统平台,学习笔记。
1 小车端开机,然后连接无线网,通过 ifconfig 获得 ip 地址。
2 虚拟机端 ssh 到小车,修改 .bashrc 中的 rikibase(车体是几驱的,轮子是什么样的), 然后 source .bashrc 让小车重新加载 bashrc.
3 虚拟机修改自身的 .bashrc 中的 ROS_MASTER_URI,这个改为 小车的 ip 地址,方便后面的话题控制。
4 ssh 小车输入 roslaunch esprobot bringup.launch 来启动。
5 虚拟机输入 rostopic list 来列出小车已开启的话题。
6 输入 rostopic echo /battery 就可以打印具体的话题信息。
7 输入 rosrun teleop_twist_keyboard teleop_twist_keyboard.py 可以进行键盘控制车体运动。
8 在小车上输入 roscd esprobot 进入 src 目录,cd param/imu/ 这个下面有 imu_calib.yaml 文件,是用来保存 imu 校准的。 rosrun imu_calib do_calib 来执行 imu 校正程序,按 enter 按键,一次校准一个轴。六个轴校正完了之后,就回保存到 yaml 文件里面。然后输入 rostopic echo /imu/data 来读取实时的 数值。
9 ros 节点的 loginfo,可以通过 虚拟机上面使用 rostopic echo rosout 来获取相应的节点 log,然后再虚拟机端进行分析。
参考: https://www.cnblogs.com/lijianming180/p/12014217.html https://www.cnblogs.com/cj2014/p/4396238.html
10. 以前进方向为 X 轴,左右平移为 Y 轴,旋转为 Z 轴。 绕着 X 选择,称为横滚 roll;绕着 Y 旋转,称为俯仰角 pitch; 绕着 Z 选择,称为 航向角 yaw; 相应的角度就是 r, p, y。
参考: https://www.bilibili.com/video/BV1JJ411E7iY
11. x5 imu 校正,打开到 /home/openailab/ESP/demo/X5Pro/catkin_ws/src/esprobot/param/imu 目录,运行 rosrun esp_imu_calib do_calib ,然后根据提示按 enter 按键,最后在当前目录生成 imu 的校正文件,imu_calib.yaml。 如果在其他目录下面运行这条命令,那么需要把这个生成的文件放到相应的 imu 目录里面即可。
停止 bringup,然后重启,就可以自动加载这个文件了。
12. x5 角速度校正,启动 rosrun esprobot_nav calibrate_angular.py,另一个终端启动 rosrun rqt_reconfigure rqt_reconfigure, 然后在里面的 angular 里面,点击 test。先要把手机的指南针打开,放到小车上面,这时候就可以看到到底转了多少的角度,这个角度 除以 360度,就是相应的系数,这个系数 填到 scale 里面,再次测试一下,看看角度偏差。角度偏差在几度的情况下,就可以接受这个系数了。
打开 /home/openailab/ESP/demo/X5Pro/catkin_ws/src/esprobot/launch 下的 bringup.launch,找到 angular_scale 这一项,然后修改为调试好的系数即可。然后重启 bringup,就可以按照新的来运动了。
13. x5 线速度校正,启动 rosrun esprobot_nav calibrate_linear.py ,另一个终端启动 rosrun rqt_reconfigure rqt_reconfigure, 然后在里面的 calibrate_linear 里面,点击 test。看看到底移动了多少米,然后除以 1米,得到的系数填写到 scale 里面,再次测试一下,看看偏差,如果觉得可以接受,就打开 bringup.launch,找到 linear_scale,然后修改后面的系数即可。
14. slam, 先ssh到小车,然后启动 roslaunch esprobot lidar_slam.launch 。然后再虚拟机这边启动 rosrun rviz rviz,启动建图工具,最大化之后,左上角 file,点击 open config,选择 /home/riki/catkin_ws/src/rikirobot_project/rikirobot/rviz 下的 slam.rviz,选择 close without saving,然后就可以看到初步的地图了,按住中键可以平移地图,按住左键可以旋转地图。
再 虚拟机这边再打开一个终端,启动 键盘,rosrun teleop_twist_keyboard teleop_twist_keyboard.py, 把速度调低一些 0.3,角速度调低一些 0.5,然后通过键盘让小车跑一圈,基本地图就可以了,最后移动小车,让小车停在原点。然后再打开一个终端,ssh 过去,到 /home/openailab/ESP/demo/X5Pro/catkin_ws/src/esprobot/maps 目录下面,执行 map.sh,就可以把这次的地图保存下来,保存为 house.pgm。
15. python 中的 spin() 函数作用是阻塞直到节点被关闭。一般用在大循环 while 后面。
16. rqt_console 命令用来在虚拟机端用 GUI 查看收到的消息。
17. rqt_graph 命令用来在虚拟机端看节点间的调用关系。
参考: https://www.ncnynl.com/archives/201611/1059.html
18. 新增话题。需要在三个地方有改动,第一是在节点处需要新增 msg 头文件和添加话题,发送和接受话题; 第二是在 master 处新增 msg 文件,并修改相应的 cmake 文件和 package.xml 文件; 第三实在 虚拟机处 新增 msg 文件,并修改相应的 cmake 文件和 package.xml 文件。 然后都要重新编译,才可以正常工作。
节点处的 msg 头文件中的 md5 数值可以先随便写一个,然后调试的时候, bringup 后打印的信息里面会提示相应的 md5 不匹配,这时候把相应的 md5 的数值复制到头文件里面即可。 参考: https://blog.csdn.net/qq_38288618/article/details/103224896 https://www.cnblogs.com/CZM-/p/5925689.html
19. ERROR: Cannot load message class for [自己定义的message]. Are your messages built?
cd ~/catkin_ws
source devel/setup.bash
rostopic echo /[你的topic]
20. ros master 端控制移动指定距离。
参考: https://www.it610.com/article/1293147990596329472.htm https://www.cnblogs.com/sea-stream/p/11129964.html https://blog.csdn.net/weixin_43566648/article/details/89818426?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~all~sobaiduend~default-1-89818426.nonecase&utm_term=ros%E5%8F%91%E5%B8%83%E8%B7%9D%E7%A6%BB&spm=1000.2123.3001.4430 https://blog.csdn.net/just_do_it567/article/details/107481781 https://www.cnblogs.com/ly570/p/11007569.html
PYTHON 学习
https://www.runoob.com/python/python-tutorial.html https://www.runoob.com/python3/python3-tutorial.html
ROS PYTHON 学习
https://www.ncnynl.com/archives/201609/838.html https://www.ncnynl.com/archives/201701/1212.html https://www.ncnynl.com/archives/201611/1055.html https://www.ncnynl.com/archives/201701/1273.html
参考:
https://blog.csdn.net/ykevin0510 https://blog.csdn.net/cyril__li/article/details/78110047 https://blog.csdn.net/qq_36349536/article/details/83617213