技术标签: event camera 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
参考此处
查看.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
# 储存图片的路径
文章浏览阅读3.2k次。本文研究全球与中国市场分布式光纤传感器的发展现状及未来发展趋势,分别从生产和消费的角度分析分布式光纤传感器的主要生产地区、主要消费地区以及主要的生产商。重点分析全球与中国市场的主要厂商产品特点、产品规格、不同规格产品的价格、产量、产值及全球和中国市场主要生产商的市场份额。主要生产商包括:FISO TechnologiesBrugg KabelSensor HighwayOmnisensAFL GlobalQinetiQ GroupLockheed MartinOSENSA Innovati_预计2026年中国分布式传感器市场规模有多大
文章浏览阅读1.1k次,点赞2次,收藏12次。常用组合逻辑电路结构——为IC设计的延时估计铺垫学习目的:估计模块间的delay,确保写的代码的timing 综合能给到多少HZ,以满足需求!_基4布斯算法代码
文章浏览阅读3.3k次,点赞3次,收藏5次。OpenAI Manager助手(基于SpringBoot和Vue)_chatgpt网页版
文章浏览阅读2.2k次。USACO自1992年举办,到目前为止已经举办了27届,目的是为了帮助美国信息学国家队选拔IOI的队员,目前逐渐发展为全球热门的线上赛事,成为美国大学申请条件下,含金量相当高的官方竞赛。USACO的比赛成绩可以助力计算机专业留学,越来越多的学生进入了康奈尔,麻省理工,普林斯顿,哈佛和耶鲁等大学,这些同学的共同点是他们都参加了美国计算机科学竞赛(USACO),并且取得过非常好的成绩。适合参赛人群USACO适合国内在读学生有意向申请美国大学的或者想锻炼自己编程能力的同学,高三学生也可以参加12月的第_usaco可以多次提交吗
文章浏览阅读394次。1.1 存储程序1.2 创建存储过程1.3 创建自定义函数1.3.1 示例1.4 自定义函数和存储过程的区别1.5 变量的使用1.6 定义条件和处理程序1.6.1 定义条件1.6.1.1 示例1.6.2 定义处理程序1.6.2.1 示例1.7 光标的使用1.7.1 声明光标1.7.2 打开光标1.7.3 使用光标1.7.4 关闭光标1.8 流程控制的使用1.8.1 IF语句1.8.2 CASE语句1.8.3 LOOP语句1.8.4 LEAVE语句1.8.5 ITERATE语句1.8.6 REPEAT语句。_mysql自定义函数和存储过程
文章浏览阅读188次。半导体二极管——集成电路最小组成单元。_本征半导体电流为0
文章浏览阅读2.8k次,点赞3次,收藏18次。游戏水面特效实现方式太多。咱们这边介绍的是一最简单的UV动画(无顶点位移),整个mesh由4个顶点构成。实现了水面效果(左图),不动代码稍微修改下参数和贴图可以实现岩浆效果(右图)。有要思路是1,uv按时间去做正弦波移动2,在1的基础上加个凹凸图混合uv3,在1、2的基础上加个水流方向4,加上对雾效的支持,如没必要请自行删除雾效代码(把包含fog的几行代码删除)S..._unity 岩浆shader
文章浏览阅读5k次。广义线性模型是线性模型的扩展,它通过连接函数建立响应变量的数学期望值与线性组合的预测变量之间的关系。广义线性模型拟合的形式为:其中g(μY)是条件均值的函数(称为连接函数)。另外,你可放松Y为正态分布的假设,改为Y 服从指数分布族中的一种分布即可。设定好连接函数和概率分布后,便可以通过最大似然估计的多次迭代推导出各参数值。在大部分情况下,线性模型就可以通过一系列连续型或类别型预测变量来预测正态分布的响应变量的工作。但是,有时候我们要进行非正态因变量的分析,例如:(1)类别型.._广义线性回归模型
文章浏览阅读69次。环境保护、 保护地球、 校园环保、垃圾分类、绿色家园、等网站的设计与制作。 总结了一些学生网页制作的经验:一般的网页需要融入以下知识点:div+css布局、浮动、定位、高级css、表格、表单及验证、js轮播图、音频 视频 Flash的应用、ul li、下拉导航栏、鼠标划过效果等知识点,网页的风格主题也很全面:如爱好、风景、校园、美食、动漫、游戏、咖啡、音乐、家乡、电影、名人、商城以及个人主页等主题,学生、新手可参考下方页面的布局和设计和HTML源码(有用点赞△) 一套A+的网_垃圾分类网页设计目标怎么写
文章浏览阅读614次,点赞7次,收藏11次。之前找到一个修改 exe 中 DLL地址 的方法, 不太好使,虽然能正确启动, 但无法改变 exe 的工作目录,这就影响了.Net 中很多获取 exe 执行目录来拼接的地址 ( 相对路径 ),比如 wwwroot 和 代码中相对目录还有一些复制到目录的普通文件 等等,它们的地址都会指向原来 exe 的目录, 而不是自定义的 “lib” 目录,根本原因就是没有修改 exe 的工作目录这次来搞一个启动程序,把 .net 的所有东西都放在一个文件夹,在文件夹同级的目录制作一个 exe._.net dll 全局目录
文章浏览阅读1.5k次。本文为转载,原博客地址:http://blog.csdn.net/hujingshuang/article/details/46910259简介 BRIEF是2010年的一篇名为《BRIEF:Binary Robust Independent Elementary Features》的文章中提出,BRIEF是对已检测到的特征点进行描述,它是一种二进制编码的描述子,摈弃了利用区域灰度..._breif description calculation 特征点
文章浏览阅读4.1k次,点赞21次,收藏79次。本文是《基于SpringBoot的房屋租赁管理系统》的配套原创说明文档,可以给应届毕业生提供格式撰写参考,也可以给开发类似系统的朋友们提供功能业务设计思路。_基于spring boot的房屋租赁系统论文