将小车的工作功耗切换到 10W(使用四个 CPU 核),此命令只需运行一次:
sudo nvpmodel -m 0
使用命令 nvpmodel -q
来确认小车是否已切换到 MAXN 模式。切换完成后应该不会再变回去了,可以重启一次确认一下。
因为运行在小车上的 ROS 结点会附带时间戳信息,配置好小车的时间有利于测试延迟,以及按照时间来正确匹配图像帧与神经网络的输出。
sudo apt install ntp
sudo vim /etc/ntp.conf # 此处建议按照 https://tuna.moe/help/ntp/ 修改,以方便国内使用
sudo systemctl restart ntp
sudo timedatectl set-timezone Asia/Shanghai
date # 确认输出的时间日期是否正确
sudo apt install ros-melodic-image-transport ros-melodic-compressed-image-transport
然后克隆 https://github.com/ZeppLu/jetbot_ros 及 https://github.com/ZeppLu/ros_deep_learning ,并用 catkin_make
编译。
sudo apt install ros-melodic-image-transport ros-melodic-compressed-image-transport ros-melodic-cv-bridge ros-melodic-message-filters ros-melodic-rqt-image-viewer
然后克隆本项目,并用 catkin_make
编译。
打开三个 ssh 窗口,分别运行(以 ssd-mobilenet-v2 为例,其他模型未测试):
roscore
rosrun jetbot_ros jetbot_camera _width:=640 _height:=360 _framerate:=30.0
rosrun ros_deep_learning detectnet /detectnet/image_in:=/jetbot_camera/raw _model_name:=ssd-mobilenet-v2
roslaunch vision_viz detections_viz.launch
图片源为 360p 30fps 时,网络大约能以 20fps 的速率输出检测结果(用命令 rostopic hz /detectnet/detections
可查看输出速率)。修改 jetbot_camera
启动参数可改变摄像头输出的分辨率与帧率,输出 720p 30fps 时,物体检测的速率降至约 15fps,同时电脑上的可视化窗口隔一段时间会卡一下,尤其是画面变动剧烈时,推测是网络问题导致的。