这是最终篇,主要是摄像头,slam建图,还有导航
摄像头
核心操作:不要带点拔插!!!!
树莓派执行
raspi-config
选中
interfacing options
选中camera,选择yes
测试是否连接
raspistill -o cam.jpg
如果连接成功,会看到一个窗口,窗口内容是摄像头看到的内容,等到5s(默认时间,可以调)后,会拍下一张照片
如果卡住了,可能是通信有问题,这个时候把interfacing options中的所有东西都设为yes
如果还不行,就检查插线是不是插反了,或者是接触不良
如果还不行,恭喜你,板子和摄像头至少有一个是坏的,如果你尝试带电拔插,那100%摄像头报废了,不过这东西也不贵,就当买个教训
SLAM建图
这一步很简单,基本按部就班就可以了
首先在pc终端打开ros节点,保持窗口
roscore
接着为树莓派接上激光雷达,并且提供连接权限(树莓派)
sudo chmod a+rw /dev/ttyUSB0
启动launch文件(树莓派)
roslaunch turtlebot3_bringup turtlebot3_robot.launch
打开终端,运行SLAM启动文件(pc)
export TURTLEBOT3_MODEL=waffle_pi
roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=gmapping
这一句可能会报错,如果报错就运行
source ~/catkin_ws/devel/setup.bash
再运行上面代码
如果足够幸运,这里是可以看到一个可视化窗口,里面是slam建图的结果
操作小车扫图,技巧是尽量慢,尽量不要大幅度快速转弯
这里推荐不要用手柄,用键盘操作
新开一个终端
export TURTLEBOT3_MODEL=waffle_pi
source ~/catkin_ws/devel/setup.bash
roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
记住,这里面的wasdx控制是增量型控制方式,举个例子,按一下w不是代表前进一下,而是表示在原有的速度上加快一点,同理x也是
a和d表示改变行驶角度,s表示恢复原样,这个不代表停止!!!!
导航
在上面扫完图之后,保存地图
rosrun map_server map_saver -f ~/map
文件名叫map
[Remote PC]启动导航文件
export TURTLEBOT3_MODEL=waffle_pi
roslaunch turtlebot3_navigation turtlebot3_navigation.launch map_file:=$HOME/map.yaml
注意:地址请输入本机地图保存位置
在开始导航之前,TurtleBot3 需要估计它的位置和姿势。 点击 2D Pose Estimate 按钮,通过单击并拖动地图上的方向来设置地图上的大致位置。如 果没有定位好,请重复调整 2D Pose Estimate
v一切准备就绪后,让我们尝试通过导航 GUI 进行 move 命令。如果按 2D Nav GoalRViz 菜单中的,则会出现一个非常大的绿色箭头。该绿色箭头是可以指定机器人目的 地的标记。箭头的根是机器人的 x 和 y 位置,箭头所指的 theta 方向是机器人的方向。在机 器人将要移动的位置单击此箭头,然后将其拖动以设置方向
至此,恭喜完成SLAM建图和导航,但是在这次实习里似乎摄像头没啥用,确实没啥用,下面分享一下调用的方式
树莓派上运行:
roslaunch turtlebot3_bringup turtlebot3_rpicamera.launch
PC运行以下命令
rqt_image_view
会弹出一个窗口,里面是摄像头的内容,如果没有的话,可能是因为你打开了rviz的话,在rviz的左边栏里有个img,点击这个,就能看到摄像头内容
如果摄像头很黄,物理上的黄,可能是因为那层膜没撕开,撕开就完事了