ROS 摄像头的使用
参考:
youtube@Articulated Robotics
作者@Josh Newans博客
建议:
这个只是我的看法,强烈建议看原视频或博客
png:无损压缩
jpeg:有损压缩
-
Driver Node
负责连接硬件设备,读取摄像头数据"image_raw"(这里的raw指的是未压缩的图片,而不是raw格式的图片),并发布到指定话题"sensor_msgs/Image",
如果是需要压缩的图像数据"image_raw/compressed",则发布到"sensor_msgs/CompressdImage",
二者通过 image_transport library/nodes可以互相转换
-
坐标系
-
在ROS中,机身的坐标系为左图,一般为camera_link,而图片坐标系则为camera_link_optical,两个坐标系的x,y,z轴是不同的。
-
在实际使用时,urdf?创建的是两帧(frame),实际数据是一样的,但是图片坐标系是机身坐标系翻转(rotate)得到的。
-
camera_link_optical需要在header中声明这一帧是optical frame。
-
-
修改 .xacro文件
这里添加了 翻转
<joint name="camera_optical_joint" type="fixed"><!--翻转添加的位置--><origin xyz="0 0 0" rpy="${-pi/2} 0 ${-pi/2}" /><parent link="camera_link" /><child link="camera_link_optical" /> </joint><link name="camera_link_optical"></link><!--设置相机的参数--> <camera><!--fov与实际相机一致--><horizontal_fov>1.089</horizontal_fov><!--设置图片格式--><image><format>R8G8B8</format><width>640</width><height>480</height></image><!--设置相机范围 0.05m~8m --><clip><near>0.05</near><far>8.0</far></clip> </camera><!--修改插件(驱动)--> <plugin name="camera_controller" filename="libgazebo_ros_camera.so"><frame_name>camera_link_optical</frame_name> </plugin>