diff --git a/wrappers/ros/src/mynt_eye_ros_wrapper/launch/mynteye.launch b/wrappers/ros/src/mynt_eye_ros_wrapper/launch/mynteye.launch index 0c120bd..7966f32 100644 --- a/wrappers/ros/src/mynt_eye_ros_wrapper/launch/mynteye.launch +++ b/wrappers/ros/src/mynt_eye_ros_wrapper/launch/mynteye.launch @@ -33,6 +33,8 @@ + + @@ -233,6 +235,7 @@ + diff --git a/wrappers/ros/src/mynt_eye_ros_wrapper/mesh/S1030-0315.STL b/wrappers/ros/src/mynt_eye_ros_wrapper/mesh/S1030-0315.STL new file mode 100644 index 0000000..8807883 Binary files /dev/null and b/wrappers/ros/src/mynt_eye_ros_wrapper/mesh/S1030-0315.STL differ diff --git a/wrappers/ros/src/mynt_eye_ros_wrapper/rviz/mynteye.rviz b/wrappers/ros/src/mynt_eye_ros_wrapper/rviz/mynteye.rviz index 987b405..9fb045a 100644 --- a/wrappers/ros/src/mynt_eye_ros_wrapper/rviz/mynteye.rviz +++ b/wrappers/ros/src/mynt_eye_ros_wrapper/rviz/mynteye.rviz @@ -7,11 +7,11 @@ Panels: - /Global Options1 - /Status1 - /Images1 - - /Images1/Gray1 - /Images1/Rectified1 - /Disparity1 + - /Marker1 Splitter Ratio: 0.5 - Tree Height: 853 + Tree Height: 824 - Class: rviz/Selection Name: Selection - Class: rviz/Tool Properties @@ -30,7 +30,7 @@ Panels: Experimental: false Name: Time SyncMode: 0 - SyncSource: Left + SyncSource: Depth Visualization Manager: Class: "" Displays: @@ -187,6 +187,14 @@ Visualization Manager: Topic: /mynteye/imu/data_raw Unreliable: false Value: false + - Class: rviz/Marker + Enabled: true + Marker Topic: /mynteye/camera_mesh + Name: Marker + Namespaces: + "": true + Queue Size: 100 + Value: true Enabled: true Global Options: Background Color: 48; 48; 48 @@ -241,14 +249,14 @@ Window Geometry: collapsed: false Displays: collapsed: false - Height: 1056 + Height: 1026 Hide Left Dock: false Hide Right Dock: false Left: collapsed: false LeftRect: collapsed: false - QMainWindow State: 000000ff00000000fd00000004000000000000017e00000396fc020000000ffb0000001200530065006c0065006300740069006f006e00000001e10000009b0000006100fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000002800000396000000d700fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261fb00000008004c00650066007403000001bd000000860000024e00000190fb0000000a00520069006700680074030000040c000000860000025000000190fb00000010004c006500660074005200650063007402000001bd000002170000024e00000190fb00000012005200690067006800740052006500630074020000040c000002170000024f00000190fb0000000a0044006500700074006803000001bc000002170000024f00000190fb0000001200440069007300700061007200690074007902000001bd000002170000024e0000018ffb0000001a004400690073007000610072006900740079004e006f0072006d020000040c000002170000025100000190000000010000010f00000396fc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073010000002800000396000000ad00fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e100000197000000030000073f0000003efc0100000002fb0000000800540069006d006501000000000000073f0000030000fffffffb0000000800540069006d00650100000000000004500000000000000000000004a60000039600000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 + QMainWindow State: 000000ff00000000fd00000004000000000000026500000378fc020000000ffb0000001200530065006c0065006300740069006f006e00000001e10000009b0000006100fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000002800000378000000d600fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261fb00000008004c00650066007403000001bd000000860000024e00000190fb0000000a00520069006700680074030000047a000001d90000025000000190fb00000010004c006500660074005200650063007402000001bd000002170000024e00000190fb00000012005200690067006800740052006500630074020000040c000002170000024f00000190fb0000000a0044006500700074006803000002160000024c0000024f00000190fb0000001200440069007300700061007200690074007902000001bd000002170000024e0000018ffb0000001a004400690073007000610072006900740079004e006f0072006d020000040c000002170000025100000190000000010000010f00000378fc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073010000002800000378000000ac00fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e100000197000000030000073f0000003efc0100000002fb0000000800540069006d006501000000000000073f0000030000fffffffb0000000800540069006d00650100000000000004500000000000000000000003bf0000037800000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 Right: collapsed: false RightRect: diff --git a/wrappers/ros/src/mynt_eye_ros_wrapper/src/wrapper_nodelet.cc b/wrappers/ros/src/mynt_eye_ros_wrapper/src/wrapper_nodelet.cc index 4e2b66b..7558f29 100644 --- a/wrappers/ros/src/mynt_eye_ros_wrapper/src/wrapper_nodelet.cc +++ b/wrappers/ros/src/mynt_eye_ros_wrapper/src/wrapper_nodelet.cc @@ -21,6 +21,8 @@ #include #include #include +#include +#include #include #include @@ -346,6 +348,16 @@ class ROSWrapperNodelet : public nodelet::Nodelet { sensor_msgs::Temperature>(temperature_topic, 100); NODELET_INFO_STREAM("Advertized on topic " << temperature_topic); + pub_mesh_ = nh_.advertise("camera_mesh", 0 ); + // where to get the mesh from + std::string mesh_file; + if (private_nh_.getParam("mesh_file", mesh_file)) { + mesh_msg_.mesh_resource = "package://mynt_eye_ros_wrapper/mesh/"+mesh_file; + } else { + LOG(INFO) << "no mesh found for visualisation, set ros param mesh_file, if desired"; + mesh_msg_.mesh_resource = ""; + } + // stream toggles for (auto &&it = stream_names.begin(); it != stream_names.end(); ++it) { @@ -611,6 +623,8 @@ class ROSWrapperNodelet : public nodelet::Nodelet { } void publishTopics() { + publishMesh(); + if ((camera_publishers_[Stream::LEFT].getNumSubscribers() > 0 || mono_publishers_[Stream::LEFT].getNumSubscribers() > 0) && !is_published_[Stream::LEFT]) { @@ -1144,6 +1158,49 @@ class ROSWrapperNodelet : public nodelet::Nodelet { return res; } + void publishMesh() { + // also do the mesh + /*if (parameters_.publishing.trackedBodyFrame == FrameName::S) { + mesh_msg_.child_frame_id = "sensor"; + } else if (parameters_.publishing.trackedBodyFrame == FrameName::B) { + mesh_msg_.child_frame_id = "body"; + } else { + mesh_msg_.child_frame_id = "body"; + }*/ + mesh_msg_.header.frame_id = base_frame_id_; + mesh_msg_.header.stamp = ros::Time::now(); + mesh_msg_.type = visualization_msgs::Marker::MESH_RESOURCE; + // if ((ros::Time::now() - _t).toSec() > 10.0) + // mesh_msg_.header.stamp = ros::Time::now(); + + // fill orientation + mesh_msg_.pose.orientation.x = 0; + mesh_msg_.pose.orientation.y = 0; + mesh_msg_.pose.orientation.z = 0; + mesh_msg_.pose.orientation.w = 0; + + // fill position + mesh_msg_.pose.position.x = 0; + mesh_msg_.pose.position.y = 0; + mesh_msg_.pose.position.z = -0.3; + + // scale -- needed + mesh_msg_.scale.x = 0.01; + mesh_msg_.scale.y = 0.01; + mesh_msg_.scale.z = 0.01; + + mesh_msg_.action = visualization_msgs::Marker::ADD; + mesh_msg_.color.a = 1.0; // Don't forget to set the alpha! + mesh_msg_.color.r = 1.0; + mesh_msg_.color.g = 1.0; + mesh_msg_.color.b = 1.0; + + // embedded material / colour + // mesh_msg_.mesh_use_embedded_materials = true; + if (!mesh_msg_.mesh_resource.empty()) + pub_mesh_.publish(mesh_msg_); // publish stamped mesh + } + void computeRectTransforms() { ROS_ASSERT(api_); @@ -1246,7 +1303,7 @@ class ROSWrapperNodelet : public nodelet::Nodelet { } } - camera_info->distortion_model = "plumb_bob"; + camera_info->distortion_model = sensor_msgs::distortion_models::PLUMB_BOB; // plumb_bob // D of plumb_bob: (k1, k2, t1, t2, k3) for (int i = 0; i < 5; i++) { @@ -1257,7 +1314,7 @@ class ROSWrapperNodelet : public nodelet::Nodelet { in -> ResizeIntrinsics(); camera_info->width = in_base->width; camera_info->height = in_base->height; - camera_info->distortion_model = "kannala_brandt"; + camera_info->distortion_model = sensor_msgs::distortion_models::EQUIDISTANT; // kannala_brandt // coeffs: k2,k3,k4,k5,mu,mv,u0,v0 camera_info->D.push_back(in->coeffs[0]); // k2 @@ -1478,6 +1535,9 @@ class ROSWrapperNodelet : public nodelet::Nodelet { ros::Publisher pub_imu_; ros::Publisher pub_temperature_; + ros::Publisher pub_mesh_; // < The publisher for camera mesh. + visualization_msgs::Marker mesh_msg_; // < Mesh message. + tf2_ros::StaticTransformBroadcaster static_tf_broadcaster_; ros::ServiceServer get_info_service_;