From 71201a332af218d90e36f681c8f916c3a129f6fc Mon Sep 17 00:00:00 2001 From: janrosell Date: Wed, 15 May 2019 17:00:59 +0200 Subject: [PATCH 01/10] added prefix to the Load function in RealSensePlugin in order to tune the sensor names to deal with multicmaera worlds --- include/realsense_gazebo_plugin/RealSensePlugin.h | 2 +- src/RealSensePlugin.cpp | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/include/realsense_gazebo_plugin/RealSensePlugin.h b/include/realsense_gazebo_plugin/RealSensePlugin.h index fe8e61f..d204a7b 100644 --- a/include/realsense_gazebo_plugin/RealSensePlugin.h +++ b/include/realsense_gazebo_plugin/RealSensePlugin.h @@ -46,7 +46,7 @@ namespace gazebo public: ~RealSensePlugin(); // Documentation Inherited. - public: virtual void Load(physics::ModelPtr _model, sdf::ElementPtr _sdf); + public: virtual void Load(physics::ModelPtr _model, sdf::ElementPtr _sdf, std::string prefix=""); /// \brief Callback for the World Update event. public: void OnUpdate(); diff --git a/src/RealSensePlugin.cpp b/src/RealSensePlugin.cpp index 29fc2cd..d0a512a 100644 --- a/src/RealSensePlugin.cpp +++ b/src/RealSensePlugin.cpp @@ -50,7 +50,7 @@ RealSensePlugin::~RealSensePlugin() } ///////////////////////////////////////////////// -void RealSensePlugin::Load(physics::ModelPtr _model, sdf::ElementPtr _sdf) +void RealSensePlugin::Load(physics::ModelPtr _model, sdf::ElementPtr _sdf, std::string prefix) { // Output the name of the model std::cout << std::endl @@ -71,13 +71,13 @@ void RealSensePlugin::Load(physics::ModelPtr _model, sdf::ElementPtr _sdf) std::dynamic_pointer_cast( smanager->GetSensor(DEPTH_CAMERA_NAME))->DepthCamera(); this->ired1Cam = std::dynamic_pointer_cast( - smanager->GetSensor(IRED1_CAMERA_NAME)) + smanager->GetSensor(prefix+"_"+IRED1_CAMERA_NAME)) ->Camera(); this->ired2Cam = std::dynamic_pointer_cast( - smanager->GetSensor(IRED2_CAMERA_NAME)) + smanager->GetSensor(prefix+"_"+IRED2_CAMERA_NAME)) ->Camera(); this->colorCam = std::dynamic_pointer_cast( - smanager->GetSensor(COLOR_CAMERA_NAME)) + smanager->GetSensor(prefix+"_"+COLOR_CAMERA_NAME)) ->Camera(); // Check if camera renderers have been found successfuly From 9324c5ffa422fb7c87571729aac201abcfcb8b1c Mon Sep 17 00:00:00 2001 From: janrosell Date: Wed, 15 May 2019 17:04:35 +0200 Subject: [PATCH 02/10] now hte call to RealSensePlugin::Load function passes the hendle as the prefix parameter to tune the sensor names --- src/gazebo_ros_realsense.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gazebo_ros_realsense.cpp b/src/gazebo_ros_realsense.cpp index aecd06f..2546301 100644 --- a/src/gazebo_ros_realsense.cpp +++ b/src/gazebo_ros_realsense.cpp @@ -32,7 +32,7 @@ void GazeboRosRealsense::Load(physics::ModelPtr _model, sdf::ElementPtr _sdf) } ROS_INFO("Realsense Gazebo ROS plugin loading."); - RealSensePlugin::Load(_model, _sdf); + RealSensePlugin::Load(_model, _sdf, this->GetHandle()); this->rosnode_ = new ros::NodeHandle(this->GetHandle()); From 41d647c1d3fa037080c0cf9812c3ee42becba6f6 Mon Sep 17 00:00:00 2001 From: janrosell Date: Wed, 15 May 2019 17:12:25 +0200 Subject: [PATCH 03/10] corrected errata in name of plugin (missing s) --- urdf/realsense-RS200.macro.xacro | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/urdf/realsense-RS200.macro.xacro b/urdf/realsense-RS200.macro.xacro index 24e09d0..abbf75d 100644 --- a/urdf/realsense-RS200.macro.xacro +++ b/urdf/realsense-RS200.macro.xacro @@ -83,7 +83,7 @@ - + From f033472992889340658b4d138fbb1c64950ac7b8 Mon Sep 17 00:00:00 2001 From: janrosell Date: Wed, 15 May 2019 17:15:18 +0200 Subject: [PATCH 04/10] changed sensor names in xacro file to include the prefix --- urdf/realsense-RS200.macro.xacro | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/urdf/realsense-RS200.macro.xacro b/urdf/realsense-RS200.macro.xacro index abbf75d..ace92f9 100644 --- a/urdf/realsense-RS200.macro.xacro +++ b/urdf/realsense-RS200.macro.xacro @@ -103,7 +103,7 @@ - + 0 -0.046 0.004 0 0 0 1.047 @@ -126,7 +126,7 @@ 60 1 - + 0 -0.06 0.004 0 0 0 1.047 @@ -149,7 +149,7 @@ 60 0 - + 0 0.01 0.004 0 0 0 1.047 @@ -172,7 +172,7 @@ 60 0 - + 0 -0.03 0.004 0 0 0 1.047 From 007e4bbcee57f2d2a1f0e7e0b902177ac0c32429 Mon Sep 17 00:00:00 2001 From: janrosell Date: Wed, 15 May 2019 17:18:24 +0200 Subject: [PATCH 05/10] changed FOV to 69.4 degrees as indicated in the Intel_D400_Series_Datasheet.pdf document --- urdf/realsense-RS200.macro.xacro | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/urdf/realsense-RS200.macro.xacro b/urdf/realsense-RS200.macro.xacro index ace92f9..4d95e30 100644 --- a/urdf/realsense-RS200.macro.xacro +++ b/urdf/realsense-RS200.macro.xacro @@ -106,7 +106,7 @@ 0 -0.046 0.004 0 0 0 - 1.047 + 1.211258501 640 480 @@ -129,7 +129,7 @@ 0 -0.06 0.004 0 0 0 - 1.047 + 1.211258501 640 480 @@ -152,7 +152,7 @@ 0 0.01 0.004 0 0 0 - 1.047 + 1.211258501 640 480 @@ -175,7 +175,7 @@ 0 -0.03 0.004 0 0 0 - 1.047 + 1.211258501 640 480 From df716b5aa10dec3abd6033c1d2c3c4b7ea24a1e9 Mon Sep 17 00:00:00 2001 From: janrosell Date: Wed, 15 May 2019 17:19:58 +0200 Subject: [PATCH 06/10] changed with to 1920 and height to 1080 as indicated in the Intel_D400_Series_Datasheet.pdf document --- urdf/realsense-RS200.macro.xacro | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/urdf/realsense-RS200.macro.xacro b/urdf/realsense-RS200.macro.xacro index 4d95e30..d4924af 100644 --- a/urdf/realsense-RS200.macro.xacro +++ b/urdf/realsense-RS200.macro.xacro @@ -108,8 +108,8 @@ 1.211258501 - 640 - 480 + 1920 + 1080 RGB_INT8 @@ -131,8 +131,8 @@ 1.211258501 - 640 - 480 + 1920 + 1080 L_INT8 @@ -154,8 +154,8 @@ 1.211258501 - 640 - 480 + 1920 + 1080 L_INT8 @@ -177,8 +177,8 @@ 1.211258501 - 640 - 480 + 1920 + 1080 0.1 From 5f76853c1958466e73413cd54cc0a21a773387d5 Mon Sep 17 00:00:00 2001 From: janrosell Date: Wed, 15 May 2019 17:21:04 +0200 Subject: [PATCH 07/10] added aspect ratio 16:9 as indicated in the Intel_D400_Series_Datasheet.pdf document --- urdf/realsense-RS200.macro.xacro | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/urdf/realsense-RS200.macro.xacro b/urdf/realsense-RS200.macro.xacro index d4924af..9d3a928 100644 --- a/urdf/realsense-RS200.macro.xacro +++ b/urdf/realsense-RS200.macro.xacro @@ -107,6 +107,7 @@ 0 -0.046 0.004 0 0 0 1.211258501 + 1.777777778 1920 1080 @@ -130,6 +131,7 @@ 0 -0.06 0.004 0 0 0 1.211258501 + 1.777777778 1920 1080 @@ -153,6 +155,7 @@ 0 0.01 0.004 0 0 0 1.211258501 + 1.777777778 1920 1080 @@ -176,6 +179,7 @@ 0 -0.03 0.004 0 0 0 1.211258501 + 1.777777778 1920 1080 From 1682d855003c47a9308346fb001d057afe044c0c Mon Sep 17 00:00:00 2001 From: janrosell Date: Wed, 15 May 2019 17:31:42 +0200 Subject: [PATCH 08/10] added lost prefix in depth camera name in RealSensePlugin::Load function --- src/RealSensePlugin.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/RealSensePlugin.cpp b/src/RealSensePlugin.cpp index d0a512a..6a8cc37 100644 --- a/src/RealSensePlugin.cpp +++ b/src/RealSensePlugin.cpp @@ -69,7 +69,7 @@ void RealSensePlugin::Load(physics::ModelPtr _model, sdf::ElementPtr _sdf, std:: // Get Cameras Renderers this->depthCam = std::dynamic_pointer_cast( - smanager->GetSensor(DEPTH_CAMERA_NAME))->DepthCamera(); + smanager->GetSensor(prefix+"_"+DEPTH_CAMERA_NAME))->DepthCamera(); this->ired1Cam = std::dynamic_pointer_cast( smanager->GetSensor(prefix+"_"+IRED1_CAMERA_NAME)) ->Camera(); From e7f8b4ea37006e0a58f8f25f7158123d3db4188a Mon Sep 17 00:00:00 2001 From: janrosell Date: Sat, 18 May 2019 19:52:27 +0200 Subject: [PATCH 09/10] adding prefix to frame_id --- include/realsense_gazebo_plugin/gazebo_ros_realsense.h | 1 + src/RealSensePlugin.cpp | 8 ++++---- src/gazebo_ros_realsense.cpp | 9 ++++++--- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/include/realsense_gazebo_plugin/gazebo_ros_realsense.h b/include/realsense_gazebo_plugin/gazebo_ros_realsense.h index 3cebd63..28cfe3e 100644 --- a/include/realsense_gazebo_plugin/gazebo_ros_realsense.h +++ b/include/realsense_gazebo_plugin/gazebo_ros_realsense.h @@ -42,6 +42,7 @@ namespace gazebo /// \brief A pointer to the ROS node. /// A node will be instantiated if it does not exist. protected: ros::NodeHandle* rosnode_; + public: std::string prefix; private: image_transport::ImageTransport* itnode_; protected: image_transport::CameraPublisher color_pub_, ir1_pub_, ir2_pub_, depth_pub_; diff --git a/src/RealSensePlugin.cpp b/src/RealSensePlugin.cpp index 6a8cc37..9d3a2e5 100644 --- a/src/RealSensePlugin.cpp +++ b/src/RealSensePlugin.cpp @@ -69,15 +69,15 @@ void RealSensePlugin::Load(physics::ModelPtr _model, sdf::ElementPtr _sdf, std:: // Get Cameras Renderers this->depthCam = std::dynamic_pointer_cast( - smanager->GetSensor(prefix+"_"+DEPTH_CAMERA_NAME))->DepthCamera(); + smanager->GetSensor(prefix+DEPTH_CAMERA_NAME))->DepthCamera(); this->ired1Cam = std::dynamic_pointer_cast( - smanager->GetSensor(prefix+"_"+IRED1_CAMERA_NAME)) + smanager->GetSensor(prefix+IRED1_CAMERA_NAME)) ->Camera(); this->ired2Cam = std::dynamic_pointer_cast( - smanager->GetSensor(prefix+"_"+IRED2_CAMERA_NAME)) + smanager->GetSensor(prefix+IRED2_CAMERA_NAME)) ->Camera(); this->colorCam = std::dynamic_pointer_cast( - smanager->GetSensor(prefix+"_"+COLOR_CAMERA_NAME)) + smanager->GetSensor(prefix+COLOR_CAMERA_NAME)) ->Camera(); // Check if camera renderers have been found successfuly diff --git a/src/gazebo_ros_realsense.cpp b/src/gazebo_ros_realsense.cpp index 2546301..ec4e873 100644 --- a/src/gazebo_ros_realsense.cpp +++ b/src/gazebo_ros_realsense.cpp @@ -1,6 +1,8 @@ #include "realsense_gazebo_plugin/gazebo_ros_realsense.h" #include + + namespace { std::string extractCameraName(const std::string& name); @@ -32,7 +34,8 @@ void GazeboRosRealsense::Load(physics::ModelPtr _model, sdf::ElementPtr _sdf) } ROS_INFO("Realsense Gazebo ROS plugin loading."); - RealSensePlugin::Load(_model, _sdf, this->GetHandle()); + prefix = this->GetHandle()+"_"; + RealSensePlugin::Load(_model, _sdf, prefix); this->rosnode_ = new ros::NodeHandle(this->GetHandle()); @@ -63,7 +66,7 @@ void GazeboRosRealsense::OnNewFrame(const rendering::CameraPtr cam, const auto image_pub = camera_publishers.at(camera_id); // copy data into image - this->image_msg_.header.frame_id = camera_id; + this->image_msg_.header.frame_id = prefix+camera_id; this->image_msg_.header.stamp.sec = current_time.sec; this->image_msg_.header.stamp.nsec = current_time.nsec; @@ -101,7 +104,7 @@ void GazeboRosRealsense::OnNewDepthFrame() RealSensePlugin::OnNewDepthFrame(); // copy data into image - this->depth_msg_.header.frame_id = COLOR_CAMERA_NAME; + this->depth_msg_.header.frame_id = prefix+COLOR_CAMERA_NAME; this->depth_msg_.header.stamp.sec = current_time.sec; this->depth_msg_.header.stamp.nsec = current_time.nsec; From 241d479a35cb80bd6f5fad2dad567ec2f671046a Mon Sep 17 00:00:00 2001 From: janrosell Date: Sun, 19 May 2019 11:29:10 +0200 Subject: [PATCH 10/10] adding example using two cameras --- launch/two_realsense_chessboard.rviz | 174 ++++ ...o_realsense_chessboard_gazebo_spawn.launch | 32 + launch/two_realsense_chessboard_rviz.launch | 21 + models/chessboard2/chessboard2.sdf | 65 ++ models/chessboard2/meshes/chessboard.svg | 911 ++++++++++++++++++ models/chessboard2/meshes/chessboard2.dae | 225 +++++ models/chessboard2/meshes/chessboard2.png | Bin 0 -> 28643 bytes models/chessboard2/meshes/chessboard2a.png | Bin 0 -> 986 bytes models/chessboard2/model.config | 15 + urdf/chessboard_cameras_cell.urdf.xacro | 13 + 10 files changed, 1456 insertions(+) create mode 100644 launch/two_realsense_chessboard.rviz create mode 100644 launch/two_realsense_chessboard_gazebo_spawn.launch create mode 100644 launch/two_realsense_chessboard_rviz.launch create mode 100644 models/chessboard2/chessboard2.sdf create mode 100644 models/chessboard2/meshes/chessboard.svg create mode 100644 models/chessboard2/meshes/chessboard2.dae create mode 100644 models/chessboard2/meshes/chessboard2.png create mode 100644 models/chessboard2/meshes/chessboard2a.png create mode 100644 models/chessboard2/model.config create mode 100644 urdf/chessboard_cameras_cell.urdf.xacro diff --git a/launch/two_realsense_chessboard.rviz b/launch/two_realsense_chessboard.rviz new file mode 100644 index 0000000..62359f9 --- /dev/null +++ b/launch/two_realsense_chessboard.rviz @@ -0,0 +1,174 @@ +Panels: + - Class: rviz/Displays + Help Height: 278 + Name: Displays + Property Tree Widget: + Expanded: + - /TF1/Frames1 + Splitter Ratio: 0.6350210905075073 + Tree Height: 1317 + - Class: rviz/Selection + Name: Selection + - Class: rviz/Tool Properties + Expanded: + - /2D Pose Estimate1 + - /2D Nav Goal1 + - /Publish Point1 + Name: Tool Properties + Splitter Ratio: 0.5886790156364441 + - Class: rviz/Views + Expanded: + - /Current View1 + Name: Views + Splitter Ratio: 0.5 + - Class: rviz/Time + Experimental: false + Name: Time + SyncMode: 0 + SyncSource: Camera +Preferences: + PromptSaveOnExit: true +Visualization Manager: + Class: "" + Displays: + - Alpha: 0.5 + Cell Size: 1 + Class: rviz/Grid + Color: 160; 160; 164 + Enabled: true + Line Style: + Line Width: 0.029999999329447746 + Value: Lines + Name: Grid + Normal Cell Count: 0 + Offset: + X: 0 + Y: 0 + Z: 0 + Plane: XY + Plane Cell Count: 10 + Reference Frame: + Value: true + - Class: rviz/Camera + Enabled: true + Image Rendering: background and overlay + Image Topic: /left_rs200/camera/color/image_raw + Name: Camera + Overlay Alpha: 0.5 + Queue Size: 2 + Transport Hint: raw + Unreliable: false + Value: true + Visibility: + Camera: true + Grid: true + TF: true + Value: true + Zoom Factor: 1 + - Class: rviz/TF + Enabled: true + Frame Timeout: 15 + Frames: + All Enabled: false + left_rs200_color: + Value: true + right_rs200_color: + Value: true + world: + Value: true + Marker Scale: 0.30000001192092896 + Name: TF + Show Arrows: true + Show Axes: true + Show Names: true + Tree: + world: + left_rs200_color: + {} + right_rs200_color: + {} + Update Interval: 0 + Value: true + - Class: rviz/Camera + Enabled: true + Image Rendering: background and overlay + Image Topic: /right_rs200/camera/color/image_raw + Name: Camera + Overlay Alpha: 0.5 + Queue Size: 2 + Transport Hint: raw + Unreliable: false + Value: true + Visibility: + Camera: true + Grid: true + TF: true + Value: true + Zoom Factor: 1 + Enabled: true + Global Options: + Background Color: 48; 48; 48 + Default Light: true + Fixed Frame: world + Frame Rate: 30 + Name: root + Tools: + - Class: rviz/Interact + Hide Inactive Objects: true + - Class: rviz/MoveCamera + - Class: rviz/Select + - Class: rviz/FocusCamera + - Class: rviz/Measure + - Class: rviz/SetInitialPose + Topic: /initialpose + - Class: rviz/SetGoal + Topic: /move_base_simple/goal + - Class: rviz/PublishPoint + Single click: true + Topic: /clicked_point + Value: true + Views: + Current: + Class: rviz/Orbit + Distance: 1.4991731643676758 + Enable Stereo Rendering: + Stereo Eye Separation: 0.05999999865889549 + Stereo Focal Distance: 1 + Swap Stereo Eyes: false + Value: false + Focal Point: + X: 0.008180774748325348 + Y: -0.010322336107492447 + Z: 0.20774713158607483 + Focal Shape Fixed Size: true + Focal Shape Size: 0.05000000074505806 + Invert Z Axis: false + Name: Current View + Near Clip Distance: 0.009999999776482582 + Pitch: 0.5997961759567261 + Target Frame: + Value: Orbit (rviz) + Yaw: 2.9690325260162354 + Saved: ~ +Window Geometry: + "&Camera": + collapsed: false + "&Displays": + collapsed: false + "&Time": + collapsed: false + C&amera: + collapsed: false + Height: 2027 + Hide Left Dock: false + Hide Right Dock: false + QMainWindow State: 000000ff00000000fd000000040000000000000473000006b8fc0200000009fb0000001200530065006c0065006300740069006f006e00000001e10000009b0000008001000003fb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261fb0000000c00430061006d0065007200610100000073000003430000003601000003fb0000000c00430061006d00650072006101000003b700000374000000360100000300000001000003bc000006b8fc0200000006fb000000100044006900730070006c0061007900730100000073000006b80000011301000003fb0000000a005600690065007700730000000044000003ab0000011201000003fb0000000c00430061006d006500720061010000019a000001550000000000000000fb0000000c00430061006d006500720061010000016d000001820000000000000000fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000780000000e3fc0100000001fb0000000a00560069006500770073030000004e00000080000002e1000001970000000300000f000000007cfc0100000002fb0000000800540069006d0065010000000000000f000000052101000003fb0000000800540069006d00650100000000000004500000000000000000000006cf000006b800000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 + Selection: + collapsed: false + Tool Properties: + collapsed: false + Views: + collapsed: false + Width: 3840 + X: 0 + Y: 0 diff --git a/launch/two_realsense_chessboard_gazebo_spawn.launch b/launch/two_realsense_chessboard_gazebo_spawn.launch new file mode 100644 index 0000000..84801d5 --- /dev/null +++ b/launch/two_realsense_chessboard_gazebo_spawn.launch @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/launch/two_realsense_chessboard_rviz.launch b/launch/two_realsense_chessboard_rviz.launch new file mode 100644 index 0000000..86fb1db --- /dev/null +++ b/launch/two_realsense_chessboard_rviz.launch @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/models/chessboard2/chessboard2.sdf b/models/chessboard2/chessboard2.sdf new file mode 100644 index 0000000..68cf422 --- /dev/null +++ b/models/chessboard2/chessboard2.sdf @@ -0,0 +1,65 @@ + + + + 0 + + + + 0.05 + + 0.000015 + 0.0 + 0.0 + 0.000015 + 0.0 + 0.0000108 + + + + + 0 0 0 0 0 0 + + + 0.46 0.46 0.04 + + + + + + 30.0 + 30.0 + 0 0 0 + + + + + 1000000.0 + 100.0 + 0.0025 + 1.0 + + + + + + + 0 0 0 0 0 0 + + + model://chessboard2/meshes/chessboard2.dae + + 9.2 9.2 0.8 + + + + + + 0.000000 + 0.000000 + + 0 + 0 + 1 + + + diff --git a/models/chessboard2/meshes/chessboard.svg b/models/chessboard2/meshes/chessboard.svg new file mode 100644 index 0000000..de6a028 --- /dev/null +++ b/models/chessboard2/meshes/chessboard.svg @@ -0,0 +1,911 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + 100 + 101 + 102 + 103 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/models/chessboard2/meshes/chessboard2.dae b/models/chessboard2/meshes/chessboard2.dae new file mode 100644 index 0000000..7826d08 --- /dev/null +++ b/models/chessboard2/meshes/chessboard2.dae @@ -0,0 +1,225 @@ + + + + + Blender User + Blender 2.77.0 commit date:2016-04-05, commit time:18:12, hash:abf6f08 + + 2016-09-12T13:44:38 + 2016-09-12T13:44:38 + + Z_UP + + + + + + + 49.13434 + 1.777778 + 0.1 + 100 + + + + + + 0 + 0 + 0 + + + + + + + + + 1 1 1 + 1 + 0 + 0.00111109 + + + + + 0.000999987 + 1 + 0.1 + 0.1 + 1 + 1 + 1 + 2 + 0 + 1 + 1 + 1 + 1 + 1 + 0 + 2880 + 2 + 30.002 + 1.000799 + 0.04999995 + 29.99998 + 1 + 2 + 0 + 0 + 1 + 1 + 1 + 1 + 8192 + 1 + 1 + 0 + 1 + 1 + 1 + 3 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 3 + 0.15 + 75 + 1 + 1 + 0 + 1 + 1 + 0 + + + + + + + chessboard2.png + + + + + + + + chessboard_png + + + + + chessboard_png-surface + + + + + + 1 1 1 1 + + + 0 0 0 1 + + + + + + 0.5 0.5 0.5 1 + + + 75 + + + 1 + + + + + + + + + + + + + + + + -0.02499997 -0.02499997 -0.02499997 -0.02499997 -0.02499997 0.02499997 -0.02499997 0.02499997 -0.02499997 -0.02499997 0.02499997 0.02499997 0.02499997 -0.02499997 -0.02499997 0.02499997 -0.02499997 0.02499997 0.02499997 0.02499997 -0.02499997 0.02499997 0.02499997 0.02499997 + + + + + + + + + + -1 0 0 0 1 0 1 0 0 0 -1 0 0 0 -1 0 0 1 + + + + + + + + + + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.9999001 0.9998999 9.998e-5 9.998e-5 0.9999 9.998e-5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.9999001 0.9998999 1.00055e-4 0.9998999 9.998e-5 9.998e-5 + + + + + + + + + + + + + + + 3 3 3 3 3 3 3 3 3 3 3 3 +

