-
Notifications
You must be signed in to change notification settings - Fork 87
Segmentation Sensor #133
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Segmentation Sensor #133
Changes from 6 commits
Commits
Show all changes
29 commits
Select commit
Hold shift + click to select a range
1c5eec6
Segmentation Camera Sensor
AmrElsersy 6bde206
Image Events
AmrElsersy 4ea873a
Add Testing
AmrElsersy d245789
style
AmrElsersy 0848683
Publish both colored map & labels map
AmrElsersy c851f1e
Style + Add complete overlapping in integration test
AmrElsersy 6589a82
Style + save both images + add background testing
AmrElsersy 4ac74b3
Merge branch 'main' into Segmentation
adlarkin 8a77116
style
AmrElsersy ffa767e
Merge branch 'Segmentation' of https://github.com/AmrElsersy/ign-sens…
AmrElsersy 1059bdc
Merge branch 'main' into Segmentation
adlarkin 0311790
style
AmrElsersy e2c5b52
Add Tutorial
AmrElsersy ed5c136
Merge branch 'main' of https://github.com/ignitionrobotics/ign-sensor…
AmrElsersy e9741dc
rename segmentation test
AmrElsersy a9624b7
Use SDF::Camera instead of SDF::Element
AmrElsersy 4b543d3
Save Sample(rgb image & labels & colored maps)
AmrElsersy 40d86fe
add debug info for published data topics
adlarkin d08e138
Update Segmentation Tutorial with Dataset Generation and Python Visua…
AmrElsersy 7e2fc2b
Merge branch 'Segmentation' of https://github.com/AmrElsersy/ign-sens…
AmrElsersy 3f8b0c8
Modify Saving counter
AmrElsersy be756cf
DirIter instead of filesystem
AmrElsersy 7f8f045
style according to rendering PR
AmrElsersy d655cb3
Merge branch 'main' into Segmentation
chapulina 32c4f6a
Merge branch 'main' into Segmentation
adlarkin 686757a
update tutorial
adlarkin ba6d2ce
codecheck and windows warnings
adlarkin 42a3e5b
final edits
adlarkin 8642b60
remove number prefix from tutorial files. Fix RGB indexing
adlarkin File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,133 @@ | ||
| /* | ||
| * Copyright (C) 2021 Open Source Robotics Foundation | ||
| * | ||
| * Licensed under the Apache License, Version 2.0 (the "License"); | ||
| * you may not use this file except in compliance with the License. | ||
| * You may obtain a copy of the License at | ||
| * | ||
| * http://www.apache.org/licenses/LICENSE-2.0 | ||
| * | ||
| * Unless required by applicable law or agreed to in writing, software | ||
| * distributed under the License is distributed on an "AS IS" BASIS, | ||
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
| * See the License for the specific language governing permissions and | ||
| * limitations under the License. | ||
| * | ||
| */ | ||
|
|
||
| #ifndef IGNITION_SENSORS_SEGMENTATIONCAMERASENSOR_HH_ | ||
| #define IGNITION_SENSORS_SEGMENTATIONCAMERASENSOR_HH_ | ||
|
|
||
| #include <string> | ||
| #include <memory> | ||
|
|
||
| #include <ignition/common/Event.hh> | ||
| #include <ignition/common/PluginMacros.hh> | ||
| #include <ignition/common/SuppressWarning.hh> | ||
| #include <ignition/common/Time.hh> | ||
| #include "ignition/sensors/CameraSensor.hh" | ||
AmrElsersy marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| #include "ignition/sensors/Export.hh" | ||
| #include "ignition/transport/Node.hh" | ||
| #include "ignition/transport/Publisher.hh" | ||
| #include "ignition/sensors/Sensor.hh" | ||
AmrElsersy marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| #include "ignition/msgs.hh" | ||
| #include <sdf/sdf.hh> | ||
|
|
||
| namespace ignition | ||
| { | ||
| namespace sensors | ||
| { | ||
| // Inline bracket to help doxygen filtering. | ||
| inline namespace IGNITION_SENSORS_VERSION_NAMESPACE { | ||
| // forward declarations | ||
| class SegmentationCameraSensorPrivate; | ||
|
|
||
| /// \brief Segmentation camera sensor class. | ||
| /// | ||
| /// This class creates Segmentation image from an ignition rendering scene. | ||
| /// The scene must be created in advance and given to Manager::Init(). | ||
| /// It offers both an ignition-transport interface and a direct C++ API | ||
| /// to access the image data. The API works by setting a callback to be | ||
| /// called with image data. | ||
| class SegmentationCameraSensor : public CameraSensor | ||
AmrElsersy marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| { | ||
| /// \brief constructor | ||
| public: SegmentationCameraSensor(); | ||
|
|
||
| /// \brief destructor | ||
| public: virtual ~SegmentationCameraSensor(); | ||
|
|
||
| /// \brief Load the sensor based on data from an sdf::Sensor object. | ||
| /// \param[in] _sdf SDF Sensor parameters. | ||
| /// \return true if loading was successful | ||
| public: virtual bool Load(const sdf::Sensor &_sdf) override; | ||
|
|
||
| /// \brief Load the sensor with SDF parameters. | ||
| /// \param[in] _sdf SDF Sensor parameters. | ||
| /// \return true if loading was successful | ||
| public: virtual bool Load(sdf::ElementPtr _sdf) override; | ||
|
|
||
| /// \brief Initialize values in the sensor | ||
| /// \return True on success | ||
| public: virtual bool Init() override; | ||
|
|
||
| /// \brief Force the sensor to generate data | ||
| /// \param[in] _now The current time | ||
| /// \return true if the update was successful | ||
| public: virtual bool Update( | ||
| const std::chrono::steady_clock::duration &_now) override; | ||
|
|
||
| /// \brief Get the rendering segmentation camera | ||
| /// \return Segmentation camera pointer | ||
| public: virtual rendering::SegmentationCameraPtr SegmentationCamera(); | ||
AmrElsersy marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| /// \brief Segmentation data callback used to get the data from the sensor | ||
| /// \param[in] _data pointer to the data from the sensor | ||
| /// \param[in] _width width of the segmentation image | ||
| /// \param[in] _height height of the segmentation image | ||
| /// \param[in] _channels num of channels | ||
| /// \param[in] _format string with the format | ||
| public: void OnNewSegmentationFrame(const uint8_t * _data, | ||
| unsigned int _width, unsigned int _height, unsigned int _channels, | ||
| const std::string &_format); | ||
|
|
||
| /// \brief Set a callback to be called when image frame data is | ||
| /// generated. | ||
| /// \param[in] _callback This callback will be called every time the | ||
| /// camera produces image data. The Update function will be blocked | ||
| /// while the callbacks are executed. | ||
| /// \remark Do not block inside of the callback. | ||
| /// \return A connection pointer that must remain in scope. When the | ||
| /// connection pointer falls out of scope, the connection is broken. | ||
| public: ignition::common::ConnectionPtr ConnectImageCallback( | ||
| std::function< | ||
| void(const ignition::msgs::Image &)> _callback); | ||
|
|
||
| /// \brief Set the rendering scene. | ||
| /// \param[in] _scene Pointer to the scene | ||
| public: virtual void SetScene( | ||
| ignition::rendering::ScenePtr _scene) override; | ||
|
|
||
| /// \brief Get image width. | ||
| /// \return width of the image | ||
| public: virtual unsigned int ImageWidth() const override; | ||
|
|
||
| /// \brief Get image height. | ||
| /// \return height of the image | ||
| public: virtual unsigned int ImageHeight() const override; | ||
|
|
||
| /// \brief Create a camera in a scene | ||
| /// \return True on success. | ||
| private: bool CreateCamera(); | ||
|
|
||
| IGN_COMMON_WARN_IGNORE__DLL_INTERFACE_MISSING | ||
| /// \brief Data pointer for private data | ||
| /// \internal | ||
| private: std::unique_ptr<SegmentationCameraSensorPrivate> dataPtr; | ||
| IGN_COMMON_WARN_RESUME__DLL_INTERFACE_MISSING | ||
| }; | ||
| } | ||
| } | ||
| } | ||
|
|
||
| #endif | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.