安装ESIM事件相机模拟器遇到的一些问题及解决方法
安装部分:
如果您的系统上尚未安装,请安装ROS。
一行代码安装ROS的方法另一篇博文已经写过了点击此处
我装的版本是ros的noetic,对应ubuntu20.04
我们建议专门为模拟器创建一个新的 catkin 工作空间,如下所示:
mkdir -p ~/sim_ws/src && cd ~/sim_ws
catkin init
catkin config --extend /opt/ros/noetic --cmake-args -DCMAKE_BUILD_TYPE=Release
vcstools如果您还没有安装它:
sudo apt-get install python-vcstool
安装报错,参考此处解决
克隆此存储库并运行vcstools:
cd src/
git clone git@github.com:uzh-rpg/rpg_esim.git
vcs-import < rpg_esim/dependencies.yaml
报错提示不能连接到github.com,参考此处解决
安装pcl_ros(注意第一行noetic处为对应版本):
sudo apt-get install ros-noetic-pcl-ros
sudo apt-get install libproj-dev
安装glfw:
sudo apt-get install libglfw3 libglfw3-dev
安装glm:
sudo apt-get install libglm-dev
可选安装轨迹服务器:
sudo apt-get install ros-noetic-hector-trajectory-server
禁用不需要的包:
cd ze_oss
touch imp_3rdparty_cuda_toolkit/CATKIN_IGNORE \imp_app_pangolin_example/CATKIN_IGNORE \imp_benchmark_aligned_allocator/CATKIN_IGNORE \imp_bridge_pangolin/CATKIN_IGNORE \imp_cu_core/CATKIN_IGNORE \imp_cu_correspondence/CATKIN_IGNORE \imp_cu_imgproc/CATKIN_IGNORE \imp_ros_rof_denoising/CATKIN_IGNORE \imp_tools_cmd/CATKIN_IGNORE \ze_data_provider/CATKIN_IGNORE \ze_geometry/CATKIN_IGNORE \ze_imu/CATKIN_IGNORE \ze_trajectory_analysis/CATKIN_IGNORE
构建event_camera_simulator节点:(注意退出到该系列文件的根目录)
catkin build esim_ros
提示:Errors << catkin_tools_prebuild:cmake /root/sim_ws/logs/catkin_tools_prebuild/build.cmake.014.log
CMake Error at /opt/ros/noetic/share/catkin/cmake/empy.cmake:30 (message):
Unable to find either executable ‘empy’ or Python module ‘em’… try
installing the package ‘python3-empy’
Call Stack (most recent call first):
/opt/ros/noetic/share/catkin/cmake/all.cmake:164 (include)
/opt/ros/noetic/share/catkin/cmake/catkinConfig.cmake:20 (include)
CMakeLists.txt:4 (find_package)
解决方法,参考此处
加了那行链接后,一顿操作,删了build、devel、logs文件夹,然后又执行,巴拉巴拉,最后又删了,但是上面的语句突然就可以执行了,不过我把conda环境换成了2.7
为您的工作区创建一个别名,以便下次轻松获取它。
echo "source ~/sim_ws/devel/setup.bash" >> ~/setupeventsim.sh
chmod +x ~/setupeventsim.sh
在您的.bashrc文件中,添加以下行:
alias ssim='source ~/setupeventsim.sh'
从现在开始,ssim在终端中输入将初始化模拟器工作区(bash如果您想在编辑.bashrc文件后立即尝试此操作,则需要先运行。
测试部分:
按照wiki,选择Planar Renderer来测试模拟器是否已经配置妥当,Planar Renderer可在一个平面场景(一个贴有纹理的平面)上模拟3D摄像机的运动。
设置绝对路径example.conf:
roscd esim_ros gedit cfg/example.conf
务必仔细检查修改路径(路径的第二小节),不然无法继续执行。
运行模拟器,如下所示:
roslaunch esim_ros esim.launch config:=cfg/example.conf
如果此处有如下提醒:
网上有好几种相关的方法,但是对我适用的就是vim ~/.bashrc,insert编辑,删除source /opt/ros/noetic/setup.bash这一行,esc键,输入:wq,最后source~/.bashrc
修改后,提示:
解决方法:安装cv2
————提示pip命令不可用,于是sudo easy_install pip
pip install opencv-python (如果只用主模块,使用这个命令安装)
#pip install opencv-contrib-python (如果需要用主模块和contrib模块,使用这个命令安装)
#如果执行还是有问题,用sudo install opencv-python
安装成功,参考此处
重新运行测试部分,报错bash: roscd: command not found
需要在工作文件夹的根目录,即devel为子目录时,source devel/setup.bash
(cd /root/sim_ws)
提示:ModuleNotFoundError: No module named ‘cv_bridge’
解决方法:sudo apt-get install ros-noetic-cv-bridge
(注意noetic部分为ros对应版本)
安装完成后,输出:
打开一个新终端,可视化模拟器的输出:
roscd esim_visualization rviz -d cfg/esim.rviz
也打开rqt以查看更多可视化内容:
roscd esim_visualization rqt --perspective-file cfg/esim.perspective
功能部分:
可选)下载示例视频
作为示例输入视频,我们将使用来自国家地理的这段精彩视频,该视频显示了使用 Phantom 相机以每秒 1200 帧的速度记录的奔跑的猎豹。
创建一个工作文件夹:
mkdir -p /tmp/cheetah_example
cd /tmp/cheetah_example
#我创在之前的工作目录里的,所以删除掉了tmp前面的/
youtube-dl使用( )从 YouTube 下载视频pip install youtube-dl
:
youtube-dl https://youtu.be/THA_5cqAfCQ -o cheetah
我这里因为服务器进不去外网,所以是直接在youtube里面下载的
剪切相关的视频部分。在我们的例子中,我们将把慢动作部分从2’07切割成2’47’':
ffmpeg -i cheetah.mkv -ss 00:02:07 -t 00:00:40 -async 1 -strict -2 cheetah_cut.mkv
ffmpeg安装,参考此处:
conda config --add channels conda-forge
conda install ffmpeg
pip install ffmpy
或者,将视频调整为更小的尺寸以加快处理速度。在这里,我们将视频调整为宽度640:
ffmpeg -i cheetah_cut.mkv -vf scale=640:-1 -crf 0 cheetah_sd.mkv
为 ESIM 预处理视频
frames将视频导出到文件夹中的单个帧序列:
mkdir frames
ffmpeg -i cheetah_sd.mkv frames/frames_%010d.png
最后,在文件夹中创建一个images.csv文件frames,这是 ESIM 所必需的。该文件的每一行都包含图像时间戳和路径,格式为timestamp_in_nanoseconds,frames_xxxxx.png::
roscd esim_ros
python scripts/generate_stamps_file.py -i /workspace/e2sri-master/tmp/cheetah_example/frames -r 1200.0
此处路径更换为自己的,提示
使用 ESIM 模拟事件
rosrun esim_ros esim_node \--data_source=2 \--path_to_output_bag=/workspace/e2sri-master/tmp/out.bag \--path_to_data_folder=/workspace/e2sri-master/tmp/cheetah_example/frames \--ros_publisher_frame_rate=60 \--exposure_time_ms=10.0 \--use_log_image=1 \--log_eps=0.1 \--contrast_threshold_pos=0.15 \--contrast_threshold_neg=0.15
如果您收到错误消息:Could not find ROS master,请打开一个新终端,进入工作文件夹,source devel/setup.bash
然后roscore按如下方式启动:roscore
。
哦,我检查了一下,[rosrun] Couldn’t find executable named esim_node below /workspace/e2sri-master/src/rpg_esim/event_camera_simulator/esim_ros报错是因为路径问题,然而一般的该问题的方法并不能解决我的问题,经过很多资料查阅,是catkin build esim_ros
这一步有问题,而重新执行时有error,所以参考此处,安装cmake
执行sudo apt-get install ros-noetic-navigation
,然后重新build,成功了多几个,但是还是有19个packages abandoned
参考此处,缺少什么包就安装什么包
sudo apt-get install ros-noetic-moveit-ros-planning-interface
注意ros版本和包名字中_换成-
还是有很多failed和abandoned,用了下catkin clean
然后重新catkin build esim_ros
,还有五个包有问题……
提示cannot find -lassimp,apt-get install libassimp-dev
解决,通用为cannot find -lxxx,那么apt-get install libxxx-dev
要哭出来了,终于!!!
再把后面的步骤都执行一下,终于跑起来了!!!!
重新开启终端:
rosrun dvs_renderer dvs_renderer events:=/cam0/events
提示:[ERROR] [1650011355.623822086]: [registerPublisher] Failed to contact master at [localhost:11311]. Retrying…
原因是没有打开roscore,运行一下就好了
重新开启终端:
rosbag play /workspace/e2sri-master/tmp/out.bag -l -r 0.1
重新开启终端:
rqt_image_view /dvs_rendering
报错could not find or load the Qt platform plugin windows
参考此处,添加常用QT5环境变量
#export QT_QPA_PLATFORM=eglfs:size=800x480
#export FRAMEBUFFER=/dev/fb1
export QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/qt5/plugins
export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0:size=800x480:mmSize=800x480:offset=0x0:tty=/dev/tty1
export QT_QPA_PLATFORM='offscreen'
export QT_QPA_FONTDIR=/usr/lib/fonts
export QT_QPA_GENERIC_PLUGINS=tslib
export QT_QPA_GENERIC_PLUGINS=evdevmouse:/dev/input/mouse0
export QT_QPA_GENERIC_PLUGINS=evdevkeyboard:/dev/input/event2
export QT_DEBUG_PLUGINS=1
export QT_LOGGING_RULES=qt.qpa.input=true
此处报错了……还没有解决
用自己的视频模拟事件流
因为我使用的是图片,反正也要把视频拆成一帧一帧的,所以我就直接用的图片,放到了/workspace/e2sri-master/my_video/frames目录下
ssim
roscd esim_ros
python scripts/generate_stamps_file.py -i /workspace/e2sri-master/my_video/frames -r 1200.0
ssim报错bash: ssim: command not found,source ~/.bashrc一下就好了
文件夹中有images.csv,内容如图:
(1200表示的是输入视频的帧率。如果你不知道输入视频的帧率,那就可以打开那个视频,看看时长。然后看看frames文件夹下拆成了多少帧,二者一除就知道了。)
之后,执行模拟器指令(要确保另一个终端里开着roscore)
rosrun esim_ros esim_node \--data_source=2 \--path_to_output_bag=/workspace/e2sri-master/my_video/out.bag \--path_to_data_folder=/workspace/e2sri-master/my_video/frames \--ros_publisher_frame_rate=60 \--exposure_time_ms=10.0 \--use_log_image=1 \--log_eps=0.1 \--contrast_threshold_pos=0.15 \--contrast_threshold_neg=0.15
–data_source=2: 告诉 ESIM 从包含图像的文件夹中读取。ESIM 将查找images.csv描述要读取的图像时间戳的文件。
–path_to_data_folder:框架和文件所在文件夹的路径images.csv。
–path_to_output_bag:生成的数据(事件和帧)将被保存到这个位置的 rosbag 中
–ros_publisher_frame_rate:模拟 APS(帧)传感器的帧速率(以每秒帧数为单位)。
–exposure_time_ms:模拟 APS(帧)传感器的曝光时间(以毫秒为单位)。
–use_log_image=1: 告诉 ESIM 在对数强度域中操作。这意味着每个输入图像都将转换为日志,如下所示:L = ln(I / 255 + eps),其中eps通过–log_eps参数设置。
–contrast_threshold_pos和–contrast_threshold_neg:正(或负)对比度阈值的值。较低的值意味着较高的灵敏度(更多事件)。较高的值意味着较低的灵敏度(较少的事件)。
这样执行完,就生成了一个out.bag文件。
然后还是和之前跑样例一样,开一个新的终端:
rosrun dvs_renderer dvs_renderer events:=/cam0/events
如果之前本身就开着,那就不用执行上面这步了。
然后回到原终端,播放bag:
rosbag play /workspace/e2sri-master/my_video/out.bag -l -r 0.1
这里 -l 表示是循环播放。-r表示是慢速播放。如果你想跟原视频同步,那么把 指令中的-r 0.1给去掉。
开一个新的终端:
rqt_image_view /dvs_rendering
ERROR: cannot launch node of type [image_view/extract_images]: image_view
sudo apt-get install ros-noetic-image-view
参考此处
将得到的output.bag转为图片帧形式
查看.bag文件信息
rosbag info xxx.bag
#rosbag info /workspace/e2sri-master/my_video/out.bag
显示:
因为这样获取到的图像太少了,所以将上面的1200fps改为了25fps
在/root/sim_ws/文件夹中创建export.launch文件,内容为
<launch><node pkg="rosbag" type="play" name="rosbag" args=" /workspace/e2sri-master/my_video/out.bag"/><node name="extract" pkg="image_view" type="extract_images" respawn="false" output="screen" cwd="ROS_HOME"><remap from="image" to="/cam0/events"/></node></launch>
其中args替换为你的out.bag路径path,to更换为topics
运行:
roscore
roslaunch export.launch
cd ~/.ros
mv ~/.ros/*.jpg /workspace/e2sri-master/my_video/event_imgs# 储存图片的路径
安装ESIM事件相机模拟器遇到的一些问题及解决方法相关推荐
- 事件相机模拟器rpg-esim环境搭建
事件相机模拟器rpg-esim环境搭建 project page: http://rpg.ifi.uzh.ch/esim.html PDF: http://rpg.ifi.uzh.ch/docs/CO ...
- Ubuntu18.04中搭建事件相机模拟器rpg-esim环境
Ubuntu18.04中搭建事件相机模拟器rpg-esim环境 esim 是 ETH 开发的一款的模拟事件相机工作原理的仿真器,其是基于ROS环境的,在安装esim环境之前,需要先安装ROS.在官方给 ...
- 雷电模拟器运行非常卡顿有效解决方法分享
雷电模拟器运行非常卡顿有效解决方法分享.有用户在电脑上开启雷电模拟器来使用的时候,遇到了软件使用非常卡顿的情况.那么这样的软件卡顿问题要怎么去进行处理呢?接下来我们一起来看看以下的解决方法教学吧. 雷 ...
- Android Studio 模拟器卡慢、占内存解决方法
Android Studio 模拟器卡慢.占内存解决方法 Android Studio 模拟器卡慢.占内存解决方法 在使用Android virtual device来进行调试运行时会比较慢,性能也不 ...
- Windows Server 2012 R2/2016/2019无法安装.NET Framework 3.5.1或语言包的解决方法
Windows Server 2012 R2/2016/2019无法安装.NET Framework 3.5.1或语言包的解决方法 参考文章: (1)Windows Server 2012 R2/20 ...
- 安装tomcat出现failed to install tomcat8 service错误及解决方法
安装tomcat出现failed to install tomcat8 service错误及解决方法 参考文章: (1)安装tomcat出现failed to install tomcat8 serv ...
- Linux安装软件时缺少依赖包的简单较完美解决方法!
Linux安装软件时缺少依赖包的简单较完美解决方法! 参考文章: (1)Linux安装软件时缺少依赖包的简单较完美解决方法! (2)https://www.cnblogs.com/xiaommvik/ ...
- Android - 已安装了存在签名冲突的同名数据包,解决方法!
错误提示:已安装了存在签名冲突的同名数据包. 解决方法:打开Android Studio,打开logcat,用usb线连接你出错的手机,识别出手机之后,在你的项目后面,点击"run" ...
- win10 mysql5.5无响应_Win10安装mysql5.5安装最后一步停住卡死未响应的解决方法
在win10系统中安装了Mysql5.5,不过在配置到最后一步的时候,就会出现停止卡死未响应的现象,尝试修改了Mysql端口号和修改了Mysql服务名之后,都不能解决该问题,还使用管理员身份启动Mys ...
最新文章
- 标称变量(Categorical Features)或者分类变量(Categorical Features​​​​​​​)缺失值填补、详解及实战
- TP5在前端时间戳转换为时间格式
- 【秘诀】我进公司到现在都尽量避免遇上和同事撞单
- CVPR 2020丨更精准的视频目标检测:基于记忆增强的全局-局部整合网络的方法
- 递归 人理解循环 神理解递归
- python计算题_Python练习题
- 不得不收藏的大数据Hadoop教程:Hadoop集群搭建
- 模块化编程和Jigsaw项目最新早期访问版本使用教程
- 【转载好文】对char *和char []做形参的深入理解+const char*/char const*/char *const的解析
- MPU6050读取实验
- RS-485总线布线规则及方法
- 京东、闲鱼、转转的二手战场
- flask框架学习笔记
- 许啸宇:从内部研发到开源开发之路|OneFlow U
- 浅谈矩阵变换——Matrix
- 盘点|2018半导体产业城市“风云榜”
- php printer使用手册,go/printer
- 一个完整的直播App功能分析
- DocumentFragment
- 学计算机容易得什么病,长时间看电脑容易引起哪些常见的眼科疾病