安装部分:

如果您的系统上尚未安装,请安装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事件相机模拟器遇到的一些问题及解决方法相关推荐

  1. 事件相机模拟器rpg-esim环境搭建

    事件相机模拟器rpg-esim环境搭建 project page: http://rpg.ifi.uzh.ch/esim.html PDF: http://rpg.ifi.uzh.ch/docs/CO ...

  2. Ubuntu18.04中搭建事件相机模拟器rpg-esim环境

    Ubuntu18.04中搭建事件相机模拟器rpg-esim环境 esim 是 ETH 开发的一款的模拟事件相机工作原理的仿真器,其是基于ROS环境的,在安装esim环境之前,需要先安装ROS.在官方给 ...

  3. 雷电模拟器运行非常卡顿有效解决方法分享

    雷电模拟器运行非常卡顿有效解决方法分享.有用户在电脑上开启雷电模拟器来使用的时候,遇到了软件使用非常卡顿的情况.那么这样的软件卡顿问题要怎么去进行处理呢?接下来我们一起来看看以下的解决方法教学吧. 雷 ...

  4. Android Studio 模拟器卡慢、占内存解决方法

    Android Studio 模拟器卡慢.占内存解决方法 Android Studio 模拟器卡慢.占内存解决方法 在使用Android virtual device来进行调试运行时会比较慢,性能也不 ...

  5. 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 ...

  6. 安装tomcat出现failed to install tomcat8 service错误及解决方法

    安装tomcat出现failed to install tomcat8 service错误及解决方法 参考文章: (1)安装tomcat出现failed to install tomcat8 serv ...

  7. Linux安装软件时缺少依赖包的简单较完美解决方法!

    Linux安装软件时缺少依赖包的简单较完美解决方法! 参考文章: (1)Linux安装软件时缺少依赖包的简单较完美解决方法! (2)https://www.cnblogs.com/xiaommvik/ ...

  8. Android - 已安装了存在签名冲突的同名数据包,解决方法!

    错误提示:已安装了存在签名冲突的同名数据包. 解决方法:打开Android Studio,打开logcat,用usb线连接你出错的手机,识别出手机之后,在你的项目后面,点击"run" ...

  9. win10 mysql5.5无响应_Win10安装mysql5.5安装最后一步停住卡死未响应的解决方法

    在win10系统中安装了Mysql5.5,不过在配置到最后一步的时候,就会出现停止卡死未响应的现象,尝试修改了Mysql端口号和修改了Mysql服务名之后,都不能解决该问题,还使用管理员身份启动Mys ...

最新文章

  1. 标称变量(Categorical Features)或者分类变量(Categorical Features​​​​​​​)缺失值填补、详解及实战
  2. TP5在前端时间戳转换为时间格式
  3. 【秘诀】我进公司到现在都尽量避免遇上和同事撞单
  4. CVPR 2020丨更精准的视频目标检测:基于记忆增强的全局-局部整合网络的方法
  5. 递归 人理解循环 神理解递归
  6. python计算题_Python练习题
  7. 不得不收藏的大数据Hadoop教程:Hadoop集群搭建
  8. 模块化编程和Jigsaw项目最新早期访问版本使用教程
  9. 【转载好文】对char *和char []做形参的深入理解+const char*/char const*/char *const的解析
  10. MPU6050读取实验
  11. RS-485总线布线规则及方法
  12. 京东、闲鱼、转转的二手战场
  13. flask框架学习笔记
  14. 许啸宇:从内部研发到开源开发之路|OneFlow U
  15. 浅谈矩阵变换——Matrix
  16. 盘点|2018半导体产业城市“风云榜”
  17. php printer使用手册,go/printer
  18. 一个完整的直播App功能分析
  19. DocumentFragment
  20. 学计算机容易得什么病,长时间看电脑容易引起哪些常见的眼科疾病

热门文章

  1. html之表格与锚点
  2. 100种思维模型之那什均衡思维模型-038
  3. Python——循环嵌套
  4. MATLAB线性回归实例 平炉炼钢
  5. 操作无法完成错误0x0000709再次检查打印机名称解决方法!
  6. Python3-标准库概览
  7. 计算器(可随意编辑)
  8. syslog日志服务
  9. 基于ArduPilot的旋翼式无人机飞行器开发系列(三,四轴无人机的组成)
  10. Android 镜像