3 0 0 0 0 1 1 0 2 7 1 3 2 1 4 3 1 5 5 2 6 6 2 7 7 2 8 1 3 9 4 3 10 5 3 11 2 4 12 4 4 13 0 4 14 7 5 15 1 5 16 5 5 17 3 0 18 2 0 19 0 0 20 7 1 21 6 1 22 2 1 23 5 2 24 4 2 25 6 2 26 1 3 27 0 3 28 4 3 29 2 4 30 6 4 31 4 4 32 7 5 33 3 5 34 1 5 35

+
+
+
+
+ + + + + 0.6858805 -0.3173701 0.6548619 7.481132 0.7276338 0.3124686 -0.6106656 -6.50764 -0.01081678 0.8953432 0.4452454 5.343665 0 0 0 1 + + + + -0.2908646 -0.7711008 0.5663932 4.076245 0.9551712 -0.1998834 0.2183912 1.005454 -0.05518906 0.6045247 0.7946723 5.903862 0 0 0 1 + + + + 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 + + + + + + + + + + + + + + + +
diff --git a/models/chessboard2/meshes/chessboard2.png b/models/chessboard2/meshes/chessboard2.png new file mode 100644 index 0000000000000000000000000000000000000000..e01073b10e059966fe427c0b7cad0df9dc85f454 GIT binary patch literal 28643 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 PHhA91%n*J0`VapLxsIo= literal 0 HcmV?d00001 diff --git a/models/chessboard2/meshes/chessboard2a.png b/models/chessboard2/meshes/chessboard2a.png new file mode 100644 index 0000000000000000000000000000000000000000..c9a1391ea3a19a15e7abc601b481c6f97bf72b29 GIT binary patch literal 986 zcmeAS@N?(olHy`uVBq!ia0vp^l|Wp>!3HFK&Eoc5!lIL8@MUQTpt6Hc|`>%;BCc zjv*Cu-rn8omFy_d{?S}b;0V9cGJ&HU8#jx43w~kJ;pgzo&D7l4wL~C?b>pT_LOGY0 zdMp+Y5zJvb%Px56rkB~W$T^bc@BYn~_gVPEN?6YFY{nUj=Rt?-bJK3IANa1ki9w0` zL~p%;4By(TS-!7zI+jG}+&Xsb*n5AA=a>4g=9mQ=C;xq{?K!Drk9L1Hql=hB3O-`O z@6Xd~d>006m?`;x{@lFn+3(-K7xZs=F)@1Ww6$y3R-Vt#%e(dWZ|xD`#^YOoRx5z) z$3rx{_#+y7s_q^w@O+A+PNu5R1ZsiN5tHV29OcWOvUmKuNalYSe@q)jff9}!M)vY{VzWeTiO5@E369m54e)?H+;oszn z7<_hvUDog-yf->J+VOhp^5x6R3JM~>js`QGQr7M7NrRn{-+_RD`XNqaWO+dgdbO`o$lt6o2Pq{JJz zHf;GnDXY1D7qVA`XgU5?_ng#M{ + + chessboard2 + 0.1.0 + + Jan Rosell + jan.rosell@upc.edu + + chessboard2.sdf + + Chessboard + + + + diff --git a/urdf/chessboard_cameras_cell.urdf.xacro b/urdf/chessboard_cameras_cell.urdf.xacro new file mode 100644 index 0000000..ccee81a --- /dev/null +++ b/urdf/chessboard_cameras_cell.urdf.xacro @@ -0,0 +1,13 @@ + + + + + + + + + + + + +