WH-Robot2 SLAM小车系统配置与软件安装过程
---边城量子(wechat:shihezichen), 2018.09.09
设备 |
操作系统 |
ROS角色 |
IP |
hostname |
树莓派 |
Ubuntu Mate 16.04 for ARM |
Node |
192.168.2.104 |
mbees-desktop |
PC |
Ubuntu for X86 |
Master |
192.168.2.201 |
rosmaster 备注:可以是运行在Windows上的虚拟机,也可以是独立的Ubuntu; |
PC |
Windows |
NA |
|
备注:仅仅作为操作发起机器,从这台机器发起各项安装指令 |
* 以下将使用树莓派和PC分别指代上述两台设备树莓派Ubuntu 和PC Ubuntu;
* 各自的IP地址规划可能不同, 可根据自己网络规划改成相应的值,注意部分步骤里面也要把IP替换为自己的值;
以下步骤从第(4)开始讲起,前面的硬件组装需要参考网站或自行咨询维航技术人员解决。
对应教程: “[WHBOT2]共享资料下载”: http://www.wh-robot.com/whb/?p=876
备注: 以下过程对上述教程步骤有所补充
####对应教程: “[ROS]树莓派教程一:安装UBUNTU系统 ”: http://www.wh-robot.com/whb/?p=876
备注: 以下过程对上述教程步骤有所补充
#hdmi_drive=1 DVI模式 (没声音)
#hdmi_drive=2 HDMI模式 (如果支持并已启用将有声音输出)
hdmi_drive=2
#hdmi_group 设置HDMI类型
#hdmi_group=1 CEA
#hdmi_group=2 DMT
hdmi_group=2 DMT
#hdmi_mode 设置在CEA或DMT格式下的屏幕分辨率, 根据各自屏幕调整
hdmi_mode=87
hdmi_cvt 1024 600 60 6 0 0 0
#使能硬件接口,这样就可以使能树莓派的I2C、SPI接口了。
dtparam=i2c_arm=on
dtparam=i2s=on
dtparam=spi=on
#超频选项
#默认为700MHz,如果要超频到800MHz
#arm_freq=800
gpu_mem=128
start_x=1
enable_uart=1
dtoverlay=w1-gpio
对应教程: “[ROS]树莓派教程二:SSH配置”: http://www.wh-robot.com/whb/?p=653
备注: 以下过程对上述教程步骤有所补充
备注:首次树莓派连接WIFI成功后如果获取不到IP地址,可再重启一次
注意: 由于此时树莓派ssh server不一定可用, 需要使用屏幕+键盘接入树莓派进行以下配置; 或者windows用cmd, 树莓派用超级终端;
按照网页教程配置即可
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-updates main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-security main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-backports main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial main universe restricted
sudo apt update
在文件的exit语句前加入如下语句
service ssh start
对应教程: “[ROS]树莓派教程三、安装ROS系统(ROS-KINETIC) ”: http://www.wh-robot.com/whb/?p=657
备注: 以下过程与上述教程步骤完全一致
注: 以下过程可以通过SSH客户端远程登录到树莓派执行.
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
sudo apt-get update
sudo apt-get install ros-kinetic-desktop-full
sudo rosdep init
rosdep update
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
sudo apt-get install python-rosinstall
注:如果由于网络原因执行超时, 则多执行几遍
对应教程: “[WHBOT2]教程一:代码编译”: http://www.wh-robot.com/whb/?p=738
备注: 以下过程对上述教程步骤有所补充
注: 以下过程可以通过SSH客户端远程登录到树莓派执行.
执行如下命令关闭树莓派图形界面:
sudo /etc/init.d/lightdm stop
* 避免编译wh-robot2源码时挂死. 等编译完毕后, 再开启.
把源码包(whbot2.tar.gz)上传到树莓派home目录, 然后开始编译
cd ~/
tar -zxvf whbot2.tar.gz
mv whbot2/ros_ws ~/
cd ~/ros_ws
catkin_make
大概几分钟就可以编译好了
备注:如果编译过程中出现如下错误:
virtual memory exhausted: Cannot allocate memory
说明是扩展区大小不够, 出错处理如下步骤所示;
使用free -m 命令查看, 可以发现swap已经为零
$ free -m
total used free shared buff/cache available
mem: 862 64 525 12 271 730
swap: 0 0 0
执行如下命令为树莓派挂接一个512M的swap区
sudo dd if=/dev/zero of=/swapfile1 bs=1024 count=524288
sudo mkswap /swapfile1
sudo chown root:root /swapfile1
sudo chmod 0600 /swapfile1
sudo swapon /swapfile1
sudo vi /etc/fstab
添加以下内容到fstab文件尾
/swapfile1 swap swap defaults 0 0
再查看是否有swap空间
$ free -m
total used free shared buff/cache available
mem: 862 25 729 2 106 779
swap: 511 0 0
此时再执行catkine_make编译,一般就能成功了。
source ~/ros_ws/devel/setup.bash
echo “source ~/ros_ws/devel/setup.bash” >> ~/.bashrc
对应教程: “[WHBOT2]教程三:串口驱动安装”: http://www.wh-robot.com/whb/?p=743
对应教程: “[WHBOT2]教程四:通信波特率修改”: http://www.wh-robot.com/whb/?p=750
备注: 以下过程对上述教程步骤有所补充
修改设备文件, 保证可以始终使用某个固定别名访问某台设备, 不依赖于设备插入顺序。
插入雷达设备到USB, 查看设备信息:
lsusb
得到的信息有一行(不同雷达显示内容稍有不同):
Bus 001 Device 005: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
Bus 001 Device 004: ID 6901:1224
Bus 001 Device 006: ID 10c4:ea60 Cygnal Integrated Products, Inc. CP210x UART Bridge / myAVR mySmartUSB light
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
雷达对应的那一行(第3行)中的ID为10c4:ea60,分别代表vendor和product
串口对应的那一行(第1行)中的ID为 067b:2303, 分别代表vendor和product。
本例中会最终生成三个别名:/dev/whbot, /dev/rplidar, /dev/ydlidar
/dev/whbot:通过串口,连接的是下层STM32的控制板,名为whbot;
/dev/rplidar: 通过USB口连接rpliader雷达;
/dev/ydlidar: 通过USB口连接ydlidar雷达;
树莓派通过USB2TTL连接STM32单板,其中USB在树莓派这侧,通过RX,TX,GND三根线与STM32单板的TX,RX,GND相连(注意TX/RX交叉)。
这一步是为USB2TTL建立一个别名(设备文件),为/dev/whbot,以便于未来树莓派上的程序使用别名访问USB2TTL(本例中使用的是/dev/whbot来访问),从而与STM32通信;
在文件 /etc/udev/rules.d/99-com.rules 最后面添加USB2TTL的定义(注意vendor和product要与上面的串口的信息对应上,本例中为067b和2303):
KERNEL=="ttyUSB*", ATTRS{idVendor}=="067b", ATTRS{idProduct}=="2303", MODE:="0777", SYMLINK+="whbot"
这样就给10c4:ea60设备设了一个别名/dev/whbot, 程序中可以使用这个别名访问设备, 而不论设备是在ttyUSB0或ttyUSB1;
执行:
rosrun whbot setup.sh
这个操作本质上是想/etc/udev/rules.d目录下拷贝whbot.rules、rplidar.rules、ydlidar.rules文件;
待成功后,插入雷达设备, 重启树莓派, 然后执行如下命令查看所有串口驱动和雷达驱动:
ls /dev/ttyAMA*
ls /dev/whbot -l
ls /dev/rplidar -l
ls /dev/ydlidar -l
应该看到分别有指向:
lrwxrwxrwx 1 root root 7 8月 4 18:22 /dev/rplidar -> ttyUSB1
lrwxrwxrwx 1 root root 7 8月 4 18:22 /dev/ydlidar -> ttyUSB1
lrwxrwxrwx 1 root root 7 8月 4 19:42 /dev/whbot -> ttyUSB0
备注:由此可知,在当前树莓派上,ttyUSB1是连接雷达的, ttyUSB0是连接STM32板的;
修改文件:
vi ~/ros_ws/src/whbot_bringup/params/base_params.yaml
修改为如下值:
buadrate: 115200
主机名统一了,后续指代时不会出现混乱, 也比较能够与网站的教程一致。执行:
sudo vi /etc/hostname
把内容改为:
mbees-desktop
保存退出, 然后执行:
sudo vi /etc/hosts
将其中的主机名改为 mbees-desktop,如下:
127.0.1.1 mbees-desktop
保存退出,重启树莓派。
截止为此, 树莓派的配置完成了, 下面修改ubuntu上的配置。
启动ubuntu虚拟机, 然后登录。
修改 /etc/apt/sources.list内容为如下内容:
# deb cdrom:[Ubuntu 16.04 LTS _Xenial Xerus_ - Release amd64 (20160420.1)]/ xenial main restricted
deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties
deb http://archive.canonical.com/ubuntu xenial partner
deb-src http://archive.canonical.com/ubuntu xenial partner
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse
过程同前面的 --- ”树莓派上安装ROS”;
对应教程: “[WHBOT2]教程七:虚拟机UBUNTU编译WHBOT2源代码”: http://www.wh-robot.com/whb/?p=817
过程同前面的 -- ”在树莓派上创建ROS工作空间并编译wh-robot2源码”
对应教程: “[ROS]ROS多机的通信配置”: http://www.wh-robot.com/whb/?p=615
备注: 以下过程对上述教程步骤有所补充
设备 |
操作系统 |
ROS角色 |
IP |
hostname |
树莓派 |
Ubuntu Mate 16.04 for ARM |
Node |
192.168.2.104 |
mbees-desktop |
PC |
Ubuntu for X86 |
Master |
192.168.2.201 |
rosmaster |
修改/etc/hostname 文件, 内容改为: mbees-desktop
在/etc/hosts 文件, 添加/修改为:
127.0.0.1 mbees-desktop
192.168.2.104 mbees-desktop
192.168.2.201 rosmaster
在~/.bashrc 文件中添加两行:
export ROS_HOSTNAME=mbees-desktop
export ROS_MASTER_URI=http://rosmaster:11311
然后重启
修改/etc/hostname 文件, 内容改为 rosmaster
在/etc/hosts 文件, 修改/添加为:
127.0.0.1 rosmaster
192.168.2.104 mbees-desktop
192.168.2.201 rosmaster
在~/.bashrc 文件, 添加两行:
export ROS_HOSTNAME=rosmaster
export ROS_MASTER_URI=http://rosmaster:11311
然后重启
source ~/.bashrc
roscore
备注:此步骤需要树莓派的GUI以便于显示弹出的窗口。
也可以用支持X-Win的终端登录软件例如MoboXTerm来从windows远程登录树莓派执行,它会在windows端弹出窗口。
source ~/.bashrc
rosrun turtelsim turtlesim_node
可以在弹出的对话框上看到小乌龟
在PC Ubuntu机器上的另外一个终端窗口中执行(可以是远程SSH):
source ~/.bashrc
rosrun turtlesim turtle_teleop_key
当出现语句:
$ rosrun turtlesim turtle_teleop_key
Reading from keyboard
---------------------------
Use arrow keys to move the turtle.
就可以使用键盘上下左右键控制乌龟运动;
对应教程: “[WHBOT2]教程十:配置WHBOT2控制参数”: http://www.wh-robot.com/whb/?p=884
注:教程中有如何连接电源线, 如何连接电机的说明。
依据下图二, STM32串口部分排布,从右向左分别是 TX1, RX1, 5V, GND
对应教程: “[WHBOT2]教程十:配置WHBOT2控制参数”: http://www.wh-robot.com/whb/?p=828
备注: 以下过程与上述教程步骤完全一致
roslaunchwhbot_bringup bringup.launch
若执行正常,会出现:
其中可以看到, 树莓派尝试通过 /dev/whbot 端口连接STM32板(main board)
而且当前的RobotParameters值也被打印出来了;
由于有图形化窗口, 因此以下语句需要在PC Ubuntu的图形界面的终端命令行中执行。 也可以使用MoboXTerm来远程登录到PC Ubuntu来执行。
rosrun rqt_reconfigure rqt_reconfigure
在弹出的对话框中, 调节whbot_driver的各项参数, 改为如下值:
* 修改完毕后, 在空白处单击即可完成配置下发
备注:
wheel_diameter: 轮子直径
wheel_track: 轴距
encode_resolution: 编码数(总数)
对应教程: “[WHBOT2]教程十二:WHBOT2运动控制”: http://www.wh-robot.com/whb/?p=899
备注: 以下过程与上述教程步骤完全一致
如果rosmaster没有启动则执行如下语句,如果已经启动直接进入下一步
roscore
如果whbot_bringup没有执行则执行如下语句,如果已经启动直接进入下一步
roslaunch whbot_bringup bringup.launch
roslaunch whbot keyboard_teleop.launch
此时会出现如下界面:
按i前进, 按,后退等等
注意:如果出现了如下错误,提示 teleop_twist_keyboard.py的line 2出错,参照如下方式解决。
可以修改 ~/ros_ws/src/whbot/scripts/teleop_twist_keyboard.py
前两行原来为:
#!/usr/bin/env python
import roslib; roslib.load_manifest('teleop_twist_keyboard')
改为:
#!/usr/bin/env python
import roslib
#roslib.load_manifest('teleop_twist_keyboard')
然后保存, 重新编译
cd ~/ros_ws
catkin_make
待编译成功后,再重新执行
对应教程: “WHBOT2]教程十三:WHBOT2里程校准”: http://www.wh-robot.com/whb/?p=901
备注: 以下过程与上述教程步骤完全一致
如果rosmaster没有启动则执行如下语句,如果已经启动直接进入下一步
roscore
如果whbot_bringup没有执行则执行如下语句,如果已经启动直接进入下一步
roslaunch whbot_bringup bringup.launch
rosrun whbot calibrate_linear.py
屏幕会显示如下语句:
[INFO] [1535203599.788825]: Bring up rqt_reconfigure to control the test.
由于有图形化窗口, 因此以下语句需要在PC Ubuntu的图形界面的终端命令行中执行。 也可以使用MoboXTerm来远程登录到PC Ubuntu来执行。
rosrun rqt_reconfigure rqt_reconfigure
出现如下界面:
test_distance: 测试距离
speed:速度
tolerance:误差
odom_linear_scale_correction: 比例参数, 开始时可先设置为1
补充说明:
机器人最底层左右各有两个M3的孔,可加装4个螺丝,来作为路程的定位指示; 然后在地上画一米的直线,然后让其中一个螺丝对准0刻度,勾选上图中的“start_test”,开始运行小车,待停止后检查定位螺丝是否到达所需的距离,如果没有就需要对参数进行调整
如果无法走到相应的距离,因减小odom_linear_scale_correction,改为 真实距离/测试距离。
例如测试距离0.5米,只走了0.495米,则比例调整为0.495/0.5 = 0.99;
对应教程: “WHBOT2]教程十四:WHBOT2旋转角度校准”: http://www.wh-robot.com/whb/?p=905
备注: 以下过程与上述教程步骤完全一致
如果rosmaster没有启动则执行如下语句,如果已经启动直接进入下一步
roscore
如果whbot_bringup没有执行则执行如下语句,如果已经启动直接进入下一步
roslaunch whbot_bringup bringup.launch
rosrun whbot calibrate_angular.py
屏幕会显示如下语句:
[INFO] [1535206051.359211]: Bring up rqt_reconfigure to control the test.
由于有图形化窗口, 因此以下语句需要在PC Ubuntu的图形界面的终端命令行中执行。 也可以使用MoboXTerm来远程登录到PC Ubuntu来执行。
rosrun rqt_reconfigure rqt_reconfigure
出现如下界面:
test_angle: 测试角度
speed:速度
tolerance:误差
odom_linear_scale_correction: 比例参数, 开始时可先设置为1
补充说明:
机器人最底层左右各有两个M3的孔,可加装4个螺丝,来作为路程的定位指示; 然后在地上画一米的直线,然后让其中一个螺丝对准0刻度,勾选上图中的“start_test”,开始运行小车,待停止后检查定位螺丝是否回到原来的这条线(因为旋转了360°),如果没有就需要对参数进行调整。
由于没有使用whbot附带的雷达,因此需要把自己雷达的驱动融入到whbot的工程中。 以下操作在树莓派上操作,因为是树莓派访问雷达;
在ros_ws目录下,拷贝如雷达的驱动的package,名为iiiroboticslidar2_ros,拷贝之后如下图:
进入目录显示:
备注:这一步操作,是给whbot2工程新增了一个package,根据其中package.xml的描述,这个package的 名字为iiiroboticslidar2。
将iiiroboticslidar2_ros/launch下的雷达启动文件3iroboticslidar2.launch拷贝到whbot_bringup/launch下:
cd ~/ros_ws/src
cp iiiroboticslidar2_ros/launch/3iroboticslidar2.launch whbot_bringup/launch/
备注:这一步操作,是让whbot2的whbot_bringup具有启动节点iiiroboticslidar2的能力,具体可以参考3iroboticslidar.launch的内容。
打开3iroboticslidar2.launch文件,让其中的dev指向别名,把
ttyUSB0"/>
laser"/>
改为:
ort" type="string" value="/dev/rplidar"/>
laser_link"/>
备注:为什么这里可以直接使用/dev/rplidar,因为经过lsusb查看,我自己的雷达的vendor和product和whbot中的rplidar完全一样; 如果不一样,则需要的“7. 安装树莓派窗口驱动,修改波特率”那个步骤,为自己的雷达专门建立一个别名和rule文件,在rule文件中写入自己的vendor和product;然后在本步骤的launch文件中填写自己的/dev下的别名;
备注:laser_link是whbot所需frame_id的value(可参见它自己的rdlidar.launch的定义);
备注:在此树莓派上,/dev/rplidar指向/dev/ttyUSB1,外部接的是雷达:
$ ls -al /dev/rplidar
lrwxrwxrwx 1 root root 7 9月 9 17:42 /dev/rplidar -> ttyUSB1
cd ~/ros_ws/src/whbot_bringup/launch/
vi robot.launch
把如下内容:
改为:
备注:这一步操作,是让robot.launch中新增一个雷达的选项,robot.launch具体启动哪款雷达,是根据环境变量WHBOT_LIDAR来决定的;如其中的下句所示:
当然也可以在上面这句把变量${arg lidar}.launch写死为某个具体的雷达的launch文件。
因为加入了新的package, iiiroboticslidar2,而且把这个package对应的node节点的launch也加入到了robot.launch中,因此需要重新编译工程,使得这部分新增代码生效:
cd ~/ros_ws
catkin_make
执行后,会列出此时的工程所包含的所有的packages:
执行如下语句(如果已经安装可以跳过):
sudo apt install ros-kinetic-move-base
sudo apt install ros-kinetic-slam-gmapping
sudo apt install ros-kinetic-map-server
sudo apt install ros-kinetic-image-view
备注: move-base用于导航基础包,map-server是建图时的基础包,image-view是摄像头显示时需要的基础包;
备注:可以使用apt-cache search ros-kinetic 搜索kinetic的可用的包, 例如:
apt-cache search ros-kinetic | grep map-server
查找所有map-server的可用的包。
对应教程: “WHBOT2]教程十五:WHBOT2利用ROS建图”: http://www.wh-robot.com/whb/?p=912
备注: 以下过程与上述教程步骤稍有修改;
ROS驱动中提供了cmd_vel的订阅以及odom的发布。
如果rosmaster没有启动则执行如下语句,如果已经启动直接进入下一步
roscore
如果如下语句没有执行则执行如下语句,如果已经启动直接进入下一步
export WHBOT_LIDAR=3iroboticslidar2
export WHBOT_MODEL=whbot2
roslaunch whbot_navigation gmapping.launch
由于有图形化窗口, 因此以下语句需要在PC Ubuntu的图形界面的终端命令行中执行。 也可以使用MoboXTerm来远程登录到PC Ubuntu来执行。
roslaunch whbot_navigation view_nav.launch
执行后显示如下图形界面:
对应教程: “WHBOT2]教程十六:WHBOT2利用建好地图导航”: http://www.wh-robot.com/whb/?p=908
备注: 以下过程与上述教程步骤完全一致
如果rosmaster没有启动则执行如下语句,如果已经启动直接进入下一步
roscore
如果如下语句没有执行则执行如下语句,如果已经启动直接进入下一步
export WHBOT_LIDAR=3iroboticslidar2
export WHBOT_MODEL=whbot2
roslaunch whbot_navigation nav.launch map_name:=whbot2_lab.yaml
由于有图形化窗口, 因此以下语句需要在PC Ubuntu的图形界面的终端命令行中执行。 也可以使用MoboXTerm来远程登录到PC Ubuntu来执行。
roslaunch whbot_navigation view_nav.launch
执行后显示图形界面,在图形界面上选择机器人的目标,选择好之后,放开鼠标,就可以看到机器人开始导航了,导航效果主要是看你上一步所建立的地图,如果建图较好,则导航效果还是不错的:
对应教程: “WHBOT2]教程十七:WHBOT2视频显示”: http://www.wh-robot.com/whb/?p=915
备注: 以下过程与上述教程步骤完全一致
视频有如下应用方面:
cd ~/ros_ws
mkdir -p usb_cam/src
cd usb_cam/src
git clone https://github.com/bosch-ros-pkg/usb_cam.git
cd ~/ros_ws
catkin_make
source ~/ros_ws/devel/setup.bash
roscd usb_cam
由于有图形化窗口, 因此以下语句需要在树莓派的图形界面的终端命令行中执行:
rosrun usb_cam usb_cam_node
此时只能看到摄像头打开而不会看到图像; 如果想看当前图像,可以使用如下语句:
rosrun image_view image_view image:=/usb_cam/image_raw
其中/usb_cam/image_raw是usb_cam默认发布图像的topic;如果一切顺利,则可以看到当前摄像头实时视频窗口:
usb_cam的默认launch文件在如下目录
~/ros_ws/usb_cam/src/usb_cam/launch/usb_cam-test.launch
如果想自定义一个launch文件,可以复制并编辑它:
其中”video_device” value=”dev/video0” />代表第一个摄像头,可以改为其他摄像头;修改好之后运行这个文件usb_cam.launch:
roslaunch usb_cam usb_cam.launch
roscore
roslaunch usb_cam usb_cam.launch
由于有图形化窗口, 因此以下语句需要在PC Ubuntu的图形界面的终端命令行中执行:
roslaunch whbot_navigation view_nav.launch
可以看到启动了rviz界面,为其添加视频窗口:
添加成功后,设置Topic为 /usb_cam/image_raw
这时候就可以在rviz窗口看到视频了。
至此,整个SLAM小车就完全调通了;验证过程中使用gmapping的开源库。
从仅仅熟悉树莓派GPIO编程和Linux开发开始,到逐步接触激光雷达、差速底盘、ROS、SLAM库并把整个过程调通,中间学习到了很多技能和知识点,谨以此文作为纪录,也希望其他类似的人员可以少走弯路。
接下来的任务,就是钻研真正具有技术含量的地方----深度理解SLAM所涉及的数学原理和开源库的实现过程。
感谢维航技术人员的耐心解答,最后,也祝维航科技能越办越好!