Ubuntu20.04仿真 | 云台相机可直接使用文件
在Ubuntu20.04仿真 |iris四旋翼添加云台相机详述-CSDN博客中我详细记录了从typhoon_h480.sdf模型中抽取出可用的cgo3云台相机模型,以及对其解耦合后不同平台的调用及修改方法,以下给出在iris平台上可直接使用的xml代码。
云台相机的模型文件cgo3.sdf:
<?xml version="1.0"?>
<sdf version='1.5'><model name='cgo3'><pose>0 0 0 0 0 0</pose><link name="cgo3_mount_link"><inertial><!-- place holder --><pose>-0.0205 0 -0.081 0 0 0</pose><mass>0.02</mass><inertia><ixx>0.00005</ixx><ixy>0</ixy><ixz>0</ixz><iyy>0.00005</iyy><iyz>0</iyz><izz>0.00005</izz></inertia></inertial><visual name='cgo3_mount_visual'><pose>0 0 0 0 0 0</pose><geometry><mesh><scale>0.0005 0.0005 0.0005</scale><uri>model://cgo3/meshes/cgo3_mount_remeshed_v1.stl</uri></mesh></geometry><material><script><name>Gazebo/DarkGrey</name><uri>file://media/materials/scripts/gazebo.material</uri></script></material></visual></link><!--<joint name='cgo3_mount_joint' type='revolute'><child>cgo3_mount_link</child><parent>base_link</parent><pose>0 0 0 0 0 0</pose><axis><xyz>0 0 1</xyz><limit><lower>0</lower><upper>0</upper><effort>100</effort><velocity>-1</velocity></limit><dynamics><damping>1</damping></dynamics><use_parent_model_frame>1</use_parent_model_frame></axis><physics><ode><implicit_spring_damper>1</implicit_spring_damper></ode></physics></joint>--><link name="cgo3_vertical_arm_link"><inertial><!-- place holder --><pose>-0.041 0 -0.162 0 0 0</pose><mass>0.1</mass><inertia><ixx>0.00005</ixx><ixy>0</ixy><ixz>0</ixz><iyy>0.00005</iyy><iyz>0</iyz><izz>0.00005</izz></inertia></inertial><visual name='cgo3_vertical_arm_visual'><pose>-0.051 0 0 0 0 3.141592</pose><geometry><mesh><scale>0.001 0.001 0.001</scale><uri>model://cgo3/meshes/cgo3_vertical_arm_remeshed_v1.stl</uri></mesh></geometry><material><script><name>Gazebo/DarkGrey</name><uri>file://media/materials/scripts/gazebo.material</uri></script></material></visual></link><joint name='cgo3_vertical_arm_joint' type='revolute'><child>cgo3_vertical_arm_link</child><parent>cgo3_mount_link</parent><pose>-0.026 0 -0.10 0 0 0</pose><!--<controlIndex>6</controlIndex>--><axis><xyz>0 0 1</xyz><limit><lower>-1e+16</lower><upper>1e+16</upper><effort>100</effort><velocity>-1</velocity></limit><dynamics><damping>0.1</damping></dynamics><use_parent_model_frame>1</use_parent_model_frame></axis><physics><ode><implicit_spring_damper>1</implicit_spring_damper><limit><!-- testing soft limits --><cfm>0.1</cfm><erp>0.2</erp></limit></ode></physics></joint><link name="cgo3_horizontal_arm_link"><inertial><!-- place holder --><pose>-0.041 0 -0.081 0 0 0</pose><mass>0.1</mass><inertia><ixx>0.00005</ixx><ixy>0</ixy><ixz>0</ixz><iyy>0.00005</iyy><iyz>0</iyz><izz>0.00005</izz></inertia></inertial><visual name='cgo3_horizontal_arm_visual'><pose>-0.05 0 0 0 0 3.141592</pose><geometry><mesh><scale>0.001 0.001 0.001</scale><uri>model://cgo3/meshes/cgo3_horizontal_arm_remeshed_v1.stl</uri></mesh></geometry><material><script><name>Gazebo/DarkGrey</name><uri>file://media/materials/scripts/gazebo.material</uri></script></material></visual></link><joint name='cgo3_horizontal_arm_joint' type='revolute'><child>cgo3_horizontal_arm_link</child><parent>cgo3_vertical_arm_link</parent><pose>-0.07 0 -0.162 0 0 0</pose><!--<controlIndex>7</controlIndex>--><axis><xyz>-1 0 0</xyz><limit><lower>-0.785398</lower><upper>0.785398</upper><effort>100</effort><velocity>-1</velocity></limit><dynamics><damping>0.1</damping></dynamics><use_parent_model_frame>1</use_parent_model_frame></axis><physics><ode><implicit_spring_damper>1</implicit_spring_damper><limit><!-- testing soft limits --><cfm>0.1</cfm><erp>0.2</erp></limit></ode></physics></joint><link name="cgo3_camera_link"><inertial><!-- place holder --><pose>-0.041 0 -0.162 0 0 0</pose><mass>0.1</mass><inertia><ixx>0.001</ixx><ixy>0</ixy><ixz>0</ixz><iyy>0.001</iyy><iyz>0</iyz><izz>0.001</izz></inertia></inertial><collision name='cgo3_camera_collision'><pose>-0.041 0 -0.162 0 0 0</pose><geometry><sphere><radius>0.035</radius></sphere></geometry><surface><friction><ode><mu>1</mu><mu2>1</mu2></ode></friction><contact><ode><kp>1e+8</kp><kd>1</kd><max_vel>0.01</max_vel><min_depth>0.001</min_depth></ode></contact></surface></collision><visual name='cgo3_camera_visual'><pose>-0.05 0 0 0 0 3.141592</pose><geometry><mesh><scale>0.001 0.001 0.001</scale><uri>model://cgo3/meshes/cgo3_camera_remeshed_v1.stl</uri></mesh></geometry><material><script><name>Gazebo/DarkGrey</name><uri>file://media/materials/scripts/gazebo.material</uri></script></material></visual><sensor name="camera_imu" type="imu"><always_on>1</always_on><update_rate>200</update_rate></sensor><sensor name="camera" type="camera"><pose>0.0 0 -0.162 0 0 0</pose><camera><horizontal_fov>2.0</horizontal_fov><image><format>R8G8B8</format><width>640</width><height>360</height></image><clip><near>0.05</near><far>15000</far></clip></camera><always_on>1</always_on><update_rate>10</update_rate><visualize>true</visualize><!-- <plugin name="CameraManagerPlugin" filename="libgazebo_camera_manager_plugin.so"><robotNamespace>typhoon_h480</robotNamespace><interval>1</interval><width>3840</width><height>2160</height><maximum_zoom>8.0</maximum_zoom><video_uri>udp://127.0.0.1:5600</video_uri><system_id>1</system_id><cam_component_id>100</cam_component_id><mavlink_cam_udp_port>14530</mavlink_cam_udp_port></plugin> --><plugin name="cgo3_camera_controller" filename="libgazebo_ros_camera.so"><robotNamespace></robotNamespace><alwaysOn>true</alwaysOn><updateRate>30</updateRate><cameraName>/cgo3_camera</cameraName><imageTopicName>image_raw</imageTopicName><cameraInfoTopicName>camera_info</cameraInfoTopicName><frameName>cgo3_camera_optical_frame</frameName><hackBaseline>0.0</hackBaseline><distortionK1>0.0</distortionK1><distortionK2>0.0</distortionK2><distortionK3>0.0</distortionK3><distortionT1>0.0</distortionT1><distortionT2>0.0</distortionT2></plugin></sensor></link><joint name='cgo3_camera_joint' type='revolute'><child>cgo3_camera_link</child><parent>cgo3_horizontal_arm_link</parent><pose>-0.01 0.03 -0.162 0 0 0</pose><axis><xyz>0 -1 0</xyz><limit><lower>-1.5708</lower><upper>0.7854</upper><effort>100</effort><velocity>-1</velocity></limit><dynamics><damping>0.1</damping></dynamics><use_parent_model_frame>1</use_parent_model_frame></axis><physics><ode><implicit_spring_damper>1</implicit_spring_damper><limit><!-- testing soft limits --><cfm>0.1</cfm><erp>0.2</erp></limit></ode></physics></joint><plugin name='gimbal_controller' filename='libgazebo_gimbal_controller_plugin.so'><udp_gimbal_port_remote>13030</udp_gimbal_port_remote> <!--13030maybe need to modify--><joint_yaw>cgo3_vertical_arm_joint</joint_yaw><joint_roll>cgo3_horizontal_arm_joint</joint_roll><joint_pitch>cgo3_camera_joint</joint_pitch><control_gimbal_channels><channel><joint_control_pid><p>0.4</p><i>0.05</i><d>0.02</d><iMax>0</iMax><iMin>0</iMin><cmdMax>1.0</cmdMax><cmdMin>-1.0</cmdMin></joint_control_pid><joint_axis>joint_yaw</joint_axis></channel><channel><joint_control_pid><p>0.8</p><i>0.035</i><d>0.02</d><iMax>0</iMax><iMin>0</iMin><cmdMax>0.3</cmdMax><cmdMin>-0.3</cmdMin></joint_control_pid><joint_axis>joint_roll</joint_axis></channel><channel><joint_control_pid><p>0.3</p><i>0.01245</i><d>0.015</d><iMax>0</iMax><iMin>0</iMin><cmdMax>0.3</cmdMax><cmdMin>-0.3</cmdMin></joint_control_pid><joint_axis>joint_pitch</joint_axis></channel></control_gimbal_channels><gimbal_imu>camera_imu</gimbal_imu></plugin></model>
</sdf>
添加云台舵机控制通道的iris_cgo3.sdf,用原有iris.sdf稍做改动即可实现,故不再摆放,具体可查看顶部链接
飞机与云台相机联合使用的iris_cgo3_joint.sdf
<?xml version="1.0" ?>
<sdf version="1.5"><model name='iris_cgo3_model'><include><uri>model://iris_cgo3</uri></include><include><uri>model://cgo3</uri><pose>0.12 0 0 1.57 0 1.57</pose></include><joint name="cgo3_mount_joint" type="fixed"><child>cgo3::cgo3_mount_link</child><parent>iris_cgo3::base_link</parent><axis><xyz>0 0 1</xyz><limit><upper>0</upper><lower>0</lower></limit></axis></joint></model>
</sdf>
其中pose的值可自己改动,目前我摆放的位置是在机体之外的,为了方便查看是否链接上,可根据需要自行调整。