参考:
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>